sklearn特征抽取API

sklearn.feature_extraction

1.字典特征抽取
应用DictVectorizer实现对字典数据类别特征进行数值化、离散化

sklearn.feature_extraction.DictVectorizer
  • DicVectorizer语法
    • DicVectorizer(sparse=True)
      • DictVectorizer.fit_transform(X)
        • X:字典或者包含字典的迭代器
        • 返回值:返回sparse矩阵
    • DictVectorizer.inverse_transform(X)
      • X:array数组或者sparse矩阵
      • 返回值:转换之前数据格式
    • DictVectorizer.get_feature_names()
      • 返回类别名称:DictVectorizer.transform(X)
      • 按照原先的标准转换

流程:
1.实例化类DictVectorizer
2.调用fit_transform方法输入数据并转换
返回格式:sparse矩阵

from sklearn.feature_extraction import DictVectorizer
dict = DictVectorizer()
dict.fit_transform([{'city':'北京'}])#注意X的输入格式 
print(dict.get_feature_names())    

3.调用get_feature_names()方法返回类别名称

2.应用CountVectorizer实现对文本特征进行数值化

sklearn.feature_extraction.text.CountVectorizer

CountVectorizer语法

  • CountVectorizer()
    • 返回:词频矩阵
  • CountVectorizer.fit_transform(X)
    • X:文本或者包含文本字符串的可迭代对象
    • 返回值:返回sparse矩阵
  • CountVectorizer.inverse_transform(X)
    • X:array数组或者sparse矩阵
    • 返回值:转换之前数据格式
  • CountVectorizer.get_feature_names()
    • 返回值:单词列表

流程:
1.实例化CountVectorizer
2.调用fit_transform方法
由于导入的数据X为[‘str1’,‘str2’,‘str3’],中文字符串每个字符串都要以空格分隔
导入jieba进行分词jieba.cut() 填入字符串
统计每篇文章每个词的出现次数
单个字母或者汉字不统计(没有分类依据)
返回格式:sparse矩阵 运用toarray转化为数组
3.调用get_feature_names()方法返回单词列表
返回所有文章中的所有词,重复的只看做一次

from sklearn.feature_extraction.text import CountVectorizer
import jieba
vector = CountVectorizer()
a1 = jieba.cut('机器学习大数据深度学习强化学习数据分析')
b1 = list(a1)
res = vector.fit_transform(b1) #填入要训练的列表
print(vector.get_feature_names())
print(res.toarray())

3.应用TfidfVectorizer实现对文本特征进行数值化

sklearn.feature_extraction.text.TfidfVectorizer

tf idf
Tf:词的频率 出现的次数
idf:逆文档频率 log(总文档数量/词出现的文档数量)
tf*idf 重要性

  • TfidfVectorizer(stop_words=None,…)
    • X:文本或者包含文本字符串的可迭代对象
    • 返回值:返回sparse矩阵
  • TfidfVectorizer.inverse_transform(X)
    • X:array数组或者sparse矩阵
    • 返回值:转换之前数据格式
  • TfidfVectorizer.get_feature_names()
    • 返回值:单词列表
from sklearn.feature_extraction.text import TfidfVectorizer
import jieba
tfidf = TfidfVectorizer()
cutword1 = jieba.cut('人生苦短')
cutword2 = jieba.cut('我不喜欢蟒蛇')
c1 = list(cutword1)
c2 = list(cutword2)
b1 = ' '.join(c1)
b2 = ' '.join(c2)
data = tfidf.fit_transform([b1,b2])
print(tfidf.get_feature_names())
print(data.toarray())

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