1、特征工程
1.1相关定义
1.1.1 数据集
数据集的构成:特征值+目标值(有些数据集是可以没有目标值的)
机器学习开发流程:1)获取数据2)数据处理3)特征工程4)机器学习算法训练-得到模型
5)模型评估6)应用
数据集分为训练集个测试集
1.1.2特征工程介绍
特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。特征工程包括:
1)特征抽取/特征提取
2)特征预处理
3)特征降维
1.2特征抽取
1.2.1定义
特征提取就是把任意数据转化为可用于机器学习的数据特征,特征值能够更好的理解数据,特征提取包括:字典特征提取(特征离散化)、文本特征提取、图像特征提取
通俗的理解就是将我们所输入的信息生成一个的向量数据,从而使的机器能够更好的理解数据。
特征提取的语句为:sklearn.feature_extraction
1.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是字典体征提取的方法
sparse矩阵为稀疏矩阵,指的是在数值分析中绝大多数数值为零的矩阵,能够降低内存
输出结果为:
1.2.3文本特征提取
即对文本数据进行特征值化,基本语句为:
sklearn.feature_extraction.text.CountVectorizer(stop_words=[]):
CountVectorizer是属于常见的特征数值计算类,是一个文本特征提取方法
(1)处理英文
输出结果为:
需要注意的点有:
1)导入的库是sklearn.feature_extraction.text,而不是sklearn.feature_extraction
2)fit_transform会自动去除单个词,因此输出的结果中是没有i的
3)toarray是将特征值转换为二维数组
(2)处理中文
输出结果为:
(3)停用词:stop_words=[ ]
输出结果为:
即,stop_words中的词不会再出现在特征名字中。
1.3特征预处理
就是通过一些转换函数,将特征数据转化为更适合算法模型的特征数据的过。由于特征单位相差较大,很多时候不是同一个量级,所以需要对数据进行无量纲化处理,即归一化和标准化
1.3.1 归一化
将原始数据进行变化将数据映射到[0,1]之间(默认是0,1)公式为
基本语句为:sklearn.preprocessing.MinMaxScaler(feature_range=(0,1)…)
处理数据时的代码表达如下:
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
def minmax_demo():
data = pd.read_csv(‘具体数据’)
print("data:\n", data)
transform = MinMaxScaler()
data_new = transform.fit_transform(data)
print("data_new:\n", data_new)
return None
if __name__ == "__main__":
minmax_demo()
由于一组数据之中最大值和最小值很容易收到异常值的影响,从而使得归一化的结果不大稳定,实际中可以用经验常量来代替最大最小值。在不涉及距离度量、协方差计算、数据不大符合正态分布的时候,可以使用归一化法。
1.3.2 标准化法
将数据变换为均值为0方差为1范围内的数据,公式为:,在分类、聚类算法中,需要使用距离来度量相似性的时候,适合使用标准化法
基本语句为:sklearn.perprocessing.StandradScaler()
处理数据时的格式为:
from sklearn.preprocessing import MinMaxScaler, StandardScaler
def stand_demo():
data = pd.read_csv('数据')
print("data:\n", data)
transform = StandardScaler()
data_new = transform.fit_transform(data)
print("data_new:\n", data_new)
return None
if __name__ == "__main__":
stand_demo()
标准化数据处理在已有样本足够多的情况下比较稳定。
1.4特征降维
降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程。通俗的理解就是,通过一些方法提取出一些较具有代表性的随机变量,从而减少数据个数,提升效率的同时又减少信息的损耗量。
特征降维的方法包括特征选择和主成分分析。
1.4.1 特征选择
特征选择的目标就是从原有特征中找到主要特征。主要包含以下方法:
Filter过滤式:主要探究特征本身特点、特征与特征和目标值之间关联
a.方差选择法:低方差特征过滤
b.相关系数:特征与特征之间的相关程度
Embedded嵌入式:算法自动选择特征(特征与目标值之间的关联)
a.决策树:信息熵、信息增益
b.正则化:L1,L2
c.深度学习:卷积等
基本语句为:sklearn.feature_selection
1.4.2 过滤式
低方差过滤的基本语句为:from sklearn.feature_selection import VarianceThreshold
1.4.3 相关系数法
通过计算皮尔逊相关系数反应变量之间的密切程度,所以基本语句为:
from scipy.stats import pearsonr
1.5主成分分析
主成分分析就是利用原始变量的线性组合形成几个综合指标(主成分),从而在保留原始变量绝大多数信息的情况下达到降维的目的,从而简化问题的复杂性,抓住主要矛盾。
基本语句为:sklearn.decomposition.PCA(n_components=None)
需要注意的点有:(1)n_components,后面对应的是整数时,就是减少到多少特征,如果是小数就是保留百分之多少的信息
(2)PCA.fit_transform(X),X:numpy array格式的数据[N_samples, n_features],返回值:转换后指定维度的array