兩個特徵是獨立好還是正相關好 特徵選擇方法全面總結

2021-10-11 01:56:03 字數 2407 閱讀 5323

什麼是特徵選擇

2.改善效能:節省儲存和計算開銷

3.改善通用性、降低過擬合風險:減輕維數災難,特徵的增多會大大增加模型的搜尋空間,大多數模型所需要的訓練樣本隨著特徵數量的增加而顯著增加。特徵的增加雖然能更好地擬合訓練資料,但也可能增加方差

# 方差選擇法,返回值為特徵選擇後的資料

# 引數threshold為方差的閾值

variancethreshold(threshold=3).fit_transform(iris.data)

from sklearn.feature_selection import selectkbest

from scipy.stats import pearsonr

# 選擇k個最好的特徵,返回選擇特徵後的資料

# 第乙個引數為計算評估特徵是否好的函式,該函式輸入特徵矩陣和目標向量,

# 輸出二元組(評分,p值)的陣列,陣列第i項為第i個特徵的評分和p值。

# 在此為計算相關係數

# 其中引數k為選擇的特徵個數

selectkbest(lambda x, y: array(map(lambda x:pearsonr(x, y), x.t)).t,

k=2).fit_transform(iris.data, iris.target)

from sklearn.feature_selection import selectkbest

from sklearn.feature_selection import chi2

#選擇k個最好的特徵,返回選擇特徵後的資料

selectkbest(chi2, k=2).fit_transform(iris.data, iris.target)

為了處理定量資料,提出了最大資訊係數法,它首先尋找一種最優的離散化方式,然後把互資訊取值轉換成一種度量方式,取值區間在[0, 1]

from sklearn.feature_selection import selectkbest

from minepy import mine

#由於mine的設計不是函式式的,定義mic方法將其為函式式的

#返回乙個二元組,二元組的第2項設定成固定的p值0.5

def mic(x, y):

m = mine()

m.compute_score(x, y)

return (m.mic(), 0.5)

#選擇k個最好的特徵,返回特徵選擇後的資料

#遞迴特徵消除法,返回特徵選擇後的資料

#引數estimator為基模型

#引數n_features_to_select為選擇的特徵個數

#帶l1懲罰項的邏輯回歸作為基模型的特徵選擇

selectfrommodel(logisticregression(

penalty="l1", c=0.1)).fit_transform(

iris.data,iris.target)

from

兩個正序陣列的中位數

給定兩個大小為 m 和 n 的正序 從小到大 陣列 nums1 和 nums2。請你找出並返回這兩個正序陣列的中位數。高階 你能設計乙個時間複雜度為 o log m n 的演算法解決此問題嗎?示例 1 輸入 nums1 1,3 nums2 2 輸出 2.00000 解釋 合併陣列 1,2,3 中位數...

C 兩個獨立exe程式直接通訊

傳送端 wm copydata訊息所要求的資料結構 publicstruct copydatastruct publicconstintwm copydata 0x004a 通過視窗的標題來查詢視窗的控制代碼 dllimport user32.dll entrypoint findwindow pr...

兩個相互獨立的gitLab間的同步

假設機器a上已經有了git倉庫test.git,要在機器b上映象這個git倉庫,則需要在機器b上執行 git clone mirror ssh 也即在機器b上,以git clone mirror的方式將git倉庫從機器a上clone下來,這時機器b上就有了乙份跟機器a一模一樣的git倉庫了。然後在機...