私は最近、自分のプロジェクトにsklearnを使用することに苦労しています。 私は分類器を作り、私のデータを6つのグループに分類したいと思っていました。総サンプルサイズが88、私は電車(66)にデータを分割し、テスト(22) たsklearnのドキュメントが示したように私はここに、正確にやった私のコードはマルチクラスのクロス検証で平均ROCを計算する方法
あるfrom sklearn.multiclass import OneVsRestClassifier
from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis as QDA
clf = OneVsRestClassifier(QDA())
QDA_score = clf.fit(train,label).decision_function(test)
from sklearn.metrics import roc_curve, auc
from sklearn.metrics import roc_curve
fpr = dict()
tpr = dict()
roc_auc = dict()
for i in range(3):
fpr[i], tpr[i], _ = roc_curve(label_test[:, i], QDA_score[:, i])
roc_auc[i] = auc(fpr[i], tpr[i])
from itertools import cycle
import matplotlib.pyplot as plt
plt.figure()
lw = 2
colors = cycle(['aqua', 'darkorange', 'cornflowerblue'])
for i, color,n in zip(range(3), colors,['_000','_15_30_45','60']):
plt.plot(fpr[i], tpr[i], color=color, lw=lw,
label='ROC curve of {0} (area = {1:0.2f})'
''.format(n , roc_auc[i]))
plt.plot([0, 1], [0, 1], 'k--', lw=lw)
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC for multi-classes')
plt.legend(loc="lower right")
plt.show()
リンク私の結果です。 しかし、コードを実行するたびに結果が変わります。とにかくこれをクロスバリデーションと組み合わせて、各クラスの平均的で安定したROCを計算できるかどうか疑問に思っています。
ありがとう!
こんにちは、ようこそ!私は最初の投稿を見直しています。作業しているドキュメントへのリンクを追加することをお勧めします。また、あなたが参照している結果とのリンクは見逃されているようです。また、行動を変えているコード部分をよりよく分離して、それが予期せぬ理由を説明できる場合にも役立ちます。そうでなければ、これはかなり良い最初の投稿です。がんばろう! – Praxeolitic