Svarbus duomenų mokslo darbo eigos etapas yra mūsų modelio tikslumo matavimas naudojant atitinkamą metriką. Šioje pamokoje išmoksime du būdus, kaip apskaičiuoti šaltinio pavyzdžio numatomą klasės tikslumą: rankiniu būdu ir naudojant Python scikit-learn biblioteką.
Čia yra temų, kurias aptarėme šioje mokymo programoje, santrauka.
- Neautomatinis tikslumo_balo skaičiavimas
- Accuracy_score apskaičiavimas naudojant scikit learning
- Scikit išmokti accuracy_score pavyzdžių
- Kaip veikia scikit learning accuracy_score?
Kas yra Tikslumas?
Viena iš plačiai naudojamų metrikų, skaičiuojančių klasifikavimo modelių našumą, yra tikslumas. Etikečių, kurias mūsų modelis sėkmingai numatė, procentas rodomas tikslumu. Pavyzdžiui, jei mūsų modelis tiksliai klasifikuotų 80 iš 100 etikečių, jo tikslumas būtų 0,80.
Funkcijos kūrimas tikslumo balui apskaičiuoti
Sukurkime Python funkciją, kad apskaičiuotų numatomų verčių tikslumo balą, atsižvelgiant į tai, kad jau turime tikrąsias mėginio etiketes ir etiketės numatė modelį.
Kodas
# 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
Aukščiau pateikta funkcija priima klasifikavimo modelio numatytų etikečių ir tikrosios imties etikečių reikšmes kaip savo argumentus ir apskaičiuoja tikslumo balą. Čia lygiagrečiai kartojame kiekvieną tikrųjų ir numatomų etikečių porą, kad įrašytume teisingų prognozių skaičių. Tada padalijame šį skaičių iš bendro etikečių skaičiaus, kad apskaičiuotume tikslumo balą.
Dabar taikysime funkciją pavyzdžiui.
Kodas
# 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)
Išvestis:
0.9777777777777777
Gauname 0,978 kaip paramos vektorių klasifikavimo modelio prognozių tikslumo balą.
eilutę palyginkite java
Atminkite, kad lygybės skaičiavimo vektorizavimui naudojant numpy masyvus, aukščiau minėtas kodas gali būti efektyvesnis.
Tikslumas naudojant Sklearn accuracy_score()
Sklearn.metrics metodas accuracy_score() priima tikrąsias mėginio etiketes ir modelio numatytus etikečius kaip savo parametrus ir apskaičiuoja tikslumo balą kaip plūduriuojančią reikšmę, kurią taip pat galima naudoti norint gauti tikslumo balą Python. Yra keletas naudingų funkcijų, skirtų apskaičiuoti tipines sklearn.metrics klasės vertinimo metrikas. Naudokime sklearn accuracy_score() funkciją, kad apskaičiuotume paramos vektorių klasifikavimo modelio tikslumo balą, naudodami tą patį pavyzdinį duomenų rinkinį, kaip ir anksčiau.
sklearn.metrics.accuracy_score(y_true, y_pred, *, normalize=True, sample_weight=Nėra)
Mes naudojame tai klasifikacijos tikslumo balui apskaičiuoti. Šis metodas apskaičiuoja pogrupių tikslumą kelių etikečių klasifikacijoje; duomenų rinkinio numatomas etikečių poaibis turi tiksliai atitikti tikrąjį etikečių duomenų rinkinį y_true.
Parametrai
Grąžina
Tikslumo_balo pavyzdys
Kodas
# 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)
Išvestis:
0.9777777777777777
Kai naudojate dvejetainius etikečių indikatorius su keliomis etiketėmis:
Kodas
# 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)))
Išvestis:
0.5
Kaip veikia scikit learning accuracy_score
Sklearn.metrics paketo metodas accuracy_score priskiria poaibių tikslumą kelių etikečių klasifikacijoje.
Būtina, kad etiketės, kurias modelis numatė tam pavyzdžiui, ir tikrosios mėginio etiketės tiksliai sutaptų.
Tikslumas apibūdina modelio elgesį visose klasėse. Jei visos klasės yra palyginti reikšmingos, tai naudinga.
Tikslių prognozių skaičiaus ir bendro mėginių skaičiaus arba bendro prognozių skaičiaus santykis naudojamas modelio tikslumui nustatyti.
Kodas:
- Toliau pateiktas kodas importuoja dvi bibliotekas. Importuojame sklearn.metriką, kad būtų galima numatyti modelio tikslumą ir bibliotekų skaičių.
- Tikrosios imties reikšmės yra y_true = ['1', '1', '0', '0', '1', '1', '0'].
- ['1', '1', '0', '0', '1', '1', '0'] tai modelio numatomos imties duomenų reikšmės.
- Tikslumas = ( matrica[0][0] + matrica[-1][-1] ) / numpy.sum(matrica) naudojamas klasifikavimo modelio tikslumo balui gauti.
- Tikslumo balas rodomas kaip išvestis naudojant spausdinimą (tikslumas).
Kodas
# 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)
Išvestis:
Confusion Matrix: [[2 2] [3 0]] 0.2857142857142857
Taigi, šioje pamokoje išmokome scikit-learn accuracy_score programoje Python ir išnagrinėjome kai kuriuos įgyvendinimo pavyzdžius.