logo

Accuracy_Score u Sklearnu

Ključna faza u tijeku rada znanosti o podacima je mjerenje točnosti našeg modela pomoću odgovarajuće metrike. U ovom vodiču naučit ćemo dvije metode za izračunavanje predviđene točnosti klase izvornog uzorka: ručno i korištenjem Pythonove knjižnice scikit-learn.

Ovdje je sažetak tema o kojima smo raspravljali u ovom vodiču.

  • Ručno izračunavanje accuracy_score
  • Izračunavanje accuracy_score pomoću scikit učenja
  • Scikit nauči primjere accuracy_score
  • Kako scikit uči accuracy_score radi?

Što je točnost?

Jedna od naširoko korištenih metrika koja izračunava izvedbu klasifikacijskih modela je točnost. Postotak oznaka koje je naš model uspješno predvidio predstavlja točnost. Na primjer, ako bi naš model točno klasificirao 80 od 100 oznaka, njegova bi točnost bila 0,80.

Stvaranje funkcije za izračunavanje ocjene točnosti

Kreirajmo Python funkciju za izračunavanje rezultata točnosti predviđenih vrijednosti, s obzirom na to da već imamo prave oznake uzorka i da su oznake predvidjele model.

Kodirati

 # 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 

Gornja funkcija prihvaća vrijednosti za predviđene oznake modela klasifikacije i prave oznake uzorka kao svoje argumente i izračunava ocjenu točnosti. Ovdje paralelno prolazimo kroz svaki par istinitih i predviđenih oznaka kako bismo zabilježili broj točnih predviđanja. Zatim taj broj dijelimo s ukupnim brojem oznaka kako bismo izračunali ocjenu točnosti.

Sada ćemo primijeniti funkciju na uzorku.

Kodirati

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

Izlaz:

instanca jave
 0.9777777777777777 

Dobivamo 0,978 kao ocjenu točnosti za predviđanja modela klasifikacije vektora podrške.

Imajte na umu da korištenje numpy nizova za vektorizaciju izračuna jednakosti može gore spomenuti kod učiniti učinkovitijim.

Točnost pomoću Sklearnove accuracy_score()

Metoda accuracy_score() sklearn.metrics prihvaća stvarne oznake uzorka i oznake predviđene modelom kao svoje parametre i izračunava ocjenu točnosti kao float vrijednost, koja se također može koristiti za dobivanje ocjene točnosti u Pythonu. Postoji nekoliko korisnih funkcija za izračunavanje tipične metrike procjene u klasi sklearn.metrics. Upotrijebimo sklearnovu funkciju accuracy_score() da izračunamo ocjenu točnosti modela klasifikacije vektora podrške koristeći isti uzorak skupa podataka kao i ranije.

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

Ovo koristimo za izračunavanje ocjene točnosti klasifikacije. Ova metoda izračunava točnost podgrupe u klasifikaciji s više oznaka; predviđeni podskup oznaka skupa podataka mora se točno podudarati sa stvarnim skupom podataka oznaka u y_true.

Parametri

    y_true (nalik nizu 1d ili niz koji označava oznaku / rijetku matricu):Ovo su prave oznake za dati uzorak.y_pred (nalik 1d nizu ili niz koji označava oznaku / rijetku matricu):Predviđene oznake koje je model klasifikacije vratio.normalizirati (bool, default = True):Daje broj uspješno klasificiranih predviđenih uzoraka ako je odgovor False. Vraća udio točno klasificiranih predviđenih uzoraka ako je True.sample_weight (oblik u obliku polja (n,), zadano = Ništa):Težina uzoraka.

Povratak

    rezultat (float):Daje omjer uspješno klasificiranih uzoraka (float) ako je normalize == True; inače vraća broj uspješno klasificiranih predviđenih uzoraka (int). 1 je 100% točnost za normaliziranje == Točno i broj uzoraka danih uz normalizaciju == Netočno.

Primjer Accuracy_score

Kodirati

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

Izlaz:

 0.9777777777777777 

Kada koristite indikatore binarnih oznaka s više oznaka:

Kodirati

hashset vs hashmap
 # 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))) 

Izlaz:

 0.5 

Kako funkcionira scikit learn accuracy_score

Metoda accuracy_score paketa sklearn.metrics dodjeljuje točnost podskupa u klasifikaciji s više oznaka.

Potrebno je da se oznake koje je model predvidio za dati uzorak i prave oznake uzorka točno podudaraju.

Točnost opisuje ponašanje modela u svim klasama. Ako su sve klase usporedivo značajne, to je od pomoći.

Omjer broja točnih predviđanja i ukupnog broja uzoraka ili ukupnog broja predviđanja koristi se za određivanje točnosti modela.

Kodirati:

  1. Kod u nastavku uvozi dvije biblioteke. Uvozimo sklearn.metrics za predviđanje točnosti modela i numpy knjižnice.
  2. Prave vrijednosti uzorka su y_true = ['1', '1', '0', '0', '1', '1', '0'].
  3. ['1', '1', '0', '0', '1', '1', '0'] ovo su predviđene vrijednosti modela za uzorke podataka.
  4. Točnost = ( matrica[0][0] + matrica[-1][-1] ) / numpy.sum(matrica) koristi se za dobivanje rezultata točnosti modela klasifikacije.
  5. Rezultat točnosti prikazuje se kao izlaz pomoću print(accuracy).

Kodirati

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

Izlaz:

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

Tako smo u ovom vodiču naučili scikit-learn accuracy_score u Pythonu i ispitali neke primjere implementacije.