朴素贝叶斯-垃圾邮件(英文的)处理

这篇博客介绍了如何运用sklearn库中的MultinomialNB和GaussianNB实现朴素贝叶斯算法,用于垃圾邮件和非垃圾邮件的分类。通过读取英文电子邮件文本,进行预处理,创建词汇表,并将文本转化为向量,最后训练模型并对新的邮件进行预测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from sklearn.naive_bayes import MultinomialNB,GaussianNB
import numpy as np

MultinomialNB 多项式朴素贝叶斯

GaussianNB 高斯朴素贝叶斯

import re
def creatVocabList(wordList): #创建词集
vocabSet=set([])
for document in wordList:
vocabSet=vocabSet|set(document)
vocabList=list(vocabSet)
return vocabList

def textParse(bigString):
line = re.split(’\W’,bigString)
return [tokens.lower() for tokens in line if len(tokens) > 2]

wordList = [] #每句话的单词
classList = [] #类标签

for i in range(1, 26):
wordList_s = textParse(open(‘C:\Users\Administrator\Desktop\emailEnglish\spam\%d.txt’%i).read())
wordList.append(wordList_s)
classList.append(1)
wordList_h = textParse(open(‘C:\Users\Administrator\Desktop\emailEnglish\health\%d.txt’%i).read())
wordList.append(wordList_h)
classList.append(0)

def setOfWords2Vec(vocabList,words): #把词转换为向量
wordVec=[0]*len(words)
for word in words:
if word in vocabList:
wordVec[vocabList.index(word)]=1
return wordVec

trainMat=[]
wordLists=creatVocabList(wordList) #词集
for words in wordList:
trainMat.append(setOfWords2Vec(words,wordLists))

m1=MultinomialNB()
m1=m1.fit(trainMat,classList)

x=textParse(open(‘C:\Users\Administrator\Desktop\emailEnglish\health\2.txt’).read())
x=np.array(setOfWords2Vec(x,wordLists))

print(m1.predict(x.reshape(1,-1)))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值