日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

特征选择的几种方法

發(fā)布時間:2023/12/9 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 特征选择的几种方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

1、 過濾法(Filter)

1.1 方差選擇法

1.2 相關(guān)系數(shù)法

1.3 卡方檢驗(yàn)

1.4 互信息法

1.5 relief算法

2、包裹法(Wrapper)

2.1 遞歸特征消除法

2.2 特征干擾法

3、嵌入法(Embedded)

3.1 基于懲罰項(xiàng)的特征選擇法

3.2 基于樹模型的特征選擇法

4、機(jī)器學(xué)習(xí)中的特征選擇和優(yōu)缺點(diǎn)


1、 過濾法(Filter)

1.1 方差選擇法

  使用方差選擇法,先要計(jì)算各個特征的方差,然后根據(jù)閾值,選擇方差大于閾值的特征。使用feature_selection庫的VarianceThreshold類來選擇特征的代碼如下:

from sklearn.feature_selection import VarianceThreshold#方差選擇法,返回值為特征選擇后的數(shù)據(jù) #參數(shù)threshold為方差的閾值 VarianceThreshold(threshold=3).fit_transform(iris.data)

1.2 相關(guān)系數(shù)法

  使用相關(guān)系數(shù)法,先要計(jì)算各個特征對目標(biāo)值的相關(guān)系數(shù)以及相關(guān)系數(shù)的P值。用feature_selection庫的SelectKBest類結(jié)合相關(guān)系數(shù)來選擇特征的代碼如下:

from sklearn.feature_selection import SelectKBest from scipy.stats import pearsonr#選擇K個最好的特征,返回選擇特征后的數(shù)據(jù) #第一個參數(shù)為計(jì)算評估特征是否好的函數(shù),該函數(shù)輸入特征矩陣和目標(biāo)向量,輸出二元組(評分,P值)的數(shù)組,數(shù)組第i項(xiàng)為第i個特征的評分和P值。在此定義為計(jì)算相關(guān)系數(shù) #參數(shù)k為選擇的特征個數(shù) SelectKBest(lambda X, Y: array(map(lambda x:pearsonr(x, Y), X.T)).T, k=2).fit_transform(iris.data, iris.target)

1.3 卡方檢驗(yàn)

  經(jīng)典的卡方檢驗(yàn)是檢驗(yàn)定性自變量對定性因變量的相關(guān)性。假設(shè)自變量有N種取值,因變量有M種取值,考慮自變量等于i且因變量等于j的樣本頻數(shù)的觀察值與期望的差距,構(gòu)建統(tǒng)計(jì)量:

  不難發(fā)現(xiàn),這個統(tǒng)計(jì)量的含義簡而言之就是自變量對因變量的相關(guān)性。用feature_selection庫的SelectKBest類結(jié)合卡方檢驗(yàn)來選擇特征的代碼如下:

from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import chi2#選擇K個最好的特征,返回選擇特征后的數(shù)據(jù) SelectKBest(chi2, k=2).fit_transform(iris.data, iris.target)

1.4 互信息法

  經(jīng)典的互信息也是評價定性自變量對定性因變量的相關(guān)性的(例如決策樹ID3算法),互信息計(jì)算公式如下:

  為了處理定量數(shù)據(jù),最大信息系數(shù)法被提出,使用feature_selection庫的SelectKBest類結(jié)合最大信息系數(shù)法來選擇特征的代碼如下:

from sklearn.feature_selection import SelectKBestfrom minepy import MINE#由于MINE的設(shè)計(jì)不是函數(shù)式的,定義mic方法將其為函數(shù)式的,返回一個二元組,二元組的第2項(xiàng)設(shè)置成固定的P值0.5def mic(x, y):m = MINE()m.compute_score(x, y)return (m.mic(), 0.5)#選擇K個最好的特征,返回特征選擇后的數(shù)據(jù) SelectKBest(lambda X, Y: array(map(lambda x:mic(x, Y), X.T)).T, k=2).fit_transform(iris.data, iris.target)

1.5 relief算法

????? Relief算法最早由Kira提出.?基本內(nèi)容:從訓(xùn)練集D中隨機(jī)選擇一個樣本R,?然后從和R同類的樣本中尋找k最近鄰樣本H,從和R不同類的樣本中尋找k最近鄰樣本M,?最后按照公式更新特征權(quán)重.

