【机器学习】特征提取

字典特征数据抽取

  • 将字典中的类别数据,转换成特征数值,借助原特征的名称,组合成新的特征,并采用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)
发布了5 篇原创文章 · 获赞 0 · 访问量 118

猜你喜欢

转载自blog.csdn.net/weixin_44727383/article/details/104522859