《特徵工程三部曲》之二 特徵選擇

2021-08-09 20:58:35 字數 3195 閱讀 9963

特徵選擇能剔除不相關(irrelevant)或亢餘(redundant )的特徵,從而達到減少特徵個數,提高模型精確度,減少執行時間的目的。另一方面,選取出真正相關的特徵簡化了模型,使研究人員易於理解資料產生的過程。

資料預處理完成之後,我們需要選擇有意義的特徵,輸入機器學習的演算法和模型進行訓練,通常來說,從兩個方面考慮來選擇特徵

如果乙個特徵不發散,例如方差接近於0,也就是說樣本在這個特徵上基本沒有差異,那我們就可以判斷,這個特徵對於樣本的區別並沒有什麼用

第二個是特徵與目標的相關性,與目標相關性高的特徵應該優先選擇

我們以網際網路金融實際情景舉例:

#首先把資料匯入到data變數中

import pandas

data=pandas.read_csv('路徑.csv')

#使用variancethreshold類進行方差過濾

from sklearn.feature_selection import variancethreshold

#要生成這個類的物件,就需要乙個引數,就是最小方差的閾值,我們先設定為1,然後呼叫它的transform方法進行特徵值的過濾

variancethreshold=variancethreshold(threshold=1)

variancethreshold.fit_transform(data[['累計銷售(億)','使用者忠誠度評分']])

#使用get_support方法,可以得到選擇特徵列的序號,然後根據這個序號在原始資料中把對應的列名選擇出來即可

variancethreshold.get_support()

threshold=1兩個特徵都被顯示出來了

為什麼閾值設定為1,累計銷售與使用者忠誠度這兩個特徵都被選擇了出來?

首先我們看下累計銷售與使用者忠誠度各自的方差是什麼?

#看下這兩個特徵的方差是什麼?

data[['累計銷售(億)','使用者忠誠度評分']].std()

以網際網路金融行業為例

#首先匯入資料到data變數中

import pandas

data=pandas.read_csv('路徑.csv')

#然後,selectkbest類,通過回歸的方法,以及要選擇多少個特徵值,新建乙個 selectkbest物件,

from sklearn.feature_selection import selectkbest

from sklearn.feature_selection import f_regression

selectkbest = selectkbest(

f_regression,k=2

)#接著,把自變數選擇出來,然後呼叫fit_transform方法,把自變數和因變數傳入,即可選出相關度最高的兩個變數。

feature =data[['月份','季度','廣告推廣費','註冊並投資人數']]

bestfeature =selectkbest.fit_transform(

feature,

data['銷售金額']

)#我們想要知道這兩個自變數的名字,使用get_support方法即可得到相應的列名

feature.columns[selectkbest.get_support()]

最終,python幫助我們選擇的特徵是:

還是延用上面那個案例

#首先匯入資料到data變數中

import pandas

data=pandas.read_csv('路徑.csv')

#接著,我們使用rfe類,在estimator中,把我們的基模型設定為線性回歸模型linearregression,然後在把我們要選擇的特徵數設定為2,接著就可以使用這個rfe物件,把自變數和因變數傳入fit_transform方法,即可得到我們需要的特徵值

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['銷售金額']

)#同理,我們要想知道這兩個自變數的名字,使用get_support方法,即可得到對應的列名

rfe.get_support()

還是延用上面那個案例

import pandas

from sklearn.feature_selection import selectfrommodel

from sklearn.linear_model import linearregression

feature =data[['月份','季度','廣告推廣費','註冊並投資人數']]

lrmodel = linearregression()

selectfrommodel = selectfrommodel(lrmodel)

selectfrommodel.fit_transform(

feature,

data['銷售金額']

)selectfrommodel.get_support()

特徵工程三部曲 (1)特徵選擇

特徵質量的好壞,直接影響到最終的模型結果。構建特徵是乙個很大的工程,總體來講包括 特徵選擇 特徵表達 和 本篇文章,我們討論一下特徵選擇。特徵選擇指的是,在全部的特徵中,挑選出對最終的機器學習任務有用的特徵。整體來講,從特徵選擇的過程中有沒有模型的參與,可以將特徵選擇的方法分為 基於統計量的選擇和基...

XML三部曲之二 DTD

dtd document type definition 定義了 xml檔案的結構,為 xml檔案提供語法與規則。內容既可以在 xml檔案中,也可以在 xml檔案外。可以定義自己的 dtd.dtd 對於xml 是可選的內容。為了正確的交換資料,xml檔案需要確定的結構。劉偉 男乙個標籤只能包含乙個和...

Linux學習三部曲 之二

新建linux分割槽以及檔案系統 今天,我們來聊聊在linux上建立分割槽和檔案系統。windows系統建立分割槽可以借助分割槽工具,那麼在linux分割槽以及檔案系統又該如何操作呢?開啟securecrt,連線到linux,輸入命令 fdisk l 可以得出下圖。兩句話的意思是說裝置dm 0和dm...