sklearn.feature_selection
模組裡的類能被用來在樣本集上作特徵選擇、或者叫維數降低,改善估計量的準確性、在高維空間的表現。下面我們介紹幾種常用的特徵選擇方法。
variancethreshold
是乙個簡單的特徵選擇基準方法。它刪除所有方差小於某閾值的特徵。預設刪除所有0方差特徵,即,特徵在所有樣本裡有相同的值。舉乙個例子,假設我們有乙個布林特徵資料集,我們想刪除在超過80%的樣本裡值都是1或都是0的特徵。布林特徵是bernoulli型隨機變數,它的方差是
v ar
(x)=
p(1−
p)var(x)=p(1-p)
var(x)
=p(1
−p)因此我們選擇閾值0.8×(
variancethreshold刪除了第一列,這列包含0的概率 p=5
/6>.8
p=5/6>.8
p=5/
6>.8
單變數特徵選擇,是根據單變數的統計學檢驗選擇最好的特徵。它可以視為估計前的預處理步, scikit-learn執行transform方法作特徵選擇。
例如,我們能作乙個樣本的 χ
2\chi^2
χ2檢驗,只選擇兩個最好的特徵。
這些物件取乙個分數函式作為輸入,返回單變數分數和p值。
基於f檢驗的方法可以估計兩個隨機變數的線性關係。另一方面,互資訊的方法能夠捕捉任何型別的統計關係。
給定乙個外部估計量,分派權給特徵(比如說,乙個線性模型的係數)。遞迴特徵排除(recursive feature elimination, rfe), 是遞迴地選擇越來越小的特徵集。首先,在初始特徵集上訓練估計量,由coef_
或feature_importances_
屬性獲得每個特徵的重要性。然後,最不重要的特徵被從當前特徵集中排除。重複特徵排除過程,直到達到想要的特徵數。
rfecv
在乙個交叉驗證的迴圈裡作rfe, 找到最優的特徵數。
selectfrommodel
是乙個元轉換器,它可以結合任何在擬合後有coef_ and feature_importances_的估計量使用。由引數threshold指定閾值,如果coef_ and feature_importances_的值低於這個閾值,那麼對應的特徵被認為不重要而排除。除了指定閾值,還可以使用乙個字串引數啟發式尋找閾值。可利用的啟發式方法有 「mean」, 「median」, 浮點值乘均值或中位數,例如,「0.1*mean」
l1範數懲罰的線性模型有稀疏解,即,它估計的係數裡很多是0. 當我們的目標是降低資料的維數時,可以配合feature_selection.selectfrommodel
選擇這些模型裡的非零係數。特別指出,有用的稀疏估計量有linear_model.lasso
回歸、svm.linearsvc
分類。
在svm和logistic回歸裡,引數c控制稀疏性,即,c值越小,選擇的特徵就越少。在lasso裡,引數 α
\alpha
α 越大,選擇的特徵越少。
基於樹的估計量能被用來計算特徵重要性,然後丟棄不相關的特徵。
特徵選擇通常作為實際學習前的資料預處理步。在scikit-learn裡,推薦的方法是使用sklearn.pipeline.pipeline
:
clf = pipeline([
('feature_selection', selectfrommodel(linearsvc(penalty="l1"))),
('classification', randomforestclassifier())
])clf.fit(x, y)
在以上**片裡,我們使用了sklearn.svm.linearsvc
andsklearn.ensemble.randomforestclassifier
訓練轉換後的輸出上,即,只使用相關的特徵。你也可以用其它特徵選擇方法,或提供特徵重要性的分類器作類似的操作。 C 銳利體驗 第十七講 異常處理
c 銳利體驗 南京郵電學院李建忠 lijianzhong 263.第十七講異常處理 異常處理 結構化異常處理是現代分布式環境下元件設計的乙個必要的環節,通用語言執行時從底層構造給予異常處理以堅實的支援。在c 中,異常物件被設計為封裝了各種異常資訊的類 system.exception及其繼承子類,和...
第十七周總結
周工作總結及計畫表 部 門 理工大學 姓 名 冉濤 入 職 時 間 2015.7.5 本週已完成工作內容及總結 1 基本完成課程設計要求的三道題目,但還有一些小地方沒有做好,主要是在一些異常處理方面,主要是從控制台輸入時的型別轉換異常,以及gui介面的輸入為空的異常和型別轉換異常。2 課程設計的第四...
JAVA第十七課
一 序列化與反序列化 序列化是將物件的狀態寫入特定的流中的過程 反序列化則是從特定的流中獲取資料重新構建物件的過程 二 實現序列化的步奏 1 實現serilizable介面。2 建立物件輸出流 3 呼叫writeobject 方法將物件寫入檔案 4 關閉物件輸出流 三 常見異常 notseriali...