logo

Sklearn の Accuracy_Score

データ サイエンス ワークフローの重要な段階は、適切なメトリクスを使用してモデルの精度を測定することです。このチュートリアルでは、ソース サンプルの予測クラス精度を計算するための 2 つの方法 (手動で行う方法と Python の scikit-learn ライブラリを使用する方法) を学習します。

このチュートリアルで説明したトピックの概要を次に示します。

  • 手動でのAccuracy_scoreの計算
  • scikit learnを使用したaccuracy_scoreの計算
  • Scikit learnAccuracy_scoreの例
  • scikit は、accuracy_score をどのように学習しますか?

精度とは何ですか?

分類モデルのパフォーマンスを計算するために広く使用されている指標の 1 つは精度です。モデルが正常に予測したラベルの割合は精度で表されます。たとえば、モデルが 100 個のラベルのうち 80 個を正確に分類した場合、その精度は 0.80 になります。

精度スコアを計算する関数の作成

サンプルの真のラベルがすでにあり、そのラベルがモデルを予測したことを前提として、予測値の精度スコアを計算する Python 関数を作成しましょう。

コード

 # 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 

上記の関数は、分類モデルの予測ラベルとサンプルの真のラベルの値を引数として受け取り、精度スコアを計算します。ここでは、真のラベルと予測ラベルの各ペアを並行して反復して、正しい予測の数を記録します。次に、その数値をラベルの総数で割って、精度スコアを計算します。

この関数をサンプルに適用してみます。

コード

パイスパーク
 # 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) 

出力:

 0.9777777777777777 

サポート ベクター分類モデルの予測の精度スコアとして 0.978 が得られます。

numpy 配列を使用して等価計算をベクトル化すると、上記のコードをより効率的にできることに注意してください。

Sklearnのaccuracy_score()を使用した精度

sklearn.metrics の precision_score() メソッドは、サンプルの真のラベルとモデルによって予測されたラベルをパラメーターとして受け入れ、精度スコアを浮動小数点値として計算します。これは、Python で精度スコアを取得するために同様に使用できます。 sklearn.metrics クラスには、典型的な評価メトリクスを計算するための便利な関数がいくつかあります。 sklearn の precision_score() 関数を使用して、前と同じサンプル データセットを使用してサポート ベクター分類モデルの精度スコアを計算してみましょう。

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

これを分類の精度スコアの計算に使用します。この方法では、マルチラベル分類におけるサブグループの精度を計算します。データセットの予測されたラベルのサブセットは、y_true のラベルの実際のデータセットと正確に一致する必要があります。

パラメーター

    y_true (1次元配列のような、またはラベル/スパース行列を示す配列):これらは、特定のサンプルの真のラベルです。y_pred (1次元配列のような、またはラベル/スパース行列を示す配列):分類モデルが返す予測ラベル。正規化 (ブール値、デフォルト = True):答えが False の場合、分類に成功した予測サンプルの数が示されます。 True の場合、正しく分類された予測サンプルの割合を返します。Sample_weight (配列状の形状 (n,)、デフォルト = なし):サンプルの重量。

戻り値

    スコア (浮動小数点数):Normalize == True の場合、正常に分類されたサンプルの比率 (浮動小数点) が得られます。それ以外の場合は、分類に成功した予測サンプルの数 (int) を返します。 1 は、normalize == True の場合、およびnormalize == False で提供されるサンプル数の精度が 100% です。

Accuracy_score の例

コード

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

出力:

 0.9777777777777777 

複数のラベルを持つバイナリ ラベル インジケーターを使用する場合:

コード

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

出力:

Linuxのmakeコマンド
 0.5 

scikit learnacy_score の仕組み

sklearn.metrics パッケージの activity_score メソッドは、複数ラベル分類のサブセット精度を割り当てます。

モデルが特定のサンプルに対して予測したラベルとサンプルの真のラベルが正確に一致する必要があります。

精度は、すべてのクラスにわたるモデルの動作を表します。すべてのクラスが比較的重要であれば、それは役に立ちます。

サンプルの総数または予測の総数に対する正確な予測の数の比率は、モデルの精度を決定するために使用されます。

コード:

  1. 以下のコードは 2 つのライブラリをインポートします。モデルの精度と numpy ライブラリを予測するために sklearn.metrics をインポートしています。
  2. サンプルの真の値は y_true = ['1', '1', '0', '0', '1', '1', '0'] です。
  3. ['1', '1', '0', '0', '1', '1', '0'] これらは、サンプル データに対するモデルの予測値です。
  4. Accuracy = (行列[0][0] + 行列[-1][-1] ) / numpy.sum(matrix) は、分類モデルの精度スコアを取得するために使用されます。
  5. 精度スコアは、print(accuracy) を使用して出力として表示されます。

コード

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

出力:

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

そこで、このチュートリアルでは、Python で scikit-learn precision_score を学習し、いくつかの実装例を検討しました。