1

私はバイナリ分類問題を含む不均衡なデータセットを持っています。ランダムフォレストクラシファイアを構築し、折りたたみPythonで10倍のK倍のクロスバリデーションのための不均衡なデータセットの精度、リコール、およびf1スコアの計算方法

を次のように
kfold = model_selection.KFold(n_splits=10, random_state=42) 
model=RandomForestClassifier(n_estimators=50) 

は、私は私の予測を計算しています

print("Accuracy: %.3f%% (%.3f%%)") % (results.mean()*100.0, results.std()*100.0) 
Accuracy: 70.900% (10.345%) 

結果の平均値と標準偏差を取ることによって、私は精度を計算した

results = model_selection.cross_val_score(model,features,labels, cv=kfold) 
print results 
[ 0.60666667 0.60333333 0.52333333 0.73  0.75333333 0.72  0.7 
    0.73  0.83666667 0.88666667] 

10倍の結果を得ました

predictions = cross_val_predict(model, features,labels ,cv=10) 

これは不均衡なデータセットなので、各折りたたみの精度、リコール、およびf1スコアを計算し、結果の平均を出したいと思います。 Pythonで値を計算する方法は?あなたがcross_val_scoreメソッドを使用する場合

答えて

2

、あなたはそれぞれ倍に計算することができますscoringsれ、指定することができます。

from sklearn.metrics import make_scorer, accuracy_score, precision_score, recall_score, f1_score 

scoring = {'accuracy' : make_scorer(accuracy_score), 
      'precision' : make_scorer(precision_score), 
      'recall' : make_scorer(recall_score), 
      'f1_score' : make_scorer(f1_score)} 

kfold = model_selection.KFold(n_splits=10, random_state=42) 
model=RandomForestClassifier(n_estimators=50) 

results = model_selection.cross_val_score(estimator=model, 
              X=features, 
              y=labels, 
              cv=kfold, 
              scoring=scoring) 

交差検証した後、あなたはキーを持つresults辞書を取得します:「正確さ」、「精度」を、 'recall'、 'f1_score'は、特定の指標の各折り目に指標値を格納します。各メトリックについて、平均値と標準偏差を計算するには、np.mean(results[value])np.std(results[value])を入力します。ここで、valueは指定したメトリック名の1つです。

+0

各折りたたみのトレーニングとテストのエラーを計算するにはどうすればよいですか? – Jayashree

+0

cross_val_scoreは、検証データのメトリクス値のみを計算します。しかし、2つのカスタムイテレータを作ることができます。最初のイテレータは、オブジェクトの位置インデックスを訓練し、妥当性検査の代わりに位置インデックスを使用すると、フィーチャDataFrameの同じ列オブジェクトの位置インデックスが得られます。 2番目のイテレータは、最初のイテレータと同じオブジェクトの位置インデックスを調整しますが、valの位置インデックスの代わりにフィーチャDataFrameの残りのオブジェクトの位置インデックスが生成されます。 –

+0

cross_val_scoreをカスタムの最初のCVで作成した後、列車セットのメトリクスの値を取得し、カスタムの第2のCVでcross_val_scoreの後に検証セットのメトリクスの値を取得します。 –

関連する問題