python - 如何打印真阳性、假阳性等的结果
问题描述
我有一个包含垃圾邮件和火腿邮件的数据集(熊猫数据框)。所以典型的机器学习初学者教程。我在上面运行我的模型,看看我的分类器是如何工作的。
源代码
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.pipeline import Pipeline
from sklearn.svm import LinearSVC
df = pd.read_csv('TextFiles/smsspamcollection.tsv', sep='\t')
X = df['message']
y = df['label']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
vectorizer = TfidfVectorizer()
X_train_tfidf = vectorizer.fit_transform(X_train) # Originaler Datensatz wird verwendet!
X_train_tfidf.shape
print(X_train_tfidf)
text_clf = Pipeline([('tfidf', TfidfVectorizer()),
('clf', LinearSVC()),
])
text_clf.fit(X_train, y_train)
predictions = text_clf.predict(X_test)
from sklearn import metrics
print(metrics.confusion_matrix(y_test,predictions))
结果
[[1586 7]
[ 12 234]]
print(metrics.classification_report(y_test,predictions))
precision recall f1-score support
ham 0.99 1.00 0.99 1593
spam 0.97 0.95 0.96 246
accuracy 0.99 1839
macro avg 0.98 0.97 0.98 1839
weighted avg 0.99 0.99 0.99 1839
如您所见,我有 7 个误报。
问题 1
如何找出我的数据框中的哪七条消息被归类为误报?我一般如何查看哪些消息属于 TP,TN,FP,FN 的哪个类别?有什么功能吗?
问题2
我怎样才能改善结果?
解决方案
如何找出我的数据框中的哪七条消息被归类为误报?我一般如何查看哪些消息属于 TP,TN,FP,FN 的哪个类别?有什么功能吗?
真阳性
意味着您的分类器和地面实况标签的预测都是true
(或1
)。您可以使用 binary 轻松获得那些二进制掩码and
:
y_test & predicted
要获取这些示例的索引,请使用:
np.argwhere(y_test & predicted).flatten()
(您也可以将此代码段用于以下任何情况)
假阳性
真正的标签是0
,你错误地预测1
。会是这样的:
(y_true == 0) & predicted
真阴性
真正的标签是0
并且您正确地预测了它:
(y_true == 0) & (predicted == 0)
假阴性
Groundtruth 是1
,您预测0
:
y_true & (predicted == 0)
我怎样才能改善结果?
这个问题对于这个网站来说太笼统了(以前的问题很好)。您可以查看网格搜索和其他超参数调整技术(请参阅sklearn 文档)。
推荐阅读
- python - 使用管道或队列进行多处理
- primary-key - 在 locust 上进行负载测试时使用主键记录插入
- simulation - 如何测量完全占用资源的时间?
- javascript - 单击按钮时如何运行随机函数?
- elasticsearch - Elasticsearch 仅复制索引映射
- algorithm - 归并排序中的递归级别
- edgesdk - 尝试在 AWS Ec2 实例上设置 mimik 的后端服务
- ios - Firebase iOS Swift - Adding Atname Update Function to Settings
- reactjs - CanvasRenderingContext2D 未在 xbs-enjoyhint 中定义
- android - 颤振下拉箭头位置