- 目标
- 应用DictVectorizer实现对类别特征进行数值化、离散化
应用CountVectorizer实现对文本特征进行数值化
应用TfidfVectorizer实现对文本特征进行数值化
2.1特征提取
- 将任意数据(如文本或图像)转换为可用于机器学习的数字特征,特征值化是为了计算机更好的去理解数据
- 特征提取API
sklearn.feature_extraction
sklearn特征提取详细 - API含义
API 是用于构建应用程序软件的一组子程序定义,协议和工具。一般来说,这是一套明确定义的各种软件组件之间的通信方法。
2.2 字典特征提取
- 作用:对字典数据进行特征值化
sklearn.feature_extraction.DictVectorizer(sparse=True,…)
DictVectorizer.fit_transform(X) X:字典或者包含字典的迭代器返回值:返回sparse矩阵
DictVectorizer.inverse_transform(X) X:array数组或者sparse矩阵 返回值:转换之前数据格式
DictVectorizer.get_feature_names() 返回类别名称
- 流程分析
实例化类DictVectorizer
调用fit_transform方法输入数据并转换(注意返回格式)
fit_transform,fit,transform区别和作用详解
from sklearn.feature_extraction import DictVectorizer
def dict_demo():
"""
对字典类型的数据进行特征抽取
:return: None
"""
data=[{
'city':'北京','temperature':100},{
'city':'上海','temperature':60},{
'city':'深圳','temperature':30}]
transfer=DictVectorizer(sparse=False)
print('data:\n', data, type(data))
#data类型:<class 'list'>
data_new=transfer.fit_transform(data)
#transform后 FASLE时出现的情况:非稀疏矩阵——one hot编码///不写时默认为稀疏矩阵
# [[0. 1. 0. 100.]
# [1. 0. 0. 60.]
# [0. 0. 1.30.]] < class 'numpy.ndarray'>
#numpy不能用.toarray()方法: print("data_new:\n", data_new.toarray(), type(data_new))
# true时出现的情况:稀疏矩阵
# data_new1:
# (0, 1)1.0
# (0, 3) 100.0
# (1, 0) 1.0
# (1, 3) 60.0
# (2, 2) 1.0
# (2, 3) 30.0 < class 'scipy.sparse.csr.csr_matrix'>
# 能用.toarray()方法: print("data_new:\n", data_new.toarray(), type(data_new))
print('data_new:\n',data_new.toarray(),type(data_new))
print('特征名字:\n',transfer.get_feature_names())
return None
-
稀疏矩阵sparse
将非零值 按位置表示出来
节省内存 - 提高加载效率 -
应用场景:
1)pclass, sex 数据集当中类别特征比较多
1、将数据集的特征-》字典类型
2、DictVectorizer转换
2)本身拿到的数据就是字典类型 -
特征当中存在类别信息的我们都会做one-hot编码处理
2.3文本特征提取
- 对文本数据进行特征值化,
- 方法1:CountVectorizer
统计每个样本特征词出现的个数
stop_words停用的词表
关键词:在某一个类别的文章中,出现的次数很多,但是在其他类别的文章当中出现很少 - 方法2:TfidfVectorizer
TF-IDF - 重要程度
sklearn.feature_extraction.text.CountVectorizer(stop_words=[])
返回词频矩阵
CountVectorizer.fit_transform(X) X:文本或者包含文本字符串的可迭代对象 返回值:返回sparse矩阵
CountVectorizer.inverse_transform(X) X: