字典特征数据抽取
- 将字典中的类别数据,转换成特征数值,借助原特征的名称,组合成新的特征,并采用0/1的方式进行量化
from sklearn.feature_extraction import DictVectorizer
import numpy as np
#定义一组字典列表,用来表示多个数据样本
d1=[{'city':'北京','tep':100},
{'city':'上海','tep':80},
{'city':'深圳','tep':70}]
#实例化
dict = DictVectorizer()
data = dict.fit_transform(d1)
#转化后的特征矩阵,各个特征的名称
data.toarray(),dict.get_feature_names()
输出结果:
(array([[ 0., 1., 0., 100.],
[ 1., 0., 0., 80.],
[ 0., 0., 1., 70.]]),
['city=上海', 'city=北京', 'city=深圳', 'tep'])
文本特征提取
- CountVectorizer:对于每一个训练文本,它只考虑每种词汇在该训练文本中出现的频率
- CountVectorizer会将文本中的词语转换为词频矩阵
- 通过fit_transform函数计算各个词语出现的次数
from sklearn.feature_extraction.text import CountVectorizer
d2=["life is short,i like python","life is simple , i dislike the jupter"]
cv=CountVectorizer()
data=cv.fit_transform(d2)
data.toarray(),cv.get_feature_names() #.toarray() 是将结果转化为稀疏矩阵矩阵的表示方式
结果:
(array([[0, 1, 0, 1, 1, 1, 1, 0, 0],
[1, 1, 1, 1, 0, 0, 0, 1, 1]], dtype=int64),
['dislike',
'is',
'jupter',
'life',
'like',
'python',
'short',
'simple',
'the'])
统计文章中所有的词(jieba先进行分词)
import jieba
def cutWord():
con1=jieba.cut("扶门切思君之嘱登高望断天涯路。玲珑骰子安红豆,入骨相思知不知。世人谓我恋长安,其实只恋长安某。山有木兮木有枝")
con2=jieba.cut("一往情深深几许深山夕照深秋雨 朝暮不依长相思,白首不离长相守。只缘感君一回顾,使我思君朝与暮。衣带渐宽终不悔")
con3=jieba.cut("一往情深深几许深山夕照深秋雨。长相思兮长相忆,短相思兮无穷极。早知如此绊人心,何如当初莫相识心悦君兮君不知。")
content1=list(con1)
content2=list(con2)
content3=list(con3)
c1=" ".join(content1)
c2=" ".join(content2)
c3=" ".join(content3)
return c1,c2,c3
c1,c2,c3=cutWord()
cv=CountVectorizer()
data=cv.fit_transform([c1,c2,c3])
print(cv.get_feature_names())
data.toarray()
结果:
['一往情深', '不依', '不知', '世人', '之嘱', '人心', '何如', '入骨相思', '其实', '几许', '只恋', '只缘', '君兮君', '回顾', '夕照', '天涯', '山有', '当初', '心悦', '思君', '思君朝', '感君', '我恋', '扶门切', '无穷', '早知如此', '有枝', '望断', '朝暮', '木兮木', '深山', '玲珑', '登高', '白首', '相思', '相识', '秋雨', '红豆', '衣带渐宽终不悔', '长安', '长相', '骰子']
array([[0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 2, 0, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0],
[1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0,
0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, 0, 0, 0, 1, 0]],
dtype=int64)