首页 > 科技 > 支持向量机完成垃圾邮件的分类任务

支持向量机完成垃圾邮件的分类任务

专栏推荐

(此处已添加圈子卡片,请到今日头条客户端查看)

正文

现在有一个数据集spamTrain.mat和spamTest.mat,这两个数据集,其中一个是训练集数据,其中一个是测试集数据,我们先从中取出训练集特征X,训练数据y,以及测试集Xtest特征,以及测试集ytest的标注,我们输出看一下我们的训练集数据是什么样的?

其实它是一个邮件分类的数据集,只不过我们对其已经进行好了处理,其实这个处理(将字词映射到为练习提供的字典中的ID),而其余的预处理步骤(如HTML删除,词干,标准化等)已经完成。 这里跳过机器学习任务,而不是重现这些预处理步骤,其中包括从预处理过的训练集构建分类器,以及将垃圾邮件和非垃圾邮件转换为单词出现次数的向量的测试数据集。)

其中每个文档已经转换为一个向量,其中1,899个维对应于词汇表中的1,899个单词。 它们的值为二进制,表示文档中是否存在单词。 在这一点上,训练评估是用一个分类器拟合测试数据的问题。

下面我们来拟合这个数据集

svc = svm.SVC()

svc.fit(X, y)

下面来看一下我们的我们此时的训练集数据和测试集数据

print('Training accuracy = {0}%'.format(np.round(svc.score(X, y) * 100, 2)))

print('Test accuracy = {0}%'.format(np.round(svc.score(Xtest, ytest) * 100, 2)))

结果为:

Training accuracy = 94.4%

Test accuracy = 95.3%

全部代码:

from sklearn import svm
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb
from scipy.io import loadmat
spam_train = loadmat('spamTrain.mat')
spam_test = loadmat('spamTest.mat')
X = spam_train['X']
Xtest = spam_test['Xtest']
y = spam_train['y'].ravel()
ytest = spam_test['ytest'].ravel()
print (X)
print (y)
svc = svm.SVC()
svc.fit(X, y)
print('Training accuracy = {0}%'.format(np.round(svc.score(X, y) * 100, 2)))
print('Test accuracy = {0}%'.format(np.round(svc.score(Xtest, ytest) * 100, 2)))

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/220121.html