机器学习之短信、邮件、新闻分类实战学习


操作平台: windows10, python37, jupyter
数据下载: https://www.lanzous.com/iaghe8f



短信分类部分

1、导入数据

import pandas as pd
# BernoulliNB 二分布,硬币,正面反面,概率差不多
# MultinomialNB 投掷筛子,多分布,6个面概率差不多
from sklearn.naive_bayes import GaussianNB,MultinomialNB,BernoulliNB

1.1、读取数据“SMSSpamCollection”

#读取数据并命名表头
data = pd.read_csv('../data/SMSSpamCollection',sep = '\t',header=None,names=['target','message'])
data.shape #结果为(5572, 2)
data.head()
target message
0 ham Go until jurong point, crazy.. Available only ...
1 ham Ok lar... Joking wif u oni...
2 spam Free entry in 2 a wkly comp to win FA Cup fina...
3 ham U dun say so early hor... U c already then say...
4 ham Nah I don't think he goes to usf, he lives aro...

结果分析: 短信就只有两种类型,ham表示正常的短信,spam表示垃圾短信。



1.2、确定研究对象

X = data['message'] #提取消息
y = data['target'] #提取标签
X.unique().size #统计去重后的大小
5169

结果分析: 原数据中有5572条信息,不重复的有5169条,可以不用去重,它不会影响训练的模型。



2、统计词频

2.1、文本向量化处理

# 统计词频,文本向量化处理
from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer() #可以设置停用词stop_words='english'
X_cv = cv.fit_transform(X)
X_cv
<5572x8713 sparse matrix of type '<class 'numpy.int64'>'
	with 74169 stored elements in Compressed Sparse Row format>

查看向量化结果:

print(X_cv)
  (0, 8324
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值