900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 机器学习代码实战——朴素贝叶斯(实现垃圾邮件分类)

机器学习代码实战——朴素贝叶斯(实现垃圾邮件分类)

时间:2019-09-01 02:38:39

相关推荐

机器学习代码实战——朴素贝叶斯(实现垃圾邮件分类)

文章目录

1.实验目的2.导入必要模块并读取数据3.训练+预测4.使用Sklearn Pipeline方法

1.实验目的

(1)分析邮件数据并对数据进行预处理

(2)运行朴素贝叶斯模型对邮件进行分类

数据链接

密码:bwfa

2.导入必要模块并读取数据

import pandas as pddf = pd.read_csv('spam.csv')df.head()

df['spam'] = df['Category'].apply(lambda x: 1 if x=='spam' else 0) #将标签数字化from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(df.Message, df.spam) #拆分训练集与测试集from sklearn.feature_extraction.text import CountVectorizerv = CountVectorizer() #将文本中的词语转换为词频矩阵X_train_count = v.fit_transform(X_train.values) #通过fit_transform函数计算各个词语出现的次数X_train_count.toarray()[0:5]

3.训练+预测

from sklearn.naive_bayes import MultinomialNB #导入多标签朴素贝叶斯模块model = MultinomialNB() #实例化 model.fit(X_train_count, y_train) #训练X_test_count = v.transform(X_test.values)#转化测试集为数字model.score(X_test_count, y_test) #计算准确率

#测试emails = ['Hey mohan, can we get together to watch footbal game tomorrow?','Upto 20% discount on parking, exclusive offer just for you. Dont miss this reward!']emails_count = v.transform(emails) #转化为数字model.predict(emails_count) #预测

4.使用Sklearn Pipeline方法

from sklearn.pipeline import Pipelineclf = Pipeline([ #将转换和模型封装在一起('vectorizer',CountVectorizer()),('nb',MultinomialNB())])clf.fit(X_train,y_train) #训练

clf.score(X_test,y_test) #测试clf.predict(emails)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。