特征選擇與特征降維


# coding = utf-8
from sklearn.feature_selection import VarianceThreshold
from sklearn.decomposition import PCA
'''
數據降維:特征的數量減少(即columns減少)
    1、特征選擇原因:
        1、數據冗余:部分特征的相關度高,容易消耗計算機性能
        2、噪聲:部分特征對預測結果有影響
    2、特征選擇
        方式1:
            Filter(過濾式 VarianceThreshold): 從方差大小考慮樣本的數據情況
               Api:VarianceThreshold.fit_transform()
            Embedded(嵌入式):正則化、決策樹
            Wrapper(包裹式)
            其他方式:神經網絡
        方式2:
            主成分分析(PCA):使得數據會改變,同時特征維度也減少
                公式:Y =PX,其中Y為降維后數據,P為映射矩陣,X為原始矩陣
                作用:可以削減回歸分析或者聚類分析中特征的數量
                API: PCA(n_components=None) ,n_components取值范圍為(90%-95%) 將數據分解為較低維數空間
                    PCA.fit_transform(X)       
                        X:numpy array格式的數據[n_samples,n_features]
                        返回值:轉換后指定維度的array
            其他降維方法:線性判別法
                
            

     Pandas合並表,一般使用merge()
     交叉表:特殊的分組工具
        pd.crosstab(mt["user_id"],mt["aisle"]),其中mt["user_id"]作為index ,mt["aisle"]作為columns
'''

def var():
    """
    特征選擇--刪除低方差的特征,低方差表明數據相近,沒有意義不大
    :return:
    """
    var = VarianceThreshold(threshold=0.0) #一般在(0-10)之間范圍取值
    data = var.fit_transform([[0,2,0,3],[0,1,4,3],[0,1,1,3]])
    print(data)
    return None


def pca():
    """
    主成分分析進行特征降維
    :return:
    """
    p = PCA(n_components=0.9)
    data = p.fit_transform([[0,2,0,3],[0,1,4,3],[0,1,1,3]])
    print(data)
    return None
if __name__ == '__main__':
    var()
    pca()

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com