<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          基于Python的特征自動(dòng)化選擇:兩行代碼完成特征工程

          共 14420字,需瀏覽 29分鐘

           ·

          2020-10-28 16:30

          本文介紹一個(gè)特征選擇神器:特征選擇器是用于減少機(jī)器學(xué)習(xí)數(shù)據(jù)集的維數(shù)的工具,可以傻瓜式地進(jìn)行特征選擇,兩行代碼即可搞定!!

          來(lái)源:Will Koehrsen

          代碼整理及注釋翻譯:黃海廣

          代碼和數(shù)據(jù)下載地址:

          https://github.com/fengdu78/Data-Science-Notes/tree/master/9.feature-engineering/FeatureSelectorUsage

          實(shí)現(xiàn)的功能

          該選擇器基于Python編寫,有五種方法來(lái)標(biāo)識(shí)要?jiǎng)h除的特征:

          • 缺失值
          • 唯一值
          • 共線特征
          • 零重要性特征
          • 低重要性特征

          使用方法

          ?特征選擇器(Feature Selector)的用法

          在這個(gè)Jupyter文件中, 我們將使用 FeatureSelector 類來(lái)選擇數(shù)據(jù)集中要?jiǎng)h除的特征,這個(gè)類提供五種方法來(lái)查找要?jiǎng)h除的功能:

          1. 查找缺失分?jǐn)?shù)大于指定閾值的列
          2. 查找只有唯一值的特征
          3. 查找由相關(guān)系數(shù)大于指定值的共線特征
          4. 使用梯度提升算法查找具有零重要性的特征
          5. 使用梯度提升算法查找中查找對(duì)指定的累積特征重要性無(wú)貢獻(xiàn)的特征

          FeatureSelector 仍在進(jìn)一步開(kāi)發(fā)中! 歡迎大家在github提交PR.

          from feature_selector import FeatureSelector

          import pandas as pd

          示例數(shù)據(jù)集

          該數(shù)據(jù)集被用作Kaggle上房屋信用違約風(fēng)險(xiǎn)競(jìng)賽的(https://www.kaggle.com/c/home-credit-default-risk) ?一部分(文末提供下載)。它旨在用于有監(jiān)督的機(jī)器學(xué)習(xí)分類任務(wù),其目的是預(yù)測(cè)客戶是否會(huì)拖欠貸款。您可以在此處下載整個(gè)數(shù)據(jù)集,我們將處理10,000行的一小部分樣本。

          特征選擇器旨在用于機(jī)器學(xué)習(xí)任務(wù),但可以應(yīng)用于任何數(shù)據(jù)集。基于特征重要性的方法需要使用機(jī)器學(xué)習(xí)的監(jiān)督學(xué)習(xí)問(wèn)題。

          train = pd.read_csv('data/credit_example.csv')
          train_labels = train['TARGET']
          train.head()

          5 rows × 122 columns

          數(shù)據(jù)集中有幾個(gè)分類列。`FeatureSelector`處理這些特征重要性的時(shí)候使用獨(dú)熱編碼。
          train = train.drop(columns = ['TARGET'])

          實(shí)施

          FeatureSelector具有用于標(biāo)識(shí)列,以除去五種特征 :

          • identify_missing(查找缺失值)
          • identify_single_unique(查找唯一值)
          • identify_collinear(查找共線特征)
          • identify_zero_importance (查找零重要特征)
          • identify_low_importance(查找低重要特征)

          這些方法找到要根據(jù)指定條件刪除的特征。標(biāo)識(shí)的特征存儲(chǔ)在 FeatureSelectorops 屬性(Python詞典)中。我們可以手動(dòng)刪除已識(shí)別的特征,也可以使用 FeatureSelector中的刪除特征函數(shù)真正刪除特征。

          創(chuàng)建實(shí)例

          FeatureSelector 僅需要一個(gè)在行中具有觀察值而在列中具有特征的數(shù)據(jù)集(標(biāo)準(zhǔn)結(jié)構(gòu)化數(shù)據(jù))。我們正在處理機(jī)器學(xué)習(xí)的分類問(wèn)題,因此我們也需要訓(xùn)練的標(biāo)簽。

          fs = FeatureSelector(data = train, labels = train_labels)

          1. 缺失值

          第一種特征選擇方法很簡(jiǎn)單:找到丟失分?jǐn)?shù)大于指定閾值的任何列。在此示例中,我們將使用閾值0.6,這對(duì)應(yīng)于查找缺失值超過(guò)60%的特征。(此方法不會(huì)首先對(duì)特征進(jìn)行一次獨(dú)熱編碼)。

          fs.identify_missing(missing_threshold=0.6)
          17 features with greater than 0.60 missing values.

          可以通過(guò) FeatureSelector 對(duì)象的ops詞典訪問(wèn)已確定要?jiǎng)h除的特征。

          missing_features = fs.ops['missing']
          missing_features[:10]
          ['OWN_CAR_AGE',
          'YEARS_BUILD_AVG',
          'COMMONAREA_AVG',
          'FLOORSMIN_AVG',
          'LIVINGAPARTMENTS_AVG',
          'NONLIVINGAPARTMENTS_AVG',
          'YEARS_BUILD_MODE',
          'COMMONAREA_MODE',
          'FLOORSMIN_MODE',
          'LIVINGAPARTMENTS_MODE']

          我們還可以繪制數(shù)據(jù)集中所有列的缺失列分?jǐn)?shù)的直方圖。

          fs.plot_missing()

          有關(guān)缺失分?jǐn)?shù)的詳細(xì)信息,我們可以訪問(wèn)missing_stats屬性,這是所有特征缺失分?jǐn)?shù)的DataFrame。

          fs.missing_stats.head(10)

          missing_fraction
          COMMONAREA_AVG0.6953
          COMMONAREA_MODE0.6953
          COMMONAREA_MEDI0.6953
          NONLIVINGAPARTMENTS_AVG0.6945
          NONLIVINGAPARTMENTS_MODE0.6945
          NONLIVINGAPARTMENTS_MEDI0.6945
          LIVINGAPARTMENTS_MEDI0.6846
          LIVINGAPARTMENTS_AVG0.6846
          LIVINGAPARTMENTS_MODE0.6846
          FONDKAPREMONT_MODE0.6820

          2. 唯一值

          下一個(gè)方法很簡(jiǎn)單:找到只有一個(gè)唯一值的所有特征。(這不會(huì)對(duì)特征進(jìn)行獨(dú)熱編碼)。

          fs.identify_single_unique()
          4 features with a single unique value.


          single_unique = fs.ops['single_unique']
          single_unique
          ['FLAG_MOBIL', 'FLAG_DOCUMENT_10', 'FLAG_DOCUMENT_12', 'FLAG_DOCUMENT_17']

          我們可以繪制數(shù)據(jù)集中每個(gè)特征中唯一值數(shù)量的直方圖。

          fs.plot_unique()

          最后,我們可以訪問(wèn)一個(gè)DataFrame,其中包含每個(gè)特征的唯一值數(shù)量。

          fs.unique_stats.sample(5)

          nunique
          DAYS_EMPLOYED4210
          REGION_RATING_CLIENT3
          FLAG_DOCUMENT_202
          FLAG_DOCUMENT_152
          NONLIVINGAREA_MEDI993

          3. 共線(高相關(guān)性) 特征

          該方法基于皮爾森相關(guān)系數(shù)找到共線特征對(duì)。對(duì)于高于指定閾值(就絕對(duì)值而言)的每一對(duì),它標(biāo)識(shí)要?jiǎng)h除的變量之一。我們需要傳遞一個(gè) correlation_threshold

          此方法基于在:https://chrisalbon.com/machine_learning/feature_selection/drop_highly_correlated_features/ 中找到的代碼。

          對(duì)于每一對(duì),將要?jiǎng)h除的特征是在DataFrame中列排序方面排在最后的特征。(除非one_hot = True,否則此方法不會(huì)預(yù)先對(duì)數(shù)據(jù)進(jìn)行一次獨(dú)熱編碼。因此,僅在數(shù)字列之間計(jì)算相關(guān)性)

          fs.identify_collinear(correlation_threshold=0.975)
          24 features with a correlation magnitude greater than 0.97.
          correlated_features = fs.ops['collinear']
          correlated_features[:5]
          ['AMT_GOODS_PRICE',
          'FLAG_EMP_PHONE',
          'YEARS_BUILD_MODE',
          'COMMONAREA_MODE',
          'ELEVATORS_MODE']

          我們可以查看閾值以上相關(guān)性的熱圖。將要?jiǎng)h除的特征位于x軸上。

          fs.plot_collinear()

          要繪制數(shù)據(jù)中的所有相關(guān)性,我們可以將 plot_all = True 傳遞給 plot_collinear函數(shù)。

          fs.plot_collinear(plot_all=True)
          fs.identify_collinear(correlation_threshold=0.98)
          fs.plot_collinear()
          21 features with a correlation magnitude greater than 0.98.

          要查看閾值以上的相關(guān)細(xì)節(jié),我們?cè)L問(wèn)record_collinear 屬性,它是一個(gè)DataFrame。?drop_feature 將被刪除,并且對(duì)于每個(gè)將被刪除的特征,它與 corr_feature可能存在多個(gè)相關(guān)性,而這些相關(guān)性都高于correlation_threshold

          fs.record_collinear.head()

          corr_featurecorr_valuedrop_feature
          0AMT_CREDIT0.987232AMT_GOODS_PRICE
          1DAYS_EMPLOYED-0.999533FLAG_EMP_PHONE
          2YEARS_BUILD_AVG0.992120YEARS_BUILD_MODE
          3COMMONAREA_AVG0.988074COMMONAREA_MODE
          4FLOORSMAX_AVG0.984663FLOORSMAX_MODE
          ?
          4. 零重要特征?
          此方法依賴于機(jī)器學(xué)習(xí)模型來(lái)識(shí)別要?jiǎng)h除的特征。因此,它是有標(biāo)簽的監(jiān)督學(xué)習(xí)問(wèn)題。該方法通過(guò)使用LightGBM庫(kù)中實(shí)現(xiàn)的梯度增強(qiáng)機(jī)找到特征重要性。

          為了減少所計(jì)算的特征重要性的差異,默認(rèn)情況下對(duì)模型進(jìn)行了10次訓(xùn)練。默認(rèn)情況下,還使用驗(yàn)證集(訓(xùn)練數(shù)據(jù)的15%)通過(guò)提前停止訓(xùn)練模型,以識(shí)別要訓(xùn)練的最優(yōu)估計(jì)量。可以將以下參數(shù)傳遞給identify_zero_importance 方法:

          • task: 可以是 classificationregression。指標(biāo)和標(biāo)簽必須與任務(wù)匹配。
          • eval_metric: 用于提前停止的度量(例如,用于分類的auc或用于回歸的l2 )。要查看可用指標(biāo)的列表,請(qǐng)參閱LightGBM文檔:(http://testlightgbm.readthedocs.io/en/latest/Parameters.html#metric-parameters)。
          • n_iterations: 訓(xùn)練次數(shù)。特征重要性是在訓(xùn)練運(yùn)行中平均得出的 (默認(rèn)為10)。
          • early_stopping: 訓(xùn)練模型時(shí)是否使用提前停止(默認(rèn)= True)。當(dāng)驗(yàn)證集的性能對(duì)于指定數(shù)量的估計(jì)量(此實(shí)現(xiàn)中默認(rèn)為100)不再降低時(shí),提早停止將停止訓(xùn)練估計(jì)量(決策樹(shù))。早停是一種正則化形式,用于防止訓(xùn)練數(shù)據(jù)過(guò)擬合。

          首先對(duì)數(shù)據(jù)進(jìn)行一次獨(dú)熱編碼,以供模型使用。這意味著某些零重要性特征可以通過(guò)一鍵編碼來(lái)創(chuàng)建。要查看單編碼的列,我們可以訪問(wèn) FeatureSelectorone_hot_features

          注意:與其他方法相比,模型的特征重要性是不確定的(具有少許隨機(jī)性)。每次運(yùn)行此方法時(shí),其結(jié)果都可能更改。

          fs.identify_zero_importance(task = 'classification', eval_metric = 'auc',
          n_iterations = 10, early_stopping = True)
          Training Gradient Boosting Model

          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [57] valid_0's auc: 0.760957 valid_0's binary_logloss: 0.250579
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [29] valid_0's auc: 0.681283 valid_0's binary_logloss: 0.266277
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [50] valid_0's auc: 0.73881 valid_0's binary_logloss: 0.257822
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [34] valid_0's auc: 0.720575 valid_0's binary_logloss: 0.262094
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [48] valid_0's auc: 0.769376 valid_0's binary_logloss: 0.247709
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [35] valid_0's auc: 0.713877 valid_0's binary_logloss: 0.262254
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [76] valid_0's auc: 0.753081 valid_0's binary_logloss: 0.251867
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [70] valid_0's auc: 0.722385 valid_0's binary_logloss: 0.259535
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [45] valid_0's auc: 0.752703 valid_0's binary_logloss: 0.252175
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [49] valid_0's auc: 0.757385 valid_0's binary_logloss: 0.250356

          81 features with zero importance after one-hot encoding.

          運(yùn)行梯度提升模型需要對(duì)特征進(jìn)行獨(dú)熱編碼。這些特征保存在 FeatureSelectorone_hot_features 屬性中。原始特征保存在base_features中。

          one_hot_features = fs.one_hot_features
          base_features = fs.base_features
          print('There are %d original features' % len(base_features))
          print('There are %d one-hot features' % len(one_hot_features))
          There are 121 original features
          There are 134 one-hot features

          FeatureSelectordata 屬性保存原始DataFrame。獨(dú)熱編碼后, data_all屬性將保留原始數(shù)據(jù)以及獨(dú)熱編碼特征。

          fs.data_all.head(10)

          10 rows × 255 columns

          我們可以使用多種方法來(lái)檢查特征重要性的結(jié)果。首先,我們可以訪問(wèn)具有零重要性的特征列表。
          zero_importance_features = fs.ops['zero_importance']
          zero_importance_features[10:15]
          ['ORGANIZATION_TYPE_Transport: type 1',
          'ORGANIZATION_TYPE_Security',
          'FLAG_DOCUMENT_15',
          'FLAG_DOCUMENT_17',
          'ORGANIZATION_TYPE_Religion']

          畫(huà)出特征重要性

          使用 plot_feature_importances 的特征重要性畫(huà)圖將向我們顯示 plot_n 最重要的特征(按歸一化比例將特征加總為1)。它還向我們顯示了累積特征重要性與特征數(shù)量之間的關(guān)系。

          當(dāng)我們繪制特征重要性時(shí),我們可以傳遞一個(gè)閾值,該閾值標(biāo)識(shí)達(dá)到指定的累積特征重要性所需的特征數(shù)量。例如,threshold = 0.99將告訴我們占總重要性的99%所需的特征數(shù)量。

          fs.plot_feature_importances(threshold = 0.99, plot_n = 12)
          111 features required for 0.99 of cumulative importance

          FeatureSelector中的 feature_importances 屬性中可以訪問(wèn)所有的特征重要性。

          fs.feature_importances.head(10)

          featureimportancenormalized_importancecumulative_importance
          0EXT_SOURCE_2145.20.0981740.098174
          1EXT_SOURCE_3127.70.0863420.184517
          2EXT_SOURCE_182.70.0559160.240433
          3DAYS_BIRTH71.40.0482760.288709
          4DAYS_REGISTRATION64.10.0433400.332049
          5DAYS_ID_PUBLISH59.30.0400950.372143
          6SK_ID_CURR57.70.0390130.411156
          7DAYS_EMPLOYED55.50.0375250.448682
          8DAYS_LAST_PHONE_CHANGE47.00.0317780.480460
          9AMT_INCOME_TOTAL41.00.0277210.508181
          我們可以使用這些結(jié)果來(lái)僅選擇“”個(gè)最重要的特征。例如,如果我們希望排名前100位的重要性最高,則可以執(zhí)行以下操作。
          one_hundred_features = list(fs.feature_importances.loc[:99, 'feature'])
          len(one_hundred_features)
          100

          5. 低重要性特征

          此方法使用梯度提升算法(必須首先運(yùn)行identify_zero_importance)通過(guò)查找達(dá)到指定的累積總特征重要性所需的最低特征重要性的特征,來(lái)構(gòu)建特征重要性。例如,如果我們輸入0.99,則將找到最不重要的特征重要性,這些特征總的不到總特征重要性的99%。

          使用此方法時(shí),我們必須已經(jīng)運(yùn)行了identify_zero_importance ,并且需要傳遞一個(gè)cumulative_importance ,該值占總特征重要性的一部分。

          **注意:**此方法建立在梯度提升模型的重要性基礎(chǔ)之上,并且還是不確定的。我建議使用不同的參數(shù)多次運(yùn)行這兩種方法,并測(cè)試每個(gè)結(jié)果的特征集,而不是只選擇一個(gè)數(shù)字。

          fs.identify_low_importance(cumulative_importance = 0.99)
          110 features required for cumulative importance of 0.99 after one hot encoding.
          129 features do not contribute to cumulative importance of 0.99.

          要?jiǎng)h除的低重要性特征是指那些對(duì)指定的累積重要性無(wú)貢獻(xiàn)的特征。這些特征也可以在 ops 詞典中找到。

          low_importance_features = fs.ops['low_importance']
          low_importance_features[:5]
          ['NAME_FAMILY_STATUS_Widow',
          'WEEKDAY_APPR_PROCESS_START_SATURDAY',
          'ORGANIZATION_TYPE_Business Entity Type 2',
          'ORGANIZATION_TYPE_Business Entity Type 1',
          'NAME_INCOME_TYPE_State servant']

          刪除特征

          一旦確定了要?jiǎng)h除的特征,便可以通過(guò)多種方式刪除這些特征。我們可以訪問(wèn)removal_ops詞典中的任何功能列表,并手動(dòng)刪除列。我們還可以使用 remove 方法,傳入標(biāo)識(shí)我們要?jiǎng)h除的特征的方法。

          此方法返回結(jié)果數(shù)據(jù),然后我們可以將其用于機(jī)器學(xué)習(xí)。仍然可以在特征選擇器的 data 屬性中訪問(wèn)原始數(shù)據(jù)。

          請(qǐng)注意用于刪除特征的方法!在使用刪除特征之前,最好先檢查將要remove的特征。

          train_no_missing = fs.remove(methods = ['missing'])
          Removed 17 features.
          train_no_missing_zero = fs.remove(methods = ['missing', 'zero_importance'])
          Removed 98 features.

          要從所有方法中刪除特征,請(qǐng)傳入 method='all'。在執(zhí)行此操作之前,我們可以使用check_removal檢查將刪除了多少個(gè)特征。這將返回已被識(shí)別為要?jiǎng)h除的所有特征的列表。

          all_to_remove = fs.check_removal()
          all_to_remove[10:25]
          Total of 156 features identified for removal

          ['FLAG_OWN_REALTY_Y',
          'FLAG_DOCUMENT_19',
          'ORGANIZATION_TYPE_Agriculture',
          'FLOORSMIN_MEDI',
          'ORGANIZATION_TYPE_Restaurant',
          'NAME_HOUSING_TYPE_With parents',
          'NONLIVINGAREA_MEDI',
          'NAME_INCOME_TYPE_Pensioner',
          'HOUSETYPE_MODE_specific housing',
          'ORGANIZATION_TYPE_Industry: type 5',
          'ORGANIZATION_TYPE_Realtor',
          'OCCUPATION_TYPE_Cleaning staff',
          'ORGANIZATION_TYPE_Industry: type 12',
          'OCCUPATION_TYPE_Realty agents',
          'ORGANIZATION_TYPE_Trade: type 6']

          現(xiàn)在我們可以刪除所有已識(shí)別的特征。

          train_removed = fs.remove(methods = 'all')
          ['missing', 'single_unique', 'collinear', 'zero_importance', 'low_importance'] methods have been run

          Removed 156 features.

          處理獨(dú)熱特征

          如果我們查看返回的DataFrame,可能會(huì)注意到原始數(shù)據(jù)中沒(méi)有的幾個(gè)新列。這些是在對(duì)數(shù)據(jù)進(jìn)行獨(dú)熱編碼以進(jìn)行機(jī)器學(xué)習(xí)時(shí)創(chuàng)建的。要?jiǎng)h除所有獨(dú)熱特征,我們可以將 keep_one_hot = False 傳遞給 remove 方法。

          train_removed_all = fs.remove(methods = 'all', keep_one_hot=False)
          ['missing', 'single_unique', 'collinear', 'zero_importance', 'low_importance'] methods have been run

          Removed 190 features including one-hot features.
          print('Original Number of Features', train.shape[1])
          print('Final Number of Features: ', train_removed_all.shape[1])
          Original Number of Features 121
          Final Number of Features: 65

          使用所有方法的替代選項(xiàng)

          如果我們不想一次運(yùn)行一個(gè)識(shí)別方法,則可以使用identify_all 在一次調(diào)用中運(yùn)行所有方法。對(duì)于此功能,我們需要傳入?yún)?shù)字典以用于每種單獨(dú)的識(shí)別方法。

          以下代碼在一個(gè)調(diào)用中完成了上述步驟。

          fs = FeatureSelector(data = train, labels = train_labels)

          fs.identify_all(selection_params = {'missing_threshold': 0.6, 'correlation_threshold': 0.98,
          'task': 'classification', 'eval_metric': 'auc',
          'cumulative_importance': 0.99})
          17 features with greater than 0.60 missing values.

          4 features with a single unique value.

          21 features with a correlation magnitude greater than 0.98.

          Training Gradient Boosting Model

          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [46] valid_0's auc: 0.743917 valid_0's binary_logloss: 0.254668
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [82] valid_0's auc: 0.766619 valid_0's binary_logloss: 0.244264
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [55] valid_0's auc: 0.72614 valid_0's binary_logloss: 0.26157
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [81] valid_0's auc: 0.756286 valid_0's binary_logloss: 0.251242
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [39] valid_0's auc: 0.686351 valid_0's binary_logloss: 0.269367
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [41] valid_0's auc: 0.744124 valid_0's binary_logloss: 0.255549
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [90] valid_0's auc: 0.761742 valid_0's binary_logloss: 0.249119
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [49] valid_0's auc: 0.751569 valid_0's binary_logloss: 0.254504
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [76] valid_0's auc: 0.726789 valid_0's binary_logloss: 0.257181
          Training until validation scores don't improve for 100 rounds.
          Early stopping, best iteration is:
          [46] valid_0's auc: 0.714889 valid_0's binary_logloss: 0.260482

          80 features with zero importance after one-hot encoding.

          115 features required for cumulative importance of 0.99 after one hot encoding.
          124 features do not contribute to cumulative importance of 0.99.

          150 total features out of 255 identified for removal after one-hot encoding.
          train_removed_all_once = fs.remove(methods = 'all', keep_one_hot = True)
          ['missing', 'single_unique', 'collinear', 'zero_importance', 'low_importance'] methods have been run

          Removed 150 features.
          fs.feature_importances.head()

          featureimportancenormalized_importancecumulative_importance
          0EXT_SOURCE_2165.30.0910740.091074
          1EXT_SOURCE_3154.70.0852340.176309
          2EXT_SOURCE_197.50.0537190.230028
          3DAYS_BIRTH84.60.0466120.276639
          4DAYS_REGISTRATION75.90.0418180.318457

          由于特征重要性已更改,因此刪除的特征數(shù)略有差異。由缺失的(missing)、單一的(single_unique)和共線( collinear)確定要?jiǎng)h除的特征數(shù)量將保持不變,因?yàn)樗鼈兪谴_定性的,但是由于多次訓(xùn)練模型,零重要性( zero_importance )和低重要性(low_importance )的特征數(shù)量可能會(huì)有所不同。

          結(jié)論

          本筆記本演示了如何使用FeatureSelector類從數(shù)據(jù)集中刪除特征。此實(shí)現(xiàn)中有幾個(gè)重要注意事項(xiàng):

          • 在機(jī)器學(xué)習(xí)模型的多次運(yùn)行中,特征重要性將發(fā)生變化。
          • 決定是否保留從一個(gè)獨(dú)熱編碼創(chuàng)建的額外特征。
          • 為不同的參數(shù)嘗試幾個(gè)不同的值,以確定哪些參數(shù)最適合機(jī)器學(xué)習(xí)任務(wù)。
          • 對(duì)于相同的參數(shù),缺失的(missing)、單一的(single_unique)和共線( collinear)的輸出將保持不變。
          • 特征選擇是機(jī)器學(xué)習(xí)工作流中的一個(gè)關(guān)鍵步驟,它可能需要多次迭代來(lái)優(yōu)化。
            我很感激你對(duì)這個(gè)項(xiàng)目的任何評(píng)論、反饋或幫助。

            代碼和數(shù)據(jù)下載地址:

            https://github.com/fengdu78/Data-Science-Notes/tree/master/9.feature-engineering/FeatureSelectorUsage

          參考

          WillKoehrsen:https://github.com/WillKoehrsen/feature-selector


          往期精彩回顧





          獲取一折本站知識(shí)星球優(yōu)惠券,復(fù)制鏈接直接打開(kāi):

          https://t.zsxq.com/y7uvZF6

          本站qq群704220115。

          加入微信群請(qǐng)掃碼:

          瀏覽 73
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  特黄录像 | 97资源人人 | 欧美色图日韩色图 | 91爱爱网址 | 亚欧成人精品无码视频在线观看 |