1. 程式人生 > >Python數據挖掘—特征工程—特征選擇

Python數據挖掘—特征工程—特征選擇

from res 6.2 最好的 python features import 方差 過多

如何選擇特征

根據是否發散及是否相關來選擇

方差選擇法

先計算各個特征的方差,根據閾值,選擇方差大於閾值的特征

方差過濾使用到的是VarianceThreshold類,該類有個參數threshold,該值為最小方差的閾值,然後使用fit_transform進行特征值過濾

相關系數法

先計算各個特征對目標值的相關系數,選擇更加相關的特征

遞歸特征消除法

使用一個基模型來進行多輪訓練,經過多輪訓練後,保留指定的特征數

通過estimator將基模型設置為線性模型(可以設置為其他類型),通過n_features_to_select=2將要選擇的特征數設置為2

技術分享圖片
 1 import pandas
2 from sklearn.feature_selection import RFE 3 from sklearn.linear_model import LinearRegression 4 5 data=pandas.read_csv("C:\\Users\\Jw\\Desktop\\python_work\\Python數據挖掘實戰課程課件\\6.2\\data2.csv") 6 7 feature=data[["月份","季度","廣告費用","客流量"]] 8 rfe=RFE( 9 estimator=LinearRegression(), #通過estimator將基模型設置為線性模型
10 n_features_to_select=2) #要選擇的特征數設置為2
View Code

將自變量和因變量通過fit_transfrom傳入,並通過get_support()知道所用的哪兩列的名字,得到對應列名

技術分享圖片
1 sFeature=rfe.fit_transform(
2     feature,
3     data["銷售額"])
4 
5 rfe.get_support()  #要知道這兩列的名字
View Code

模型選擇法

它是一種吧我們建好的模型對象傳入選擇器,然後它會根據這個已經建好的模型,自動幫我們選擇最好的特征值。

首先導入數據,給出全部特征值,然後建立模型,作為參數傳入SelctFromModel(),在通過fit_transfrom對特征值和因變量進行過濾,選出最優的特征,最後通過get_support()得到對應的列名。

技術分享圖片
 1 import pandas
 2 from sklearn.linear_model import LinearRegression
 3 from sklearn.feature_selection import SelectFromModel
 4 
 5 data=pandas.read_csv("C:\\Users\\Jw\\Desktop\\python_work\\Python數據挖掘實戰課程課件\\6.2\\data2.csv")
 6 
 7 feature=data[["月份","季度","廣告費用","客流量"]]
 8 
 9 lrModel=LinearRegression()
10 
11 selectFromModel=SelectFromModel(lrModel)
12 
13 selectFromModel.fit_transform(
14         feature,
15         data["銷售額"])
16 
17 feature.columns[selectFromModel.get_support()]
View Code

Python數據挖掘—特征工程—特征選擇