sklearn调包侠之朴素贝叶斯

简介: 文档处理朴素贝叶斯算法常用于文档的分类问题上,但计算机是不能直接理解文档内容的,怎么把文档内容转换为计算机可以计算的数字,这是自然语言处理(NLP)中很重要的内容。
img_d9b2abfffccc06efaffca1e1bfccee73.png

文档处理

朴素贝叶斯算法常用于文档的分类问题上,但计算机是不能直接理解文档内容的,怎么把文档内容转换为计算机可以计算的数字,这是自然语言处理(NLP)中很重要的内容。

TF-IDF方法

今天我们简单讲解TF-IDF方法,将文本数据转换为数字。TF-IDF是一个统计方法,用来评估单个单词在文档中的重要程度。
TF表示词频,对一个文档而言,词频就是词在文档出现的次数除以文档的词语总数。例如:一篇文档有1000个字,“我”字出现25次,那就是0.025;“Python”出现5次就是0.005。
IDF表示一个词的逆向文档频率指数。可以由总文档数除以包含该词出现的文档数目,然后取对数。例如:有10000个文档,“Python”只出现了10篇文章,则IDF=log(10000/10)=3;“我”字在所有文档都出现过,则IDF为0。
词频和权重指数相乘,就是词在文档中的重要程度。可以看出,词语的重要性随它在文档中出现的次数呈正比例增加,但同时会随着它在语料库中出现的频率呈反比下降。

实战——文档分类

数据导入和TF-IDF

在sklearn中,通过load_files方法可以将子目录的名字转换为文档类别(target),将目录所有文档读入内存(data)。

from sklearn.datasets import load_files
news_train = load_files('data/379/train')
img_5e1c561db6cb27d0b075f1b5623faedd.png
img_33a62ad1e1697bf87ecb1fb67dc737a6.png

通过TfidfVectorizer方法,将文档数据进行转换:

from sklearn.feature_extraction.text import TfidfVectorizer

vect = TfidfVectorizer(encoding='latin-1')
X_train = vect.fit_transform(news_train.data)
模型训练

朴素贝叶斯算法使用sklearn.naive_bayes模块中的MultinomialNB方法。

from sklearn.naive_bayes import MultinomialNB
y_train = news_train.target
clf = MultinomialNB(alpha=0.0001)
clf.fit(X_train, y_train)
train_score = clf.score(X_train, y_train)

# result 
# 0.99787556904400609
模型评估

简单的,可以通过score方法来评估整个模型的精度。

news_test = load_files('data/379/test')
X_test = vect.transform(news_test.data)
y_test = news_test.target

clf.score(X_test, y_test)

# result 
# 0.90881728045325783

我们也可以通过classification_report方法来查看全方位的评价。

from sklearn.metrics import classification_report

pred = clf.predict(X_test)

print(classification_report(y_test, pred, target_names=news_test.target_names))
img_0fa27120617c1187b24f172d6eeff972.png

也可以查看我们的混淆矩阵。

from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, pred)

print(cm)
img_fb73dd55ec332d4994e59425b08eee2a.png
相关文章
|
6月前
|
机器学习/深度学习 数据挖掘 Python
Python数据分析 | 泰坦尼克逻辑回归(下)
Python数据分析 | 泰坦尼克逻辑回归
40 1
|
6月前
|
机器学习/深度学习 Python
python实现判别分析
python实现判别分析
73 1
|
6月前
|
机器学习/深度学习 数据可视化 算法
R语言中的SOM(自组织映射神经网络)对NBA球员聚类分析
R语言中的SOM(自组织映射神经网络)对NBA球员聚类分析
|
6月前
|
机器学习/深度学习 数据挖掘 BI
Python数据分析 | 泰坦尼克逻辑回归(上)
Python数据分析 | 泰坦尼克逻辑回归
78 0
贝叶斯算法人生
贝叶斯算法人生
|
机器学习/深度学习 算法 数据挖掘
瞎聊机器学习——DBSCAN算法
瞎聊机器学习——DBSCAN算法
|
机器学习/深度学习 Python
|
机器学习/深度学习 自然语言处理 数据可视化
scikit-learn的5个秘密武器
虽然scikit-learn在机器学习领域很重要,但是很多人并不知道利用这个库中的一些强大的功能。本文将介绍scikit-learn中5个最有用的5个隐藏的瑰宝,充分利用这些秘密武器将有效提高你的机器学习处理的效率!
277 0
scikit-learn的5个秘密武器
|
机器学习/深度学习 算法 JavaScript
sklearn调包侠之逻辑回归
本系列教程为《机器学习实战》的读书笔记。首先,讲讲写本系列教程的原因: 第一,《机器学习实战》的代码由Python2编写,有些代码在Python3上运行已会报错,本教程基于Python3进行代码的修订. 第二:之前看了一些机器学习的书籍,没有进行记录,很快就忘记掉了,通过编写教程也是一种复习的过程. 第三,机器学习相对于爬虫和数据分析而言,学习难度更大,希望通过本系列文字教程,让读者在学习机器学习的路上少走弯路。
|
机器学习/深度学习 算法
sklearn调包侠之支持向量机
算法原理 对于支持向量机原理,可参考该系列博客(https://www.cnblogs.com/pinard/p/6111471.html)。
1517 0