特徵選擇能剔除不相關(irrelevant)或亢餘(redundant )的特徵,從而達到減少特徵個數,提高模型精確度,減少執行時間的目的。另一方面,選取出真正相關的特徵簡化了模型,使研究人員易於理解資料產生的過程。
資料預處理完成之後,我們需要選擇有意義的特徵,輸入機器學習的演算法和模型進行訓練,通常來說,從兩個方面考慮來選擇特徵
如果乙個特徵不發散,例如方差接近於0,也就是說樣本在這個特徵上基本沒有差異,那我們就可以判斷,這個特徵對於樣本的區別並沒有什麼用第二個是特徵與目標的相關性,與目標相關性高的特徵應該優先選擇
我們以網際網路金融實際情景舉例:threshold=1兩個特徵都被顯示出來了#首先把資料匯入到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()
為什麼閾值設定為1,累計銷售與使用者忠誠度這兩個特徵都被選擇了出來?首先我們看下累計銷售與使用者忠誠度各自的方差是什麼?
#看下這兩個特徵的方差是什麼?
data[['累計銷售(億)','使用者忠誠度評分']].std()
以網際網路金融行業為例最終,python幫助我們選擇的特徵是:#首先匯入資料到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()]
還是延用上面那個案例#首先匯入資料到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...