朴素贝叶斯应用:垃圾邮件分类

import nltk
nltk.download()
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer

#预处理
def preprocessing(text):
    tokens = [word for sent in nltk.sent_tokenize(text) for word in nltk.word_tokrnize(sent)]
    stops = stopwords.words(‘english‘)
    tokens = [token for token in tokens if token not in stops]   #去掉停用词

    tokens = [token.lower() for token in tokens if len(token)>=2]  #去掉长度小于2的词
    lmtzr  =  WordNetLemmatizer()
    tokens = (lmtzr.lemmatize(token) for token in tokens) #词性还原
    preprocessed_text = ‘ ‘.join(tokens)
    return preprocessed_text

#读取数据集
import csv
file_path = r‘C:\Users\Administrator\Desktop\SMSSpamCollectionjsn.txt‘
sms = open(file_path,‘r‘,encoding=‘utf-8‘)
sms_data = []
sms_label = []
csv_reader = csv.reader(sms,delimiter = ‘\t‘)
for line in csv_reader:
    sms_label.append(line[0])
    sms_data.append(preprocessing(line[1]))
sms.close()

#训练集和测试集数据划分
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(sms_data,sms_label,test_size = 0.3,random_state=0,stratify=sms_label)

#将其向量化
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer(min_df=2,ngram_range=(1,2),stop_words=‘english‘,strip_accents=‘unicode‘,norm=‘12‘)
X_train = vectorizer.fit_transform(x_train)
X_test = vectorizer.transform(x_test)

#朴素贝叶斯分类器

from sklearn.navie_bayes import MultinomiaNB
clf = MultinomiaNB().fit(X_train,y_train)

#测试模型
y_nb_pred = clf.predict(X_test)

#测试模型:结果显示
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report

print(y_nb_pred.shape,y_nb_pred) #x_test预测结果
print(‘nb_confusion_matrix:‘)
cm = confusion_matrix(y_test,y_nb_pred)#混淆矩阵
print(cm)
print(‘nb_classification_report:‘)
cr = classification_report(y_test,y_nb_pred) #主要分类指标的文本报告
print(cr)

原文地址:https://www.cnblogs.com/hodafu/p/10037332.html

时间: 2024-10-09 23:16:51

朴素贝叶斯应用:垃圾邮件分类的相关文章

Bayes 朴素贝叶斯实现垃圾邮件分类

本文选取了25封垃圾邮件和25封正常邮件,随机产生了10组测试集和40组训练集,使用朴素贝叶斯方法实现了垃圾邮件的分类. Bayes公式   遍历每篇文档向量,扫描所有文档的单词,合并集合去重 ,并生成最终的词汇表 # 创建词汇表 # 输入:dataSet已经经过切分处理 # 输出:包含所有文档中出现的不重复词的列表 def createVocabList(dataSet):  # 文本去重,创建词汇表 vocabSet = set([])  # 创建一个空的集合 for document in

《机器学习实战》学习笔记:基于朴素贝叶斯的垃圾邮件过滤

概率是许多机器学习算法的基础,在前面生成决策树的过程中使用了一小部分关于概率的知识,即统计特征在数据集中取某个特定值的次数,然后除以数据集的实例总数,得到特征取该值的概率. 之前的基础实验中简单实现了朴素贝叶斯分类器,并正确执行了文本分类,这一节将贝叶斯运用到实际场景,垃圾邮件过滤这一实际应用. 实例:使用朴素贝叶斯过滤垃圾邮件 在上一节:http://blog.csdn.net/liyuefeilong/article/details/48383175中,使用了简单的文本文件,并从中提取了字符

吴裕雄--天生自然python机器学习:使用朴素贝叶斯过滤垃圾邮件

使用朴素贝叶斯解决一些现实生活中 的问题时,需要先从文本内容得到字符串列表,然后生成词向量. 准备数据:切分文本 测试算法:使用朴素贝叶斯进行交叉验证 文件解析及完整的垃圾邮件测试函数 def createVocabList(dataSet): vocabSet = set([]) #create empty set for document in dataSet: vocabSet = vocabSet | set(document) #union of the two sets return

【机器学习实验】使用朴素贝叶斯进行文本的分类

