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

1.实验目的

(1)分析邮件数据并对数据进行预处理
(2)运行朴素贝叶斯模型对邮件进行分类

数据链接
密码:bwfa

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

import pandas as pd

df = 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 CountVectorizer

v = 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 Pipeline

clf = Pipeline([                       #将转换和模型封装在一起
    ('vectorizer',CountVectorizer()),
    ('nb',MultinomialNB())
])

clf.fit(X_train,y_train)    #训练

在这里插入图片描述

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

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值