系列文章目录
机器学习(一) -- 概述
机器学习(二) -- 数据预处理(1-3)
机器学习(三) -- 特征工程(1-2)
未完待续……
目录
系列文章目录
前言
三、特征预处理
1.1、无量纲化
2、归一化
2.2.1、线性归一化
2.2.1、***最大最小均值归一化
2.2.1、***最大绝对值归一化
3、标准化
四、特征降维
2、特征选择
2.4、低方差特征过滤
2.5、皮尔逊相关系数(Pearson Correlation Coefficient)
3、主成分分析(PCA)
机器学习(三) -- 特征工程(1)
前言
tips:这里只是总结,不是教程哈。
“***”开头的是给好奇心重的宝宝看的,其实不太重要可以跳过。
此处以下所有内容均为暂定,因为我还没找到一个好的,让小白(我自己)也能容易理解(更系统、嗯应该是宏观)的讲解顺序与方式。
第一文主要简述了一下机器学习大致有哪些东西(当然远远不止这些),对大体框架有了一定了解。接着我们根据机器学习的流程一步步来学习吧,掐掉其他不太用得上我们的步骤,精练起来就4步(数据预处理,特征工程,训练模型,模型评估),其中训练模型则是我们的重头戏,基本上所有算法也都是这一步,so,这个最后写,先把其他三个讲了,然后,在结合这三步来进行算法的学习,兴许会好点(个人拙见)。
三、特征预处理
1、定义
通过一些转换函数,将特征数据转换成更适合算法模型的特征数据的过程。
1.1、无量纲化
也称为数据的规范化,是指不同指标之间由于存在量纲不同致其不具可比性,故首先需将指标进行无量纲化,消除量纲影响后再进行接下来的分析。
数值数据的无量纲化:主要有两种归一化、标准化
为什么要进行归一化/标准化?
特征的单位或者大小相差较大,或者某特征的方法相比其他的特征要大出几个数量级,容易影响(支配)目标结果,使得一些算法无法学习到其它的特征
特征预处理API
sklearn.preprocessing
2、归一化
tips:归一化也叫离差标准化,(标准化,也叫标准差标准化,Z-Score标准化)
2.1、定义
将特征缩放到一个特定的范围,通常是[0, 1]。
2.2、分类和公式
2.2.1、线性归一化
这是最常用的归一化,也叫最大-最小归一化或最大-最小规范化。(后面也是用的这种哈)
2.2.1、***最大最小均值归一化
2.2.1、***最大绝对值归一化
2.3、API
sklearn.preprocessing.MinMaxScaler
导入:
from sklearn.preprocessing import MinMaxScaler
2.4、实例
# 2、实例化一个转换器类
transform = MinMaxScaler()
# transform = MinMaxScaler(feature_range=[2,3])# 3、调用fit_transform
data_new = transform.fit_transform(data)print("data_new:\n", data_new)
转换器中添加feature_range=[2,3]属性,将缩放范围变为[2,3]。
3、标准化
2.1、定义
将特征缩放为均值为0,标准差为1的分布。
2.2、公式
,其中μ是均值,S是标准差
2.3、API
sklearn.preprocessing.StandardScaler
导入:
from sklearn.preprocessing import StandardScaler
2.4、实例
# 2、实例化一个转换器类
transform = StandardScaler()
#transform = StandardScaler(feature_range=[2,3])# 3、调用fit_transform
data_new = transform.fit_transform(data)print("data_new:\n", data_new)
4、***小数定标标准化
思想:通过移动数据的小数点位置来缩放特征值,使其落在一个较小的范围内,从而提高模型训练的效率和准确性。
4、***other
其实还有其他的,指数化,对数化,离散化(等频(等深)分箱、等距(等宽)分箱),正规化等。
四、特征降维
1、定义
降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程。
降维的两种方式:特征选择、主成分分析(可以理解一种特征提取的方式)
2、特征选择
2.1、定义
数据中包含冗余或相关变量(或称特征、属性、指标等),旨在从原有特征中找出主要特征。
2.2、方法
Filter过滤式:
主要探究特征本身特点、特征与特征和目标值之间关联
方差选择法:低方差特征过滤
相关系数:特征与特征之间的相关程度
Embedded嵌入式:
算法自动选择特征(特征与目标值之间的关联)
决策树:信息熵、信息增益
正则化:L1,L2
深度学习:卷积等
2.3、API
sklearn.feature_selection
2.4、低方差特征过滤
删除低方差的一些特征
- 特征方差小:某个特征大多样本的值比较相近
- 特征方差大:某个特征很多样本的值都有差别
API
sklearn.feature_selection.VarianceThreshold
导入:
from sklearn.feature_selection import VarianceThreshold
# 2、实例化一个转换器类
#transform = VarianceThreshold()
transform = VarianceThreshold(threshold=10)# 3、调用fit_transform
data_new = transform.fit_transform(data)print("data_new\n", data_new,' \n data_new.shape:', data_new.shape)
训练集差异低于threadshold的特征将被删除。默认值是保留非零方差特征,即删除所有样本中具有相同值的特征
2.5、皮尔逊相关系数(Pearson Correlation Coefficient)
反映变量之间相关关系密切程度的统计指标.
2.5.1、公式
相关系数的值介于-1与+1之间:
当r>0时,表示两变量正相关;
r<0时,两变量为负相关;
当|r|=1时,表示两变量为完全相关;
当r=0时,表示两变量间无相关关系;
当0<|r|<1时,表示两变量存在一定程度的相关。且|r|越接近1,两变量间线性关系越密切;|r|越接近0,表示两变量的线性相关越弱。
一般可按三级划分:|r|<0.4为低度相关;0.4<=|r|<0.7为显著相关;0.7<=|r|<1为高维线性相关
2.5.2、实例
API
from scipy.stats import pearsonr
from sklearn.feature_selection import VarianceThreshold
# 2、实例化一个转换器类
#transform = VarianceThreshold()
transform = VarianceThreshold(threshold=10)# 3、调用fit_transform
data_new = transform.fit_transform(data)print("data_new\n", data_new,' \n data_new.shape:', data_new.shape)# 计算两个变量之间的相关系数
r = pearsonr(data["pe_ratio"],data["pb_ratio"])print("相关系数:\n", r)
前面的数为相关系数。
3、主成分分析(PCA)
3.1、定义
旨在利用降维的思想,把多指标转化为少数几个综合指标(即主成分),其中每个主成分都能够反映原始变量的大部分信息,且所含信息互不重复。
作用:是数据维数的压缩,尽可能降低原数据的维数(复杂度),损失少量信息
3.2、实例
API
sklearn.decomposition.PCA
导入:
from sklearn.decomposition import PCA
# 1、实例化一个转换器类
transform = PCA(n_components=2) # 4个特征降到2个特征# 2、调用fit_transform
data_new = transform.fit_transform(data)print("data_new\n", data_new)# 1、实例化一个转换器类
transform2 = PCA(n_components=0.95) # 保留95%的信息# 2、调用fit_transform
data_new2 = transform2.fit_transform(data)print("data_new2\n", data_new2)