Ratkaiseva vaihe datatieteen työnkulussa on mallin tarkkuuden mittaaminen sopivalla mittarilla. Tässä opetusohjelmassa opimme kaksi menetelmää lähdenäytteen ennustetun luokan tarkkuuden laskemiseen: manuaalisesti ja Pythonin scikit-learn-kirjaston avulla.
Tässä on yhteenveto aiheista, joita olemme keskustelleet tässä opetusohjelmassa.
- Accuracy_score lasketaan manuaalisesti
- Accuracy_score lasketaan scikit learning -ohjelman avulla
- Scikit oppia accuracy_score-esimerkkejä
- Kuinka scikit learning accuracy_score toimii?
Mikä on tarkkuus?
Yksi laajalti käytetyistä luokittelumallien suorituskyvyn laskemista mittareista on tarkkuus. Niiden tarrojen prosenttiosuus, jotka mallimme ennusti onnistuneesti, esitetään tarkkuudella. Jos mallimme esimerkiksi luokiteltaisi tarkasti 80 100:sta tarrasta, sen tarkkuus olisi 0,80.
Funktion luominen tarkkuuspisteiden laskemiseksi
Luodaan Python-funktio laskemaan ennustettujen arvojen tarkkuuspisteet, koska meillä on jo näytteen todelliset tunnisteet ja tarrat ennustivat mallin.
Koodi
# 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
Yllä oleva funktio hyväksyy luokitusmallin ennustettujen merkintöjen ja näytteen todellisten nimikkeiden arvot argumentteinaan ja laskee tarkkuuspisteet. Tässä iteroimme jokaisen todellisen ja ennustetun otsikon parin läpi rinnakkain tallentaaksemme oikeiden ennusteiden määrän. Sitten jaamme tämän luvun tarrojen kokonaismäärällä tarkkuuspisteiden laskemiseksi.
Käytämme funktiota nyt näytteeseen.
Koodi
javan objekti
# 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)
Lähtö:
0.9777777777777777
Saamme Support Vector Classification -mallin ennusteiden tarkkuuspisteeksi 0,978.
Huomaa, että numpy-taulukoiden käyttäminen tasa-arvolaskennan vektorisoimiseen voi tehdä yllä mainitusta koodista tehokkaampaa.
Tarkkuus käyttämällä Sklearnin accuracy_score()
Sklearn.metrics-menetelmän accuracy_score()-menetelmä hyväksyy näytteen todelliset ja mallin ennustamat tarrat parametreiksi ja laskee tarkkuuspisteet kelluvana arvona, jota voidaan myös käyttää tarkkuuspisteiden saamiseksi Pythonissa. Sklearn.metrics-luokassa on useita hyödyllisiä toimintoja tyypillisten arviointimittojen laskemiseen. Käytämme sklearnin accuracy_score()-funktiota tukivektoriluokitusmallin tarkkuuspisteiden laskemiseen käyttämällä samaa mallitietoaineistoa kuin aiemmin.
java while-silmukka
sklearn.metrics.accuracy_score(y_true, y_pred, *, normalize=True, sample_weight=Ei mitään)
Käytämme tätä luokituksen tarkkuuspisteiden laskemiseen. Tämä menetelmä laskee alaryhmän tarkkuuden usean etiketin luokituksessa; tietojoukon ennustetun otsikoiden osajoukon on vastattava tarkasti y_true:n todellista tunnisteiden tietojoukkoa.
Parametrit
Palauttaa
Esimerkki arvosta Accuracy_score
Koodi
# 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)
Lähtö:
0.9777777777777777
Kun käytät binääritunnisteita useilla nimiöillä:
Koodi
# 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)))
Lähtö:
0.5
Kuinka scikit learning accuracy_score toimii
Sklearn.metrics-paketin accuracy_score-menetelmä määrittää osajoukon tarkkuuden usean tunnisteen luokituksessa.
javascript-merkkijono korvaa
Edellytyksenä on, että mallin annetulle näytteelle ennustamat etiketit ja näytteen todelliset etiketit vastaavat tarkasti.
Tarkkuus kuvaa mallin käyttäytymistä kaikissa luokissa. Jos kaikki luokat ovat verrattain merkittäviä, se on hyödyllistä.
Tarkkojen ennusteiden määrän suhdetta näytteiden kokonaismäärään tai ennusteiden kokonaismäärään käytetään mallin tarkkuuden määrittämiseen.
Koodi:
- Alla oleva koodi tuo kaksi kirjastoa. Tuomme sklearn.metrics-aineistoa mallien tarkkuuden ja numpykirjastojen ennustamiseen.
- Otoksen todelliset arvot ovat y_true = ['1', '1', '0', '0', '1', '1', '0'].
- ['1', '1', '0', '0', '1', '1', '0'] nämä ovat mallin ennustetut arvot näytetiedoille.
- Tarkkuus = ( matriisi[0][0] + matriisi[-1][-1] ) / numpy.sum(matriisi) käytetään luokittelumallin tarkkuuspisteiden saamiseksi.
- Tarkkuuspisteet näytetään tulosteena käyttämällä tulostusta (tarkkuus).
Koodi
# 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)
Lähtö:
Confusion Matrix: [[2 2] [3 0]] 0.2857142857142857
Joten tässä opetusohjelmassa opimme scikit-learn accuracy_score Pythonissa ja tutkimme joitain toteutusesimerkkejä.