71571


実装は以下のサイトのものをそのまま使用しました．  
<https://www.haya-programming.com/entry/2018/02/22/234011>

混同行列(confusion_matrix)が以下のようになったため，どのデータが分類に失敗したのかが気になります．

[code]

    [[1699    1]
     [   0  1936]]
    
[/code]

右上の偽陽性のデータ1件が格納されている配列の番号を調べるにはどうすればよいでしょうか？


CC BY-SA 4.0
2020-10-19T12:23:46.447
71329
2020-10-29T12:32:20.007
2020-10-19T14:58:35.100
32986
39562
question
python python3 機械学習 scikit-learn
scikit-learnで偽陽性だったもの(データの配列番号)を出力して確認するにはどうすればよいでしょうか？


偽陽性とは、陽性ではないものが陽性として予測されることです。男性相手に「あなたは妊娠しています」と伝えるのも偽陽性です。

ご提示されたリンク先には以下の部分があります:

[code]

        trues = []
        preds = []
        for train_index, test_index in SKF().split(X, y):
            if first_fold:
                gclf.fit(X[train_index], y[train_index])
                clf = gclf.best_estimator_
                first_fold = False
            clf.fit(X[train_index,], y[train_index])
            trues.append(y[test_index])
            preds.append(clf.predict(X[test_index]))
    
[/code]

truesは正解のラベルで、predsは予測のラベルと考えられます。

この2つを使えば、偽陽性を見つけられます。つまり、truesとpredsに対して各イテレーションで格納されるとき、truesに格納されるものがFalseで、predsに格納されるものがTrueであるときのインデックスを判定して新しい配列に格納すればよいはずです。

コードを見ると、インデックスは"test_index"という名前で使われているため、偽陽性だったtest_indexを用意した配列へ格納すればよいのではないでしょうか。

[code]

        trues = []
        preds = []
        false_positives = []
        for train_index, test_index in SKF().split(X, y):
            if first_fold:
                gclf.fit(X[train_index], y[train_index])
                clf = gclf.best_estimator_
                first_fold = False
            clf.fit(X[train_index,], y[train_index])
            pred = clf.predict(X[test_index])
            trues.append(y[test_index])
            preds.append(pred)
            if pred and not y[test_index]:
                false_positives.append(test_index) #データのインデクスが格納される
    
[/code]


CC BY-SA 4.0
2020-10-29T00:31:19.627
71571
2020-10-29T12:32:20.007
2020-10-29T12:32:20.007
71329
answer