Sklearn で分類レポートを解釈する方法 (例あり)
機械学習で分類モデルを使用する場合、次の 3 つの一般的な指標を使用してモデルの品質を評価します。
1. 精度: 陽性予測の合計と比較した、正しい陽性予測の割合。
2. Recall : 実際の陽性予測の合計と比較した、正しい陽性予測の割合。
3. F1 スコア: 精度と再現率の加重調和平均。モデルが 1 に近づくほど、モデルは優れています。
- F1 スコア: 2* (精度 * 再現率) / (精度 + 再現率)
これら 3 つの指標を使用すると、特定の分類モデルが特定の応答変数の結果をどの程度予測できるかを理解できます。
幸いなことに、Python で分類モデルを当てはめる場合、 sklearnライブラリのclassification_report()関数を使用してこれら 3 つのメトリクスを生成できます。
次の例は、この関数を実際に使用する方法を示しています。
例: sklearn で分類レポートを使用する方法
この例では、ポイントとアシストを使用するロジスティック回帰モデルを当てはめて、1,000 人のさまざまな大学バスケットボール選手が NBA にドラフトされるかどうかを予測します。
まず、Python でロジスティック回帰を実行するために必要なパッケージをインポートします。
import pandas as pd import numpy as np from sklearn. model_selection import train_test_split from sklearn. linear_model import LogisticRegression from sklearn. metrics import classification_report
次に、1,000 人のバスケットボール選手の情報を含むデータ フレームを作成します。
#make this example reproducible
n.p. random . seeds (1)
#createDataFrame
df = pd. DataFrame ({' points ': np. random . randint (30, size=1000),
' assists ': np. random . randint (12, size=1000),
' drafted ': np. random . randint (2, size=1000)})
#view DataFrame
df. head ()
points assists drafted
0 5 1 1
1 11 8 0
2 12 4 1
3 8 7 0
4 9 0 0
注: 値0はプレーヤーがドラフト外されたことを示し、値1はプレーヤーがドラフトされたことを示します。
次に、データをトレーニング セットとテスト セットに分割し、ロジスティック回帰モデルを当てはめます。
#define the predictor variables and the response variable X = df[[' points ', ' assists ']] y = df[' drafted '] #split the dataset into training (70%) and testing (30%) sets X_train,X_test,y_train,y_test = train_test_split (X,y,test_size=0.3,random_state=0) #instantiate the model logistic_regression = LogisticRegression() #fit the model using the training data logistic_regression. fit (X_train,y_train) #use model to make predictions on test data y_pred = logistic_regression. predict (X_test)
最後に、 classification_report()関数を使用して、モデルの分類メトリックを出力します。
#print classification report for model
print (classification_report(y_test, y_pred))
precision recall f1-score support
0 0.51 0.58 0.54 160
1 0.43 0.36 0.40 140
accuracy 0.48 300
macro avg 0.47 0.47 0.47 300
weighted avg 0.47 0.48 0.47 300
結果を解釈する方法は次のとおりです。
説明: モデルがドラフトされると予測した全選手のうち、実際に指名されたのは43%だけでした。
注意: 実際にドラフトされたすべての選手のうち、モデルがこの結果を正しく予測したのはそのうちの36%だけです。
F1 スコア: この値は次のように計算されます。
- F1 スコア: 2* (精度 * 再現率) / (精度 + 再現率)
- F1 スコア: 2*(.43*.36)/(.43+.36)
- F1 評価: 0.40 。
この値は 1 にあまり近くないため、このモデルでは選手がドラフトされるかどうかの予測が不十分であることがわかります。
サポート: これらの値は、テスト データセット内の各クラスに所属するプレーヤーの数を単純に示します。テスト データセット内の選手のうち、 160 人がドラフト外、 140 人がドラフト外であることがわかります。
注: classification_report()関数の完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、Python での分類モデルの使用に関する追加情報を提供します。
Python でロジスティック回帰を実行する方法
Python で混同行列を作成する方法
Python でバランスのとれた精度を計算する方法