引言 朴素贝叶斯由贝叶斯定理延伸而来的简单而强大的概率模型,它根据每个特征的概率确定一个对象属于某一类别的概率.该方法基于一个假设,所有特征需要相互独立,即任一特征的值和其他特征的值没有关联关系. 虽然这种条件独立的假设在许多应用领域未必能很好满足,甚至是不成立的.但这种简化的贝叶斯分类器在许多实际应用中还是得到了较好的分类精度.训练模型的过程可以看作是对相关条件概率的计算,它可以用统计对应某一类别的特征的频率来估计. 朴素贝叶斯最成功的一个应用是自然语言处理领域,自然语言处理的的数据可以看做是

朴素贝叶斯-基于概率的分类方法

决策树.knn算法都是结果确定的分类算法,数据示实例最终被明确的划分到某个分类中 贝叶斯:不能完全确定数据实例应该划分到某个类,湖综合只能给出数据实例属于给定分类的概率 *引入先验概率与逻辑推理来处理不确定命题 *(扩展命题),另一种叫频数概率,从数据本身出发得到结论,不考了逻辑推理及先验知识. 朴素贝叶斯:整个形式化过程中制作最原始,最简单的假设 python文本能力:将文本划分为词向量,利用词向量对文本分类 朴素贝叶斯:选择高概率对应的类别 优点:在数据较少的情况下仍然有效,可以处理多类别问

朴素贝叶斯和逻辑回归分类

朴素贝叶斯 用p1(x, y)表示(x, y)属于类别1的概率,P2(x, y)表示(x, y)属于类别2的概率: 如果p(c1|x, y) > P(c2|x, y), 那么类别为1 如果p(c1|x, y) < P2(c2|x, y), 那么类别为2 根据贝叶斯公式: p(c|x, y) = (p(x, y|c) * p(c)) / p(x, y) (x, y)表示要分类的特征向量, c表示类别 因为p(x, y),对不同类别的数值是一样的,只需计算p(x, y|c) 和 p(c) p(c)

基于朴素贝叶斯算法的情感分类

环境 win8, python3.7, jupyter notebook 正文 什么是情感分析?(以下引用百度百科定义) 情感分析(Sentiment analysis),又称倾向性分析,意见抽取(Opinion extraction),意见挖掘(Opinion mining),情感挖掘(Sentiment mining),主观分析(Subjectivity analysis),它是对带有情感色彩的主观性文本进行分析.处理.归纳和推理的过程,如从评论文本中分析用户对"数码相机"的&qu

python实现随机森林、逻辑回归和朴素贝叶斯的新闻文本分类

实现本文的文本数据可以在THUCTC下载也可以自己手动爬虫生成, 本文主要参考:https://blog.csdn.net/hao5335156/article/details/82716923 nb表示朴素贝叶斯 rf表示随机森林 lg表示逻辑回归 初学者(我)通过本程序的学习可以巩固python基础,学会python文本的处理,和分类器的调用.方便接下来的机器学习的学习. 各个参数直观的含义: # -*- coding: utf-8 -*- """ Created on

基于TF-IDF及朴素贝叶斯的短文本分类

概括:朴素贝叶斯分类器(Naïve Bayes classifier)是一种相当简单常见但是又相当有效的分类算法,在监督学习领域有着很重要的应用.朴素贝叶斯是建立在“全概率公式”的基础下的,由已知的尽可能多的事件A.B求得的P(A|B)来推断未知P(B|A),是的有点玄学的意思,敲黑板!!! 优点: 模型训练使用TF-IDF对训练数据做词频及概率统计: 分类使用朴素贝叶斯计算所有类目的概率; 适用于电商的短文本分类,加入部分人工干预,top3准确率可达到95%左右: 分类预测完全可解释,不存在神

&amp;lt;Machine Learning in Action &amp;gt;之二 朴素贝叶斯 C#实现文章分类

def trainNB0(trainMatrix,trainCategory): numTrainDocs = len(trainMatrix) numWords = len(trainMatrix[0]) pAbusive = sum(trainCategory)/float(numTrainDocs) p0Num = ones(numWords); p1Num = ones(numWords) #change to ones() p0Denom = 2.0; p1Denom = 2.0 #c