zoukankan      html  css  js  c++  java
  • P12 数据的降维及特征选择

    https://www.bilibili.com/video/BV184411Q7Ng?p=12

     注解:

    1. 这里了的降维不是指数组的维度,不是1维、2维、3维那个维。

     注解:

    1. 这个是3维的特征转换为2维的特征。
    2. 降维就是把样本的特征的数量减少,比如在分辨男女的时候,把每个样本里面的特征肤色去掉。

     

     

     

     注解:

    1. 特征2和特征3是可与去掉的,不然突然增加训练成本。

     注解:

    1. 过滤式就是把低方差的特征通过设定方差阈值过滤掉。

     

     注解:

    • 如果方差为0或者接近于0,则考虑把这个特征拿掉,因为它没有波动,反映不出样本之间的差别,区分不开不同的样本。

     

     注解:

    1. 调用函数,把第1列特征和第3列特征去掉。
    from sklearn.feature_selection import VarianceThreshold
    
    
    
    
    
    
    
    
    
    def var():
        """
        删除低方差的特征
        :return:
        """
        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()

    运行结果:

     注解:

    1. 把相同的特征都删掉了,删掉了特征向量[0,0,0]和特征向量[3,3,3].
    from sklearn.feature_selection import VarianceThreshold
    
    
    
    
    
    
    
    
    
    def var():
        """
        删除低方差的特征
        :return:
        """
        var=VarianceThreshold(threshold=1.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()

    运行结果:

     

     注解:

    1. 如果是方差阈值设为1,则特征向量[2,1,1]也被去掉了。
    2. 一般方差的阈值可以是[0,10]之间。

     

     

     

     注解:

    1. 一张图片的特征向量是可能达到上万的。

     注解:

    1. 用2维表示3维的东西。
    2. 图片1和2看不出来是洒水壶,图片3勉强能看出来,图片4(二维)最能表示洒水壶。

     注解:

    1. 如果特征向量本来就很少,比如10个左右,是没有必要使用PCA进行特征压缩的。

     

     注解:

    1. 特征向量1和特征向量50存在一个大约2倍的关系,这就是特征向量之间的相关性。

     注解:

    1. 如果要压缩成一维的话,可以向x轴或者y轴投影,这样数据点就会由于5个变成3个,这个不是PCA。
    2. PCA是找到一个直线,让样本点投影到这条直线上,切尽可能的减少样本量的损失。如,可以找到一条斜线,投影后,5个样本点还是5个样本点,只不过数据发生了变化,数据量没有发生变化。

     

     

     

     

     

     注解:

    1. 参数n_components一般填90%~95%之间的一个数字,表示用PCA(主成分分析)进行特征压缩的时候,保留95%的特征量,一般没有一个最优值,需要不断的调试才能得出最优值。
    2. 参数n_components也可以填一个整数,表示减少到的特征数量,但是一般并不知道需要减少到多少个特征数。

    代码演示:

    from sklearn.decomposition import PCA
    
    
    
    
    def pca():
        """
        主成分分析
        :return:
        4个样本,每个样本3个特征
        """
        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()

    运行结果:

     注解:

    1. 4个样本3个特征,变成了3个样本2个特征。
    2. 当然这两个特征没有实际意义,只是举的数字例子。
    3. 特征数量还剩大约90%,因为调用主成分分析函数的时候,参数选择的就是保留90%的特征数。
  • 相关阅读:
    day18:json模块&time模块&zipfile模块
    Color Changing Sofa Gym
    Gym
    Gym
    Java的awt包的使用实例和Java的一些提示框
    分组背包 例题:hdu 1712 ACboy needs your help
    UVA1401 Remember the Word 字典树维护dp
    CodeForces833 B. The Bakery 线段树维护dp
    hdu4719 Oh My Holy FFF 线段树维护dp
    Little Difference Gym
  • 原文地址:https://www.cnblogs.com/yibeimingyue/p/14209966.html
Copyright © 2011-2022 走看看