You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

垃圾邮件识别模型:如何获取Ham与Spam的分类正确率?

获取Ham与Spam的分类准确率

方法一:使用classification_report直接生成详细指标

首先在导入模块时添加classification_report:

from sklearn.metrics import confusion_matrix, classification_report

模型训练完成后,获取测试集预测结果并生成分类报告:

# 获取测试集预测结果
y_pred = model.predict(count_vector.transform(x_test))

# 打印分类报告
print("分类详细指标:")
print(classification_report(y_test, y_pred))

这份报告会输出每个类别(Ham/Spam)的精确率、召回率、F1值及支持样本数,其中召回率就是该类别被正确分类的百分比。


方法二:通过混淆矩阵手动计算分类准确率

若需单独计算每个类别的正确分类占比,可借助混淆矩阵实现:

# 生成混淆矩阵
cm = confusion_matrix(y_test, y_pred)

# 提取Ham和Spam的正确分类数与总样本数(默认标签顺序为['ham', 'spam'])
ham_correct = cm[0][0]
ham_total = cm[0].sum()
spam_correct = cm[1][1]
spam_total = cm[1].sum()

# 计算并输出准确率
ham_accuracy = (ham_correct / ham_total) * 100
spam_accuracy = (spam_correct / spam_total) * 100

print(f"Ham正确分类百分比: {ham_accuracy:.2f}%")
print(f"Spam正确分类百分比: {spam_accuracy:.2f}%")

修改后的完整代码

整合上述逻辑后的完整代码如下:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
 
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB, GaussianNB
from sklearn import svm
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import confusion_matrix, classification_report

data = pd.read_csv('D:/Descargas/spam.csv', encoding='utf-8')

x_data=data['v2']
y_data=data['v1']
 
split = int(0.8*data.shape[0])
x_train=x_data[:split]
x_test=x_data[split:]
y_train=y_data[:split]
y_test=y_data[split:]

count_vector = CountVectorizer()  
extracted_features = count_vector.fit_transform(x_train)

tuned_parameters = {'kernel': ['rbf','linear'], 'gamma': [1e-3, 1e-4],'C': [1, 10, 100, 1000]}
model = GridSearchCV(svm.SVC(), tuned_parameters)
model.fit(extracted_features,y_train)
 
print("Model Trained Successfully!")

# 输出整体准确率
print("Accuracy of the model is: ",model.score(count_vector.transform(x_test),y_test)*100)

# 获取测试集预测结果
y_pred = model.predict(count_vector.transform(x_test))

# 方法一:打印分类详细报告
print("\n分类详细指标:")
print(classification_report(y_test, y_pred))

# 方法二:手动计算每个类别的正确分类百分比
cm = confusion_matrix(y_test, y_pred)
ham_correct = cm[0][0]
ham_total = cm[0].sum()
spam_correct = cm[1][1]
spam_total = cm[1].sum()

ham_accuracy = (ham_correct / ham_total) * 100
spam_accuracy = (spam_correct / spam_total) * 100

print(f"\nHam正确分类百分比: {ham_accuracy:.2f}%")
print(f"Spam正确分类百分比: {spam_accuracy:.2f}%")

内容的提问来源于stack exchange,提问作者leonardo gomez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:25:31