我正在使用 Sckit-learn 并使用混淆矩阵来更深入地了解我的算法是如何执行的:

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 的新手。

编辑:

Alessandro 告诉我 Y_test != pred 会在混淆矩阵中返回我所有的误报/否定,给了很好的建议。

我应该在我最初的问题中提到的一个因素是我正在对二进制标签下的文本数据进行分类。 (例如火腿/垃圾邮件),我想将它们彼此分开。我当前用于提取假阴性的代码采用以下形式:
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])

不幸的是,这会引发错误:
  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().

我在正确的轨道上吗?

最佳答案

Y_test != pred 给你你错误预测的答案
特别是 (Y_test == 1) == (pred == 0) 应该给你假阳性,(Y_test == 0) == (pred == 1) 应该给你假阴性(或者它可能是相反的,取决于你的设置中的正面和负面)

关于python - 是否可以检索由混淆矩阵识别的误报/误报?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36184432/

10-12 18:59