1.方法
- Filter(过滤式):主要探究特征本身特点、特征与特征和目标值之间的关联
- 方差选择法:低方差特征过滤
- 相关系数
- Embedded(嵌入式) :算法自动选择特征(特征与目标值之间的关联)
- 决策树:信息熵、信息增益
- 正则化:L1、L2
- 深度学习:卷积等
2.过滤式
删除低方差的一些特征
- 特征方差小:某个特征大多样本的值比较相近
- 特征方差大:某个特征很多样本的值都有差别
3.低方差特征代码
import pandas as pd
from sklearn.feature_selection import VarianceThreshold
#低方差特征过滤
data=pd.read_csv('E:\学习\iris.csv')
#获取前三列
data=data.iloc[:,1:4]
#实例化一个转换器类
transfer=VarianceThreshold(threshold=1)
#调用fit_transform
data_new=transfer.fit_transform(data)
print(data)
print(data_new)
print(data_new.shape)
原数据三个特征值
进行低方差过滤,设置方差临界值threshold为1,低于临界值的特征值会被删除
原维度为3,降维后为1
4.相关系数
皮尔逊相关系数-反映变量之间相关关系密切程度的统计指标
- 公式
- 特点
- 当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为高度线性相关
5.相关性运用代码
import pandas as pd
from scipy.stats import pearsonr
from sklearn.feature_selection import VarianceThreshold
#低方差特征过滤
data=pd.read_csv('E:\学习\iris.csv')
#获取前三列
data=data.iloc[:,1:5]
#实例化一个转换器类
transfer=VarianceThreshold(threshold=1)
#调用fit_transform
data_new=transfer.fit_transform(data)
#计算两个变量之间的相关系数
print(data)
r=pearsonr(data['Sepal_Length'],data['Petal_Length'])
print('相关性\n',r)
结果展示如下
Sepal_Length,Petal_Length相关系数为0.87,为高度线性相关
6.主成分分析
- 定义:高维数据转化为低维数据的过程,在此过程中可能会舍弃原有数据、创造新的变量
- 作用:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量数据
from sklearn.decomposition import PCA
#PCA降维
data=[[2,8,4,5],[6,3,0,8],[5,4,9,1]]
#实例化一个转换类
transfer=PCA(n_components=2)
#调用fit_transform
data_new=transfer.fit_transform(data)
print('原维度\n',data)
print('data_new\n',data_new)
n_components为整数表示降维的维度数,小数的话表示保留原特征的百分比