logo

Accuracy_Score v Sklearn

Ključna faza v delovnem toku podatkovne znanosti je merjenje natančnosti našega modela z uporabo ustrezne metrike. V tej vadnici se bomo naučili dveh metod za izračun predvidene natančnosti razreda izvornega vzorca: ročno in z uporabo Pythonove knjižnice scikit-learn.

Tukaj je povzetek tem, o katerih smo razpravljali v tej vadnici.

  • Ročno izračunavanje accuracy_score
  • Izračun accuracy_score z uporabo scikit learn
  • Scikit se nauči primerov accuracy_score
  • Kako deluje scikit learn accuracy_score?

Kaj je natančnost?

Ena od pogosto uporabljenih metrik, ki izračunavajo učinkovitost klasifikacijskih modelov, je natančnost. Odstotek oznak, ki jih je naš model uspešno predvidel, je predstavljen z natančnostjo. Na primer, če bi naš model natančno razvrstil 80 od 100 oznak, bi bila njegova natančnost 0,80.

Ustvarjanje funkcije za izračun ocene natančnosti

Ustvarimo funkcijo Python za izračun ocene točnosti predvidenih vrednosti, glede na to, da že imamo prave oznake vzorca in da oznake napovedujejo model.

Koda

0,0625 kot ulomek
 # 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 

Zgornja funkcija sprejme vrednosti za predvidene oznake klasifikacijskega modela in prave oznake vzorca kot svoje argumente in izračuna oceno točnosti. Tu vzporedno ponavljamo vsak par resničnih in predvidenih oznak, da zabeležimo število pravilnih napovedi. To število nato delimo s skupnim številom oznak, da izračunamo oceno točnosti.

Funkcijo bomo zdaj uporabili na vzorcu.

Koda

 # 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) 

Izhod:

 0.9777777777777777 

Dobimo 0,978 kot oceno točnosti za napovedi modela klasifikacije podpornih vektorjev.

Upoštevajte, da lahko z uporabo nizov numpy za vektorizacijo izračuna enakosti zgoraj omenjena koda postane učinkovitejša.

Natančnost z uporabo Sklearnovega accuracy_score()

Metoda accuracy_score() sklearn.metrics sprejme prave oznake vzorca in oznake, ki jih predvideva model, kot svoje parametre in izračuna oceno točnosti kot plavajočo vrednost, ki se prav tako lahko uporabi za pridobitev ocene točnosti v Pythonu. V razredu sklearn.metrics je več uporabnih funkcij za izračun tipičnih metrik vrednotenja. Uporabimo sklearnovo funkcijo accuracy_score() za izračun ocene točnosti modela klasifikacije podpornih vektorjev z uporabo istega vzorčnega nabora podatkov kot prej.

java zemljevidi

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

To uporabljamo za izračun ocene točnosti klasifikacije. Ta metoda izračuna natančnost podskupin pri klasifikaciji z več oznakami; predvidena podmnožica oznak nabora podatkov se mora natančno ujemati z dejanskim naborom oznak v y_true.

Parametri

    y_true (1d podoben nizu ali niz, ki označuje oznako / redko matriko):To so prave oznake za dani vzorec.y_pred (1d podoben nizu ali niz, ki označuje oznako / redko matriko):Predvidene oznake, ki jih je vrnil klasifikacijski model.normaliziraj (bool, privzeto = True):Poda število uspešno razvrščenih predvidenih vzorcev, če je odgovor False. Vrne delež pravilno razvrščenih predvidenih vzorcev, če je True.teža_vzorca (matrična oblika (n,), privzeto = Brez):Uteži vzorcev.

Vračila

    rezultat (float):Poda razmerje uspešno razvrščenih vzorcev (float), če normalize == True; sicer vrne število uspešno razvrščenih predvidenih vzorcev (int). 1 je 100-odstotna natančnost za normalize == True in število vzorcev, zagotovljenih z normalize == False.

Primer Accuracy_score

Koda

 # 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) 

Izhod:

 0.9777777777777777 

Pri uporabi indikatorjev binarnih oznak z več oznakami:

Koda

 # 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))) 

Izhod:

 0.5 

Kako deluje scikit learn accuracy_score

Metoda accuracy_score paketa sklearn.metrics dodeli natančnost podnabora v klasifikaciji z več oznakami.

pretvoriti niz v celo število

Zahteva se, da se oznake, ki jih je model predvidel za dani vzorec, in prave oznake vzorca natančno ujemajo.

Natančnost opisuje obnašanje modela v vseh razredih. Če so vsi razredi primerljivo pomembni, je koristno.

Razmerje med številom natančnih napovedi in skupnim številom vzorcev ali skupnim številom napovedi se uporablja za določitev točnosti modela.

Koda:

  1. Spodnja koda uvozi dve knjižnici. Uvažamo sklearn.metrics za napovedovanje točnosti modela in knjižnice numpy.
  2. Prave vrednosti vzorca so y_true = ['1', '1', '0', '0', '1', '1', '0'].
  3. ['1', '1', '0', '0', '1', '1', '0'] to so predvidene vrednosti modela za vzorčne podatke.
  4. Natančnost = (matrika[0][0] + matrika[-1][-1] ) / numpy.sum(matrika) se uporablja za pridobitev ocene točnosti klasifikacijskega modela.
  5. Ocena točnosti je prikazana kot rezultat z uporabo print(accuracy).

Koda

 # 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) 

Izhod:

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

Torej, v tej vadnici smo se naučili scikit-learn accuracy_score v Pythonu in preučili nekaj primerov implementacije.