文本表示方面
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。