1. 程式人生 > >NLP-資料預處理後的特徵選擇

NLP-資料預處理後的特徵選擇

  • 實際應用中的資料往往很多,並存在不相關的特性,特性之間也可能存在相互依賴。
  • 通過特徵選擇剔除不相關或冗餘的特徵,減少特徵個數,減少執行時間的目的。
  • 資料預處理後,需要選擇有意義的特徵,然後再輸入機器學習的演算法和模型進行訓練。

一、相關係數法

  • 計算各個特徵對目標值的相關係數,選擇更加相關的特徵。

原始資料:
這裡寫圖片描述
步驟說明:

  • 匯入資料
  • 使用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個特徵