0
私はいくつかのデータ(RBF SVM)でKFoldのクロスバリデーションを行っています。本当の陽性率と偽陽性率を確認するためにこのコードを持っています。時にはこのコードがエラーをスローします。クロスバリデーションのランダムシャッフルがすべてのクラスのセットを作成するたびにエラーが発生することに気付きました。例えば:まずクロスバリデーションされたsvmの感受性と特異性をチェックする際のエラー
sensitivity = 1.0
specificity = 0.0
[0 0 0 0 0 0 0 0] predicted
[0 0 0 0 0 0 0 0] actual
私はそう、私はif文でそれを修正しようとしたこのエラーは、それがゼロで割ることになるという事実によるものだと思いました。しかし、それでも私にはこのエラーが表示されます:
IndexError Traceback (most recent call last)
<ipython-input-56-0339ebc92e19> in <module>()
10
11 tn = float(cm[0][0])/np.sum(cm[0])
---> 12 if np.sum(cm[1]) == 0:
13 tp = 0
14 else:
IndexError: index 1 is out of bounds for axis 0 with size 1
私は問題の内容や解決方法を完全に失いました。 quesionのコード以下の通りです: - ゼロ利用できる唯一のクラスがありますので、あなたの場合は
for i, (train, test) in enumerate(kf_total):
y_pred = clf.fit(val[train], y[train]).predict(val[test])
print y_pred,"predicted"
print y[test], "actual"
cm = confusion_matrix(y[test], y_pred)
tn = float(cm[0][0])/np.sum(cm[0])
if np.sum(cm[1]) == 0:
tp = 0
else:
tp = float(cm[1][1])/np.sum(cm[1])
print "sensitivity =", tp
print "specificity =", tn
どうすればこの問題を解決できますか?それはすべてのゼロを予測し、実際には1つを含むエラーを与えません – bidby
問題を解決する方法を実現しました!私は – bidby
'if np.sum(y [test])== 0:'に1つのクラスだけの折り畳みを持たないように、層別kfoldを使い始めました。 [sklearnの混乱マトリクスに関する良い説明](http://stats.stackexchange.com/questions/95209/how-can-i-interpret-sklearn-confusion-matrix) – Alstof