特征工程定义、意义:
特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对位置数据的模型准确性
数据的特征抽取
特征抽取,是为了将原始数据中的一些文本、字符串等数据转化为数字类型,以便进行数值化预测
sklearn特征抽取API
sklearn.feature_extraction
字典特征抽取
对字典数据进行特征值化
sklearn.feature_extraction.DictVectorizer(sparse=True,...)
- DictVectorizer.fit_transform(X)
- X: 字典或者包含字典的迭代器
- 返回值:返回sparse矩阵
- DictVectorizer.inverse_transform(X)
- X: array数组或者sparse矩阵
- 返回值:转换之前数据格式
- Dictvectorizer.get_feature_names()
- 返回类别名称
- DictVectorizer.transform(X)
- 按照原先的标准转换
文本的特征抽取
对文本数据进行特征值化
sklearn.feature_extraction.text.CountVectorizer(max_df=1.0, min_df=1,...)
- 返回词频矩阵
- CountVectorizer.fit_transform(X, y)
- X: 文本或者包含文本字符串的可迭代对象
- 返回值:返回sparse矩阵
- CountVectorizer.inverse_transform(X)
- X: array数组或者sparse矩阵
- 返回值:转换之前数据格式
- CountVectorizer.get_feature_names()
- 返回值:单词列表
调用fit_transform()方法输入数据并转换,注意返回格式,使用toarray()将sparse矩阵转换为array数组
对中文文本进行特征值化
方法一:
手动加空格,再使用CountVectorizer.fit_transform()
方法二:
jieba
import jieba
jieba.cut('我是一名程序员')
注意:jieba.cut返回值是词语生成器,想要使用CountVectorizer.fit_transform()还要进行变换
TF-IDF
如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
TF-IDF作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
sklearn.feature_extraction.text.TfidfVectorizer(stop_words=None,...)
- 返回词语的权重矩阵
- TfidfVectorizer.fit_transform(X, y)
- X:文本或者包含文本字符串的可迭代对象
- 返回值:返回sparse矩阵
- TfidfVectorizer.inverse_transform(X)
- X: array数组或者sparse矩阵
- 返回值:转换之前的数据格式
- TfidfVectorizer.get_feature_names()
- 返回值:单词列表
数据的特征预处理
通过特定的统计方法(数学方法)将数据转换成算法要求的数据
sklearn.prepocessing
数值型数据
标准缩放:归一化、标准化、缺失值
归一化:
标准化:
缺失值的处理:
类别型数据
one-hot编码
将每一个样本赋予所有特征,用0或1来表示其是否有相应的特征。
特征选择
目的:删除冗余特征(相关度高的特征)和噪声(对预测结果可能有负影响)
主要方法
Filter(过滤式):VarianceThreshold
Embedded(嵌入式):正则化、决策树
Wrapper(包裹式):非重点
过滤式特征选择API
sklearn.feature_selection.VarianceThreshold
其他特征选择方法
神经网络(待学习)
数据的降维
这里的维度表示特征的数量
sklearn中的降维API
sklearn.decomposition
PCA:主成分分析
本质:PCA是一种分析、简化数据集的技术
目的:使数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。
作用:可以削减回归分析或者聚类分析中特征的数量
其他降维方法:
线性判别分析LDA
数据降维与特征选择的区别:
降维适用于特征维度较多的场合,比如有成百上千的维度