特征選擇與特征降維


# 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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM