我正在使用 Scikit-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 的新手。
EDIT:
亚历山德罗给了我很好的建议,他告诉我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().
我走在正确的轨道上吗?