特征工程
业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已
what
(看看就好)
特征工程是使用专业背景只是和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。
意义:会直接影响机器学习的效果
特征工程包含内容
- 特征抽取
- 特征预处理
- 特征降维
二、特征预处理
通过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程
特征预处理API
sklearn.preprocessing
数值型数据的无量纲化
why?
为了让数据同等重要。不会因某些数值差距比较大,单一地影响(支配)最后结果。
- 归一化
1. 定义
通过对原始数据进行变换吧数据映射到(默认为[0,1])之间
2.公式
视频12 ——8:00~
用法举例
3.API
导入:
from sklearn.preprocessing import MinMaxScaler, StandardScaler
使用例子:
def minmax_demo():
"""
归一化
:return:
"""
# 1、获取数据
data = pd.read_csv("dating.txt")
data = data.iloc[:, :3]
print("data:\n", data)
# 2、实例化一个转换器类
transfer = MinMaxScaler(feature_range=[2, 3])
# 3、调用fit_transform
data_new = transfer.fit_transform(data)
print("data_new:\n", data_new)
return None
4.归一化缺陷
异常值或缺失值刚好为 最大值,最小值。那就会影响比较大了。鲁棒性(稳定性)较差
- 标准化
1.定义
通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内
2.公式
3.API
导入
from sklearn.preprocessing import StandardScaler
用例:
def stand_demo():
"""
标准化
:return:
"""
# 1、获取数据
data = pd.read_csv("dating.txt")
data = data.iloc[:, :3]
print("data:\n", data)
# 2、实例化一个转换器类
transfer = StandardScaler()
# 3、调用fit_transform
data_new = transfer.fit_transform(data)
print("data_new:\n", data_new)
return None
4. 标准化总结
在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。
三、特征降维
降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量过程。
降维 - 降低维度
ndarray
维数:嵌套的层数
0维 标量
1维 向量
2维 矩阵
3维
n维
降低的对象:二维数组
此处的降维:降低特征的个数
效果:特征与特征之间不相关
特征选择
1.定义
大家都有的特征就不合适,所有样本的共同特征就是冗余
2.方法
1. Filter 过滤式
主要探究特征本身特点,特征与特征和目标值之间关联
- 方差选择法:低方差特征过滤(方差比较小,即大家的都差不多,就可以过滤掉)
相关系数 - 衡量特征与特征之间的相关程度
2.Eembeded嵌入式
算法自动选择特征(特征与目标)
- 决策树:信息熵,信息增益
- 正则化:L1,L2
- 深度学习(卷积等)
3.模块
sklearn.feature_selection
主成分分析
2.API
- sklearn.decomposition.PCA(n_components=None)
-
将数据分解为较低维数空间
-
n_components:
- 小数 表示保留百分之多少的信息
- 整数 减少到多少特征
-
PCA.fit_transform(X)
X:numpy array格式的数据
[n_samples,n_features] -
返回值:转换后指定维度的array
-
3.例子
导入PCA
from sklearn.decomposition import PCA
def pca_demo():
"""
PCA降维
:return:
"""
data = [[2,8,4,5], [6,3,0,8], [5,4,9,1]]
# 1、实例化一个转换器类
transfer = PCA(n_components=0.95)
# 2、调用fit_transform
data_new = transfer.fit_transform(data)
print("data_new:\n", data_new)
return None