logo

Accuracy_Score ve Sklearnu

Klíčovou fází pracovního postupu datové vědy je měření přesnosti našeho modelu pomocí vhodné metriky. V tomto tutoriálu se naučíme dvě metody pro výpočet předpokládané přesnosti třídy zdrojového vzorku: ručně a pomocí knihovny scikit-learn Pythonu.

příklad formátu json

Zde je přehled témat, která jsme probrali v tomto tutoriálu.

  • Ruční výpočet přesnosti_skóre
  • Výpočet přesnosti_skóre pomocí scikit learn
  • Scikit se naučí příklady přesnosti_skóre
  • Jak funguje scikit learning přesnost_skóre?

Co je přesnost?

Jednou z široce používaných metrik, které počítají výkon klasifikačních modelů, je přesnost. Procento značek, které náš model úspěšně předpověděl, představuje přesnost. Pokud by například náš model přesně klasifikoval 80 ze 100 štítků, jeho přesnost by byla 0,80.

Vytvoření funkce pro výpočet skóre přesnosti

Vytvořme funkci Pythonu pro výpočet skóre přesnosti předpokládaných hodnot, za předpokladu, že již máme skutečné štítky vzorku a štítky předpověděly model.

Kód

 # 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 

Výše uvedená funkce přijímá hodnoty pro předpokládané popisky klasifikačního modelu a skutečné popisky vzorku jako své argumenty a vypočítává skóre přesnosti. Zde iterujeme každou dvojici pravdivých a predikovaných štítků paralelně, abychom zaznamenali počet správných předpovědí. Toto číslo pak vydělíme celkovým počtem štítků, abychom vypočítali skóre přesnosti.

Funkci nyní aplikujeme na ukázku.

Kód

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

Výstup:

 0.9777777777777777 

Dostaneme 0,978 jako skóre přesnosti pro předpovědi modelu klasifikace podpůrných vektorů.

Všimněte si, že použití numpy polí k vektorizaci výpočtu rovnosti může zefektivnit výše zmíněný kód.

Přesnost pomocí Sklearn's measurement_score()

Metoda přesnost_score() sklearn.metrics přijímá skutečné štítky vzorku a štítky předpovězené modelem jako své parametry a vypočítává skóre přesnosti jako plovoucí hodnotu, kterou lze rovněž použít k získání skóre přesnosti v Pythonu. Existuje několik užitečných funkcí pro výpočet typických hodnoticích metrik ve třídě sklearn.metrics. Použijme funkci přesnost_score() sklearnu k výpočtu skóre přesnosti modelu klasifikace podpůrných vektorů pomocí stejné ukázkové datové sady jako dříve.

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

Používáme to pro výpočet skóre přesnosti klasifikace. Tato metoda počítá přesnost podskupiny v klasifikaci s více značkami; předpokládaná podmnožina štítků datové sady musí přesně odpovídat skutečné datové sadě štítků v y_true.

Parametry

    y_true (1d jako pole nebo pole označující štítek / řídkou matici):Toto jsou skutečné štítky pro daný vzorek.y_pred (1d jako pole nebo pole označující štítek / řídkou matici):Předpokládané štítky, které model klasifikace vrátil.normalizovat (bool, výchozí = True):Udává počet úspěšně klasifikovaných předpokládaných vzorků, pokud je odpověď False. Vrátí podíl správně klasifikovaných předpokládaných vzorků, pokud je True.sample_weight (jako pole tvaru (n,), výchozí = Žádný):Vzorové závaží.

Návraty

    skóre (plovoucí):Udává poměr úspěšně klasifikovaných vzorků (float) if normalize == True; jinak vrátí počet úspěšně klasifikovaných predikovaných vzorků (int). 1 je 100% přesnost pro normalizaci == True a počet vzorků poskytnutých s normalizovat == False.

Příklad Accuracy_score

Kód

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

Výstup:

 0.9777777777777777 

Při použití binárních indikátorů štítků s více štítky:

Kód

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

Výstup:

 0.5 

Jak scikit learning funguje přesnost_skóre

Metoda přesnosti_skóre balíčku sklearn.metrics přiřazuje přesnost podmnožiny v klasifikaci více značek.

Je vyžadováno, aby se značky, které model předpověděl pro daný vzorek, a skutečné značky vzorku přesně shodovaly.

Přesnost popisuje chování modelu napříč všemi třídami. Pokud jsou všechny třídy srovnatelně významné, je to užitečné.

K určení přesnosti modelu se používá poměr počtu přesných předpovědí k celkovému počtu vzorků nebo celkovému počtu předpovědí.

Kód:

  1. Níže uvedený kód importuje dvě knihovny. Importujeme sklearn.metrics pro predikci přesnosti modelu a numpy knihoven.
  2. Skutečné hodnoty vzorku jsou y_true = ['1', '1', '0', '0', '1', '1', '0'].
  3. ['1', '1', '0', '0', '1', '1', '0'] toto jsou předpokládané hodnoty modelu pro vzorová data.
  4. Přesnost = ( matice[0][0] + matice[-1][-1] ) / numpy.sum(matice) se používá k získání skóre přesnosti klasifikačního modelu.
  5. Skóre přesnosti se zobrazí jako výstup pomocí tisku (přesnost).

Kód

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

Výstup:

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

Takže v tomto tutoriálu jsme se naučili scikit-learn přesnost_score v Pythonu a prozkoumali jsme některé příklady implementace.