降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组‘不相关’的主变量的过程
处理对象:二维数组(【n_sample,n_feature】)
相关特征:如相对温度与降雨量的相关,会增多许多冗余信息
本文主要是过滤低方差特征,过滤强相关性特征,主成分分析
- 特征选择
1.1 定义:数据中包含冗余或者相关变量(或称特征,属性,指标等),旨在从原有特征中找出主要特征
1.2 方法
Filter(过滤式):主要探究特征本身特点,特征与特征和目标值之间关联
++方差选择法:低方差特征过滤(如所有的鸟都有爪子,方差为0)
++相关系数:特征与特征之间的相关程度
Embedded(嵌入式):算法自动选择特征(特征与目标之间的关联)
++决策树:信息熵
++正则化:L1,L2
++深度学习:卷积等
1.3 模块
sklearn.feature_selection
1.4 应用
如上图所示数据:数学成绩几个人都差不多,所以可以过滤这种低方差特征
import pandas as pd
from sklearn.feature_selection import VarianceThreshold
def demo1():
#1.读取数据
data = pd.read_csv('data1.txt',delimiter=',')
#2.定义转换器类
transfer = VarianceThreshold(threshold=5)
#3.调用fit_transform
data_new = transfer.fit_transform(data)
print(data_new)
if __name__ == "__main__":
demo1()
2.相关系数
2.1 皮尔逊系数定义:反应变量之家的关系密切程度
取值范围:【-1,1】,正负表示正相关和负相关,|r|越接近1,表示变量相关程度越强,
2.2 API
2.3 案例
from scipy.stats import pearsonr
import pandas as pd
def demo1():
data = pd.read_csv('data1.txt',delimiter=',')
r = pearsonr(data['math'],data['eng'])
print(r)
if __name__ == "__main__":
demo1()
3.主成分分析
3.1.定义:高维数据转化为低维数据的过程中可能会舍弃原有数据,创造新的变量
3.2 作用:是数据维数压缩,尽可能降低原数据的维度(复杂度),损失少量的信息
如下图所示,将下图中的五个点从二维变到一维,如果映射到x轴,就只剩3个点,损失了2个点,但是像下图的做法就保存了5个点的信息
3.3 API
3.4 小例子
如上图所示,这里有3个样本,3个特征,通过主成分分析将其转换成2个特征
from sklearn.decomposition import PCA
import pandas as pd
def demo1():
data = pd.read_csv('data1.txt',delimiter=',')
transfer = PCA(n_components=2)
data_new = transfer.fit_transform(data)
print(data_new)
if __name__ == "__main__":
demo1()
结果: