sklearn做文本数据分析中遇到的问题

文本表示方面

CountVectorizer()类
使用

from sklearn.feature_extraction.text import CountVectorizer
vec=CountVectorizer()#sklearn函数的通用写法
corpus = [
     'This is the first document.',
    'This is the second second document.',
   'And the third one.',
   'Is this the first document?']
X = vec.fit_transform(corpus)#放入语料进行学习生成字典
#放入的语料要求用空格分开每一个字符串就是一条语句,参考英语的书写格式
a=X.toarray()#以词频矩阵的形式输出

在这里插入图片描述
x为一个复杂的数据结构主要为(a,b) x这样的形式a为第几个语句,b为在字典个中的位置 x为在这个语句中出现的次数,这里只显示出现的。

vec.get_feature_names()#输出学习之后的字典,如果不学习也可以自己指定
 ['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this']

通过改变vec中的vocabulary_来自己定义分词矩阵字典
在这里插入图片描述
在这里插入图片描述
一个字典形式的数据后面字典操作就可以了

建立vocabulary后可以用transform()来对新文本进行矩阵化了

vec.transform(['this is']).toarray()
[[0, 0, 0, 1, 0, 0, 0, 0, 1]]
vec.transform(['too bad']).toarray()
[[0, 0, 0, 0, 0, 0, 0, 0, 0]]

sklearn学习后的使用

from sklearn import naive_bayes
#导入贝叶斯分类器
NBmodel = naive_bayes.MultinomialNB()
NBmodel.fit(x_tr,y_tr)
jg=NBmodel.predict(x_test)
gl=NBmodel.predict_proba(x_test)#在画ROC曲线时常用

#predict是训练后返回预测结果,是标签值。
predict_proba返回的是一个 n 行 k 列的数组, 第 i 行 第 j 列上的数值是模型预测 第 i 个预测样本为某个标签的概率,并且每一行的概率和为1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值