机器学习-特征降维与相关系数

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)

原数据三个特征值

机器学习-特征降维与相关系数_第1张图片

进行低方差过滤,设置方差临界值threshold为1,低于临界值的特征值会被删除

原维度为3,降维后为1

机器学习-特征降维与相关系数_第2张图片

4.相关系数

皮尔逊相关系数-反映变量之间相关关系密切程度的统计指标

  • 公式

机器学习-特征降维与相关系数_第3张图片

  • 特点 
  1. 当r>0时,表示两变量正相关,r<0时,两变量为负相关
  2. 当|r|=1时,表示两变量为完全相关,当|r|=0时 ,表示两变量无相关关系
  3. 当0<|r|<1时,表示两变量存在一定程度的相关。且|r|越接近1,两变量间线性关系越密切,且|r|越接近0,两变量间线性关系越弱
  4. 一般按三级划分,|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)

结果展示如下

机器学习-特征降维与相关系数_第4张图片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为整数表示降维的维度数,小数的话表示保留原特征的百分比

你可能感兴趣的:(机器学习,人工智能,深度学习)