logo

Accuracy_Score w Sklearn

Kluczowym etapem w procesie analizy danych jest zmierzenie dokładności naszego modelu przy użyciu odpowiedniej metryki. W tym samouczku nauczymy się dwóch metod obliczania przewidywanej dokładności klasy próbki źródłowej: ręcznie i przy użyciu biblioteki scikit-learn języka Python.

Oto podsumowanie tematów, które omówiliśmy w tym samouczku.

  • Ręczne obliczanie dokładności_score
  • Obliczanie wyniku_dokładności za pomocą nauki scikit
  • Scikit poznaj przykłady dokładności_score
  • Jak działa scikit dowiedzieć się, jaki wskaźnik dokładności_score działa?

Co to jest dokładność?

Jedną z powszechnie stosowanych metryk obliczających wydajność modeli klasyfikacyjnych jest dokładność. Procent etykiet, które nasz model pomyślnie przewidział, jest reprezentowany przez dokładność. Na przykład, jeśli nasz model dokładnie sklasyfikowałby 80 ze 100 etykiet, jego dokładność wyniosłaby 0,80.

Tworzenie funkcji do obliczania wyniku dokładności

Utwórzmy funkcję Pythona, aby obliczyć wynik dokładności przewidywanych wartości, biorąc pod uwagę, że mamy już prawdziwe etykiety próbki i etykiety przewidywały model.

Kod

przekonwertuj datę na ciąg
 # 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 

Powyższa funkcja przyjmuje jako argumenty wartości przewidywanych etykiet modelu klasyfikacji i prawdziwych etykiet próbki i oblicza wynik dokładności. Tutaj iterujemy równolegle każdą parę prawdziwych i przewidywanych etykiet, aby zarejestrować liczbę prawidłowych przewidywań. Następnie dzielimy tę liczbę przez całkowitą liczbę etykiet, aby obliczyć wynik dokładności.

Zastosujemy teraz tę funkcję na przykładzie.

gzip dla Linuksa

Kod

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

Wyjście:

 0.9777777777777777 

Otrzymujemy 0,978 jako wynik dokładności przewidywań modelu klasyfikacji wektorów nośnych.

Zauważ, że użycie tablic numpy do wektoryzacji obliczeń równości może sprawić, że wspomniany powyżej kod będzie bardziej wydajny.

Dokładność przy użyciu dokładności_score() Sklearna

Metoda dokładności_score() sklearn.metrics akceptuje prawdziwe etykiety próbki i etykiety przewidywane przez model jako parametry i oblicza wynik dokładności jako wartość zmiennoprzecinkową, której można również użyć do uzyskania wyniku dokładności w Pythonie. W klasie sklearn.metrics dostępnych jest kilka przydatnych funkcji do obliczania typowych metryk oceny. Użyjmy funkcji dokładności_score() sklearna do obliczenia wyniku dokładności modelu klasyfikacji wektorów nośnych przy użyciu tego samego przykładowego zbioru danych, co wcześniej.

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

system.out.println

Używamy tego do obliczenia wyniku dokładności klasyfikacji. Ta metoda oblicza dokładność podgrup w klasyfikacji wieloetykietowej; przewidywany podzbiór etykiet zbioru danych musi dokładnie odpowiadać rzeczywistemu zbiorowi danych etykiet w y_true.

Parametry

    y_true (1d tablica lub tablica wskazująca etykietę/macierz rzadką):Są to prawdziwe etykiety dla danej próbki.y_pred (1d tablica lub tablica wskazująca etykietę/rzadką macierz):Przewidywane etykiety zwrócone przez model klasyfikacji.normalize (bool, domyślnie = True):Podaje liczbę pomyślnie sklasyfikowanych przewidywanych próbek, jeśli odpowiedź jest fałszywa. Zwraca proporcję poprawnie sklasyfikowanych przewidywanych próbek, jeśli ma wartość True.sample_weight (kształt podobny do tablicy (n,), domyślnie = Brak):Przykładowe wagi.

Zwroty

    wynik (pływający):Podaje stosunek pomyślnie sklasyfikowanych próbek (float), jeśli normalize == True; w przeciwnym razie zwraca liczbę pomyślnie sklasyfikowanych przewidywanych próbek (int). 1 to 100% dokładność dla normalize == True i liczby próbek dostarczonych z normalize == False.

Przykład Accuracy_score

Kod

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

Wyjście:

 0.9777777777777777 

W przypadku stosowania binarnych wskaźników etykiet z wieloma etykietami:

Kod

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

Wyjście:

 0.5 

Jak działa scikit Learn valid_score

Metoda dokładności_score pakietu sklearn.metrics przypisuje dokładność podzbioru w klasyfikacji wieloetykietowej.

alternatywa dla mylivecricket

Wymagane jest, aby etykiety przewidywane przez model dla danej próbki i prawdziwe etykiety próbki dokładnie się zgadzały.

Dokładność opisuje zachowanie modelu we wszystkich klasach. Jeśli wszystkie klasy są porównywalnie istotne, jest to pomocne.

Do określenia dokładności modelu wykorzystuje się stosunek liczby dokładnych predykcji do całkowitej liczby próbek lub całkowitej liczby predykcji.

rysowanie prostokąta w gimp

Kod:

  1. Poniższy kod importuje dwie biblioteki. Importujemy sklearn.metrics do przewidywania dokładności modelu i bibliotek numpy.
  2. Prawdziwe wartości próbki to y_true = ['1', '1', '0', '0', '1', '1', '0'].
  3. ['1', '1', '0', '0', '1', '1', '0'] to wartości przewidywane przez model dla przykładowych danych.
  4. Accuracy = ( matrix[0][0] + matrix[-1][-1] ) / numpy.sum(matrix) służy do uzyskania wyniku dokładności modelu klasyfikacyjnego.
  5. Wynik dokładności jest wyświetlany jako wynik za pomocą metody print(accuracy).

Kod

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

Wyjście:

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

Dlatego w tym samouczku nauczyliśmy się scikit-learn dokładność_score w Pythonie i sprawdziliśmy kilka przykładów implementacji.