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