私はSckitは、学ぶ使用していますし、私のアルゴリズムを実行しているかにより洞察を得るために混乱マトリックスを使用しています:混乱マトリクスによって特定された偽陽性/偽陰性を検索することは可能ですか?
X_train, X_test, Y_train, Y_test = train_test_split(keywords_list,
label_list, test_size=0.33, random_state=42)
pipeline.fit(X_train, Y_train)
pred = pipeline.predict(X_test)
print(confusion_matrix(Y_test, pred))
私はこのような出力を取得しています:
私は仮定[[1011 72]
[ 154 1380]]
これらの行列の形式に従います。
TP|FP
FN|TN
偽陽性と偽陰性として分類されている値を取得することは可能ですか?そのデータがどのように見えるかを知ることは、私の仕事に役立つでしょう。私はSckit-Learnを初めて熟知していることは言うまでもありません。
EDIT:
アレッサンドロはY_test != pred
が混同行列の私の偽陽性/陰性のすべてを返すことを私に知らせることによって良いアドバイスを与えました。
私が最初に質問したはずの1つの要素は、テキストデータをバイナリラベルで分類することです。 (例:ハム/スパム)、私はそれらを互いに区別して識別したいと考えています。ここでは正しい軌道に乗って
Traceback (most recent call last):
File "/home/noname365/PycharmProjects/MLCorpusBlacklist/CorpusML_training.py", line 171, in <module>
falsen_list = X_test[(Y_test == 'blacklisted') and (pred == 'clean')] #False Negatives
File "/home/noname365/virtualenvs/env35/lib/python3.5/site-packages/pandas/core/generic.py", line 731, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
アムI:これはエラーをスローし、残念ながら
false_neg = open('false_neg.csv', 'w')
falsen_list = X_test[(Y_test == 'Spam') and (pred == 'Ham')] #False Negatives
wr2 = csv.writer(false_neg, quoting=csv.QUOTE_ALL)
for x in falsen_list:
wr2.writerow([x])
:偽陰性を抽出するための私の現在のコードは次の形式を取っていますか?
これはうまくいきますが、私が言いたいことは、私のアルゴリズムでテキストデータを扱っていることです。そのため、返されたすべての単語のトークンを取得します。どのようにすれば、事実を単語に効果的にマッチさせることができますか? – GreenGodot
あなたのデータのサイズにもよりますが、X_test [Y_test!= pred]というようなことができます。それはあなたのデータにあなたの出来事を表示します。 – Alessandro
ありがとうございますが、そのコードを特に偽陽性または偽陰性を対象に適用すると、X_test [(Y_test == 1)==(pred == 0)] 'は両方の要素の数が同じになります。 221のように、偽陽性と陰性が1つのリストにマージされます。 – GreenGodot