NLP-資料預處理後的特徵選擇
阿新 • • 發佈:2019-01-10
- 實際應用中的資料往往很多,並存在不相關的特性,特性之間也可能存在相互依賴。
- 通過特徵選擇剔除不相關或冗餘的特徵,減少特徵個數,減少執行時間的目的。
- 資料預處理後,需要選擇有意義的特徵,然後再輸入機器學習的演算法和模型進行訓練。
一、相關係數法
- 計算各個特徵對目標值的相關係數,選擇更加相關的特徵。
原始資料:
步驟說明:
- 匯入資料
- 使用SelectKBest類,通過迴歸的方法,確定選擇幾個特徵值
- 選擇自變數,呼叫fit_transform()方法
- 把自變數和因變數傳入,選擇相關度比較高的兩個變數
- 通過get_support()方法獲得相應的列名
示例程式碼:
二、遞迴特徵消除法
使用基模型進行多輪訓練,指定需要的特徵數。
原始資料:
步驟說明:匯入資料
- 使用RFE類,選擇線性迴歸模型LinearRegression作為基模型
- 確定選擇的特徵數
- 呼叫fit_transform()方法,把自變數和因變數傳入
- 通過get_support()方法獲得相應的列名
RFE(estimator=LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False),
n_features_to_select=2, step=1, verbose=0)
示例程式碼:
from sklearn.feature_selection import RFE
from sklearn.linear_model import LinearRegression
feature=data[['月份','季度','廣告推廣費','註冊並投資人數']]
rfe=RFE(estimator=LinearRegression(),n_features_to_select=2)
sFeature=rfe.fit_transform(feature,data['銷售金額'])
rfe.get_support()
feature.columns[rfe.get_support()]
三、模型選擇法
- 它將建好的模型物件傳入選擇器,根據這個已經建好的模型,自動選擇最好的特徵值。
sklearn.feature_selection.SelectFromModel(estimator, threshold=None, prefit=False)
import pandas as pd
data=pd.read_csv('./test.csv',sep=' ',encoding='gbk')
from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import LinearRegression
feature=data[['月份','季度','廣告推廣費','註冊並投資人數']]
selectFromModel=SelectFromModel(LinearRegression())
#不需要指定特徵數,自動選擇最優的特徵數
selectFromModel=selectFromModel.fit_transform(feature,data['銷售金額'])
print('原始資料共有%s個特徵'%feature.shape[1])
print('新資料共有%s個特徵'%selectFromModel.shape[1])
輸出結果:
原始資料共有4個特徵
新資料共有1個特徵