机器学习:数据降维(特征选择和主成分分析)

数据降维

这里需要注意,我们当前说的降维是特征的数量,比如说四个特征我们可以说是四维特征,不是数组的降维。

数据降维就是把特征数量进行减少。

数据降维方式:
1.特征选择
2.主成分分析

1.特征选择:
特征选择:选择部分特征当做机器学习的相关数据。

特征选择原因:
冗余:部分特征的相关度高,容易消耗计算性能
噪声:部分特征对预测结果有负影响

特征选择的主要方法:
主要方法(三大武器):Filter(过滤式):VarianceThreshold
Embedded(嵌入式):正则化、决策树
Wrapper(包裹式)

过滤式:对方差进行筛选,从发差的大小考虑这个特征的数据情况

过滤式:API: sklearn-learn.feature.VarianceThreshold

VarianceThreshold语法:

-VarianceThreshold(threshold = 0.0)
删除所有低方差特征

-Variance.fit_transform(X,y)
X:numpy array格式的数据[n_samples,n_features]
返回值:训练集差异低于threshold的特征将被删除。
默认值是保留所有非零方差特征,即删除所有样本
中具有相同值的特征。

from sklearn.feature_selection import VarianceThreshold
def var():
    """特征选择-删除低方差特征"""
    #默认threshold=0.0 删除相同数据特征
    var=VarianceThreshold(threshold=0.0)
    data=var.fit_transform([[0, 2, 0, 3],
                            [0, 1, 4, 3],
                            [0, 1, 1, 3]]
)
    print(data)
    return None
if __name__ == '__main__':
    var()

在这里插入图片描述
默认删除了第一列和最后一列。

2.主成分分析(PCA)

本质:PCA是一种分析,简化数据集的技术。

目的:是数据维数压缩,尽可能尽可能降低原数据的维数(复杂度),损失少量信息。

作用:可以消减回归分析或聚类分析中特征的数量。

PCA:特征数量达到上百的时候,考虑数据简化。这就会导致数据的改变,那么特征数量也会减少。
PCA理解
在这里插入图片描述比如说看到第一张照片我们可能不能分辨出是不是洒水壶。第二第三张可能看出来一点但是不能确定,最后一张我么就可以知道是洒水壶。我们再用一个更低维度的东西去表示一个高维度的东西的时候,可能产生信息的差异,所以就是应为信息的差异,所以进行降维,降低了维数但是数据代表的信息没有什么损耗。

高纬度容易出现的问题:

特征之间通常是相关的。有的数据进行缩放过后可能相似。所以必须使用PCA。

PCA理解:
数据:
(-1,-2)(-1, 0)( 0, 0)( 2, 1)( 0, 1)
这里需要自己动手画一个坐标轴,然后看到坐标轴上面有五个点,这是一个二维的数据,如果我们把它降维到跟x轴平行,就发现五个数据变成了3个,数据发生了损耗。y轴同理。但是如果我们把数据降维到x=y这条直线上发现数据没有损耗或者相比之前损耗减少了。这就是PCA的原理,可以减少损耗。
在这里插入图片描述
这里可以大概看一下公式(不是重点):
在这里插入图片描述
比如说人脸识别:
在这里插入图片描述
通过数据降维转换
在这里插入图片描述
PCA语法:
-PCA(n_components=None)
n_components:可以是小数0~1,如果说取0.6 就是保留60%的信息,人为可控指标。经验指定范围:90%-95%
n_components:可以使整数,1,2,3,…减少到多少特征数量(一般不用
将数据分解为较低维数空间

-PCA.fit_transform(X)
X:numpy array格式的数据[n_samples,n_features]
返回值:转换后指定维度的array

from sklearn.decomposition import PCA
def pca():
    """主成分分析进行特征降维"""
    pca=PCA(n_components=0.9)
    data=pca.fit_transform([[2,8,4,5],
                            [6,3,0,8],
                            [5,4,9,1]]
)
    print(data)
    return None
if __name__ == '__main__':
    pca()

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值