机器学习学习笔记(四)之特征降维

特征降维

  • 降维是指在某些限定的条件下,降低随机变量(特征)的个数,得到一组‘不相关’的主变量的过程
  • 效果:特征与特征之间不相关

1、降维的两种方式

  • 特征选择
  • 主成分分析

2、什么是特征选择?

  • 定义:数据中包含冗余或相关变量(或称特征、属性、指标等),旨在从原有特征中找出主要特征。
  • 方法:
    • Filter(过滤式):主要探究特征本身特点、特征与特征和目标值之间关联
      方差选择法:低方差特征过滤
      相关系数
    • Embedded(嵌入式):算法自动选择特征(特征与目标值之间的关联)
      决策树:信息熵、信息增熵
      正则化:L1、L2
      深度学习:卷积等
  • 模块:sklearn.feature_selection

3、过滤式+计算相关系数

1)低方差特征过滤

删除低方差的一些特征,前面讲过方差的意义、再结合方差的大小来考虑这个方式的角度

  • 特征方差小:某个特征大多样本的值比较相近
  • 特征方差大:某个特征很多样本的值都有差别

2)API

  • sklearn.feature_selection.VarianceThreshold(threshold=0.0)
    • 删除所有低方差特征
    • Variance.fit_transform(X)
      • X:numpy array格式的数据[n_samples,n_features]
      • 返回值:训练集差异低于threshold的特征将被删除。默认值是保留所有非零方差特征,即删除所有样本中具有相同值的特征。
  • from scipy.stats import pearsonr
    • x:(N,) array_like
    • y:(N,) array_like returns:相关系数,p值

3)数据计算

from sklearn.feature_selection import VarianceThreshold
from scipy.stats import pearsonr
def variance_demo():
    '''
    过滤低方差特征
    :return:
    '''
    # 1、获取数据
    data = pd.read_csv('dating.txt')
    data = data.iloc[:,:3]
    # 2、实例化一个转换器类
    transfer = VarianceThreshold(threshold=5)
    # 3、调用fit_transform
    data_new = transfer.fit_transform(data)
    print('data_new:\n', data_new)

 	 # 计算某两个变量之间的相关系数
    r=pearsonr(data['pe_ratio'],data['pb_ratio'])
    print(r)
    return None
     
if __name__ == '__main__':
    variance_demo()

4、什么是主成分分析?

  • 定义:高维数据转化为低维数据的过程,在此过程中可能会舍弃原有数据、创造新的变量。
  • 作用:是数据维度压缩,尽可能降低原数据的维度(复杂度),损失少量信息。
  • 应用:回归分析或者聚类分析当中。

5、API

  • sklearn.decomposition.PCA(n_components = None)
    • 将数据分解为较低维空间
    • n_components:
      • 小数:表示保留百分之多少的信息
      • 整数:减少到多少特征
    • PCA.fit_transform(X) X:numpy array格式的数据[n_samples,n_features]
    • 返回值:转换后指定维度的array

6、代码

from sklearn.decomposition import PCA
def pac_demo():
    '''
    PCA降维
    :return:
    '''
    data=[[2,8,4,5],[6,3,0,8],[5,4,9,1]]
    # 1、实例化一个转换器类
    tansfer = PCA(n_components=2)
    # 2、调用fit_transform
    data_new = tansfer.fit_transform(data)
    print('data_new:\n', data_new)
    return None

if __name__ == '__main__':
    pac_demo()

降维到2维
在这里插入图片描述
降维到3维
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值