? ? ? ??

Relief算法python實(shí)現(xiàn):https://blog.csdn.net/qq_40871363/article/details/86511843?

2、包裹法(Wrapper)

2.1 遞歸特征消除法

  遞歸消除特征法使用一個基模型來進(jìn)行多輪訓(xùn)練,每輪訓(xùn)練后,消除若干權(quán)值系數(shù)的特征,再基于新的特征集進(jìn)行下一輪訓(xùn)練。使用feature_selection庫的RFE類來選擇特征的代碼如下:

from sklearn.feature_selection import RFE from sklearn.linear_model import LogisticRegression#遞歸特征消除法,返回特征選擇后的數(shù)據(jù) #參數(shù)estimator為基模型 #參數(shù)n_features_to_select為選擇的特征個數(shù) RFE(estimator=LogisticRegression(), n_features_to_select=2).fit_transform(iris.data, iris.target)

2.2 特征干擾法

特征選擇原理:用加上噪聲的特征和原特征下的誤差對比來評價特征重要性,誤差越大,說明特征越重要。以隨機(jī)森林為例:

  • 對隨機(jī)森林中的每一顆決策樹,用OOB(袋外數(shù)據(jù))計(jì)算誤差errOOB1;
  • 對OOB所有樣本特征X加上噪聲干擾,再次計(jì)算誤差errOOB2;
  • N棵樹,特征X的重要性=
  • 若某個特征加上噪聲后,袋外的準(zhǔn)確率大幅度降低,說明此特征對于樣本的分類結(jié)果影響很大,即重要程度越高。
  • sklearn中會對每個特征賦予一個分?jǐn)?shù),分?jǐn)?shù)越大,特征越重要,因此,可以根據(jù)特征重要性排序,然后選擇最佳特征組合;

    RandomForestClassifier(n_estimators=200,oob_score=True)oob_score : bool (default=False) Whether to use out-of-bag samples to estimate the generalization accuracy.oob_score:? bool(默認(rèn)=False)?是否使用袋外樣品進(jìn)行估算?泛化精度。

    3、嵌入法(Embedded)

    嵌入特征選擇方法和算法本身緊密結(jié)合,在模型訓(xùn)練過程中完成特征選擇。例如,

    決策樹算法每次都選擇分類能力最強(qiáng)的特征;

    線性回歸+L2正則化:某些信號比較弱的特征權(quán)重減小;

    線性回歸+L1正則化:某些信號比較弱的特征權(quán)重為0;

    彈性網(wǎng)絡(luò):L1懲罰項(xiàng)降維的原理在于保留多個對目標(biāo)值具有同等相關(guān)性的特征中的一個,所以沒選到的特征不代表不重要。

    3.1 基于懲罰項(xiàng)的特征選擇法

      使用帶懲罰項(xiàng)的基模型,除了篩選出特征外,同時也進(jìn)行了降維。使用feature_selection庫的SelectFromModel類結(jié)合帶L1懲罰項(xiàng)的邏輯回歸模型,來選擇特征的代碼如下:

    from sklearn.feature_selection import SelectFromModel from sklearn.linear_model import LogisticRegression#帶L1懲罰項(xiàng)的邏輯回歸作為基模型的特征選擇 SelectFromModel(LogisticRegression(penalty="l1", C=0.1)).fit_transform(iris.data, iris.target)

    3.2 基于樹模型的特征選擇法

      樹模型中GBDT也可用來作為基模型進(jìn)行特征選擇,使用feature_selection庫的SelectFromModel類結(jié)合GBDT模型,來選擇特征的代碼如下:

    from sklearn.feature_selection import SelectFromModel from sklearn.ensemble import GradientBoostingClassifier#GBDT作為基模型的特征選擇 SelectFromModel(GradientBoostingClassifier()).fit_transform(iris.data, iris.target)

    4、機(jī)器學(xué)習(xí)中的特征選擇和優(yōu)缺點(diǎn)

    參考:https://blog.csdn.net/piaodexin/article/details/77203696

    ——————————————————————

    參考:

    https://www.cnblogs.com/bonelee/p/8632866.html?

    總結(jié)

    以上是生活随笔為你收集整理的特征选择的几种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。