什么是特征工程
比赛会有成绩的提交,跟算法与数据清洗都有关系,也就是特征工程
数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已
特征工程是使用专业背景知识技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。
意义:会影响机器学习的效果
pandas用来作数据清洗 数据缺失值处理
sklearn 特征工程
特征提取/抽取
比如上面这个文章,我想通过这个文章作为训练集,那么应该怎么办呢?
机器学习算法 ——统计方法 —— 数学公式
文本类型转换成数值如何转
类型 转换数值
特征提取
将任意数据(文本或者图像)转换为可用于机器学习的数字特征
那么在特征提取,我们就要需要用的sklearn中的这个类featur_extraction
字典特征提取
vector 数学向量 物理矢量
矩阵 matrix 二维数组
用一维数组来存储向量
过程,如何将这个文本的样本转换成矩阵的向量集
当特征中类别的时候,公平的表示。类别特征,one-hot编码
def dict_demo():
"""
字典特征抽取
:return:
"""
data = [{'city':'北京','temperature':100},{'city':'上海','temperature':60}, {'city':'深圳','temperature':30}]
#1) 实例化一个转换器类
transfer = DictVectorizer()
#2)调用fit_transform()
data_new = transfer.fit_transform(data)
print(data_new)
return None
fit_transfer()函数返回的是一个sparse矩阵
稀疏矩阵
如果我们想看到像这样的形式
要在实例化的时候添加这个sparse参数
稀疏矩阵:将非0值表示出来
表示1.0在第0行 第一列 节省内存 提高加载效率
以此类推
one-hot编码
应用场景:
1)数据集中类别特征比较多
将数据集的特征转换成字典类型
DictVectorizer转换
2)本身达到的字典类型
文本特征提取 单词作为特征 其实有句子,短语,单词,字母 特征:特征词
方法1:CountVertorizer
这个文本特征提取,不像字典特征提取一样。不可以在实例化的时候,生成一个sparse=False
这样是不可以,所以要给他转换成一个数组的形式,这样就会变成这样的一个二维数组
这个文本抽取:就是统计这个样本出现的次数 统计每个样本特征词出现的个数
当我们使用中文进行实验,发现这个方法把两个句子作为特征。这样不太好
stop_words 停用的
对于分类没有用的时候,以列表的形式
停用词表
中文文本的特征提取
利用jieba.cut的结果是返回一个生成器。