logo

Accuracy_Score в Sklearn

Решаващ етап от работния поток на науката за данни е да се измери точността на нашия модел с помощта на подходящия показател. В този урок ще научим два метода за изчисляване на прогнозираната точност на класа на изходния пример: ръчно и с помощта на библиотеката scikit-learn на Python.

Ето обобщение на темите, които сме обсъждали в този урок.

  • Ръчно изчисляване на accuracy_score
  • Изчисляване на accuracy_score с помощта на scikit learn
  • Scikit научи примерите на accuracy_score
  • Как работи scikit learn accuracy_score?

Какво е точност?

Една от широко използваните метрики, която изчислява ефективността на класификационните модели, е точността. Процентът на етикетите, които нашият модел успешно прогнозира, е представен с точност. Например, ако нашият модел класифицира точно 80 от 100 етикета, неговата точност ще бъде 0,80.

Създаване на функция за изчисляване на резултата за точност

Нека създадем функция на Python за изчисляване на резултата за точност на прогнозираните стойности, като се има предвид, че вече имаме истинските етикети на извадката и етикетите предсказаха модела.

Код

структури от данни в java
 # Python program to define a function to compute accuracy score of model's predicted class # Defining a function which takes true values of the sample and values predicted by the model def compute_accuracy(Y_true, Y_pred): correctly_predicted = 0 # iterating over every label and checking it with the true sample for true_label, predicted in zip(Y_true, Y_pred): if true_label == predicted: correctly_predicted += 1 # computing the accuracy score accuracy_score = correctly_predicted / len(Y_true) return accuracy_score 

Горната функция приема стойности за прогнозираните етикети на класификационния модел и истинските етикети на извадката като свои аргументи и изчислява резултата за точност. Тук преминаваме паралелно през всяка двойка истински и прогнозирани етикети, за да запишем броя на правилните прогнози. След това разделяме това число на общия брой етикети, за да изчислим резултата за точност.

Сега ще приложим функцията върху проба.

Код

 # Python program to compute accuracy score using the function compute_accuracy # Importing the required libraries import numpy as np from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.datasets import load_iris # Loading the dataset X, Y = load_iris(return_X_y = True) # Splitting the dataset in training and test data X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.3, random_state = 0) # Training the model using the Support Vector Classification class of sklearn svc = SVC() svc.fit(X_train, Y_train) # Computing the accuracy score of the model Y_pred = svc.predict(X_test) score = compute_accuracy(Y_test, Y_pred) print(score) 

Изход:

 0.9777777777777777 

Получаваме 0,978 като резултат за точност за прогнозите на модела за класификация на опорния вектор.

Имайте предвид, че използването на масиви numpy за векторизиране на изчислението на равенството може да направи кода, споменат по-горе, по-ефективен.

Точност с помощта на accuracy_score() на Sklearn

Методът accuracy_score() на sklearn.metrics приема истинските етикети на извадката и етикетите, предвидени от модела, като негови параметри и изчислява резултата за точност като плаваща стойност, която също може да се използва за получаване на резултата за точност в Python. Има няколко полезни функции за изчисляване на типични показатели за оценка в класа sklearn.metrics. Нека използваме функцията accuracy_score() на sklearn, за да изчислим резултата за точност на модела за класификация на поддържащи вектори, използвайки същия примерен набор от данни, както по-рано.

sklearn.metrics.accuracy_score(y_true, y_pred, *, normalize=True, sample_weight=None)

Използваме това за изчисляване на оценката за точност на класификацията. Този метод изчислява точността на подгрупата при класификация с множество етикети; предвиденото подмножество от етикети на набор от данни трябва да съвпада точно с действителния набор от етикети в y_true.

Параметри

    y_true (подобно на 1d масив или масив, указващ етикет/разредена матрица):Това са истинските етикети за дадена проба.y_pred (подобен на 1d масив или масив, указващ етикет/разредена матрица):Предвидени етикети, които даден класификационен модел е върнал.нормализиране (bool, по подразбиране = True):Той дава броя на успешно класифицираните прогнозирани проби, ако отговорът е невярно. Връща дела на правилно класифицираните прогнозирани извадки, ако е True.sample_weight (подобна на масив форма (n,), по подразбиране = Няма):Тегла на пробите.

Се завръща

    резултат (поплавък):Той дава съотношението на успешно класифицираните проби (float), ако normalize == True; в противен случай връща броя на успешно класифицираните прогнозирани проби (int). 1 е 100% точност за normalize == True и броя на пробите, предоставени с normalize == False.

Пример за Accuracy_score

Код

 # Python program to compute accuracy score using the function accuracy_score # Importing the required libraries import numpy as np from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score from sklearn.svm import SVC from sklearn.datasets import load_iris # Loading the dataset X, Y = load_iris(return_X_y = True) # Splitting the dataset in training and test data X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.3, random_state = 0) # Training the model using the Support Vector Classification class of sklearn svc = SVC() svc.fit(X_train, Y_train) # Computing the accuracy_score of the model Y_pred = svc.predict(X_test) score = accuracy_score(Y_test, Y_pred) print(score) 

Изход:

 0.9777777777777777 

Когато използвате индикатори за двоични етикети с множество етикети:

Код

 # Python program to show how to calculate accuracy score for multi-label data import numpy as np accuracy_score(np.array([[1, 1], [2, 1]]), np.ones((2, 2))) 

Изход:

 0.5 

Как работи scikit learn accuracy_score

Методът accuracy_score на пакета sklearn.metrics присвоява точност на подмножество в класификация с множество етикети.

Изисква се етикетите, предвидени от модела за дадения образец, и истинските етикети на образеца да съвпадат точно.

колко голям е монитора ми

Точността описва поведението на модела във всички класове. Ако всички класове са сравнително значими, това е полезно.

Съотношението на броя на точните прогнози към общия брой проби или общия брой прогнози се използва за определяне на точността на модела.

Код:

  1. Кодът по-долу импортира две библиотеки. Ние импортираме sklearn.metrics за прогнозиране на точността на модела и библиотеки numpy.
  2. Истинските стойности на извадката са y_true = ['1', '1', '0', '0', '1', '1', '0'].
  3. ['1', '1', '0', '0', '1', '1', '0'] това са предвидените стойности на модела за примерните данни.
  4. Точност = ( matrix[0][0] + matrix[-1][-1] ) / numpy.sum(matrix) се използва за получаване на резултата за точност на класификационния модел.
  5. Резултатът за точност се показва като резултат с помощта на print(accuracy).

Код

 # Pythpn program to show how accuracy_score works # import libraries import numpy as np import sklearn.metrics # Creating a true and predicted sample Y_true = ['1', '1', '0', '0', '1', '1', '0'] Y_pred = ['1', '0', '1', '1', '0', '1', '1'] # finding a confusion matrix matrix = sklearn.metrics.confusion_matrix(Y_true, Y_pred) matrix = np.flip(matrix) print('Confusion Matrix: 
', matrix) accuracy = (matrix[0][0] + matrix[-1][-1]) / np.sum(matrix) print(accuracy) 

Изход:

 Confusion Matrix: [[2 2] [3 0]] 0.2857142857142857 

И така, в този урок научихме scikit-learn accuracy_score в Python и разгледахме някои примери за внедряване.