1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        機器學(xué)習(xí)庫 Scikit-learn 版本更新了,10個新玩法!

        共 3943字,需瀏覽 8分鐘

         ·

        2021-02-09 12:07

        作者:Jeff Hale 轉(zhuǎn)自:機器之心
        Scikit-learn 更新了,新特性主要包括選擇超參數(shù)更快的方法、ICE 圖、直方圖 boosting 改進、OneHotEncoder 支持缺失值等。


        自 2007 年發(fā)布以來,Scikit-learn 已經(jīng)成為 Python 領(lǐng)域非常重要的機器學(xué)習(xí)庫,支持分類、回歸、降維和聚類四大機器學(xué)習(xí)算法,還包括了特征提取、數(shù)據(jù)處理和模型評估三大模塊。


        總的來說,Scikit-learn 有以下優(yōu)點:


        1. 完善的文檔,上手容易;

        2. 豐富的 API,在學(xué)術(shù)界頗受歡迎;

        3. 封裝了大量的機器學(xué)習(xí)算法,包括 LIBSVM 和 LIBINEAR 等;

        4. 內(nèi)置了大量數(shù)據(jù)集,節(jié)省了獲取和整理數(shù)據(jù)集的時間。


        和其他眾多的開源項目一樣,Scikit-learn 目前主要由社區(qū)成員自發(fā)進行維護??赡苁怯捎诰S護成本的限制,Scikit-learn 相比其他項目要顯得更為保守。但在剛剛到來的 2021 年,Scikit-learn 0.24.0 版本更新了,讓我們看看新版本有哪些值得關(guān)注的新特性。


        1. 選擇超參數(shù)更快的方法


        HalvingGridSearchCV 和 HalvingRandomSearchCV 將 GridSearchCV 和 RandomizedSearchCV 合并為超參數(shù)調(diào)優(yōu)家族中資源密集度較低的成員。


        新類使用錦標賽方法(tournament approach)選擇最佳超參數(shù)。它們在觀測數(shù)據(jù)的子集上訓(xùn)練超參數(shù)組合,得分最高的超參數(shù)組合會進入下一輪。在下一輪中,它們會在大量觀測中獲得分數(shù)。比賽一直持續(xù)到最后一輪。


        確定傳遞給 HalvingGridSearchCV 或 halvingAndomSearchCV 的超參數(shù)需要進行一些計算,你也可以使用合理的默認值。


        HalvingGridSearchCV 使用所有超參數(shù)組合。RandomGridSearchCV 使用隨機子集,就如 RandomizedSearchCV 一樣。


        一些建議:


        • 如果沒有太多的超參數(shù)需要調(diào)優(yōu),并且 pipeline 運行時間不長,請使用 GridSearchCV;

        • 對于較大的搜索空間和訓(xùn)練緩慢的模型,請使用 HalvingGridSearchCV;

        • 對于非常大的搜索空間和訓(xùn)練緩慢的模型,請使用 HalvingRandomSearchCV。


        在使用之前,這些類需要從 experimental 模塊導(dǎo)入:


        • from sklearn.experimental import enable_halving_search_cv

        • from sklearn.model_selection import HalvingRandomSearchCV?

        • from sklearn.model_selection import HalvingGridSearchCV


        2. ICE 圖


        Scikit-learn 0.23 版本引入了部分依賴圖(PDP),PDP 對顯示平均特征非常重要。而 Scikit-learn 0.24 版本則提供了顯示個體條件期望(ICE)圖的選項。


        與 PDP 一樣,ICE 圖顯示了目標和輸入特征之間的依賴關(guān)系。不同之處在于, ICE 圖顯示了對每個樣本特征的預(yù)測依賴性——每個樣本一行。特征的平均 ICE 為 PDP。


        通過將關(guān)鍵字參數(shù) kind='individual'傳遞給 plot_partial_dependency 函數(shù)可以查看 ICE 圖。而 PDP 和 ICE 則可以通過關(guān)鍵字參數(shù) kind='both'進行查看。



        來自 scikit-learn gapminder 數(shù)據(jù)集的 PDP 和 ICE 圖。


        3. 直方圖 boosting 改進


        受 LightGBM 啟發(fā), HistGradientBoostingRegressor 和 HistGradientBoostingClassifier 現(xiàn)在有一個 categorical_features 參數(shù),可用來提供分類特征支持。因為基于直方圖的 booster 支持連續(xù)特征,這是一個不錯的選擇。與 one-hot 編碼相比,它節(jié)省了訓(xùn)練時間,并且性能優(yōu)于其他編碼選項。


        但是,模型的輸入特征需要是數(shù)值型的。如果分類特征不是數(shù)值型的,可以使用 OrdinalEncoder 進行數(shù)字編碼。然后通過傳遞一個布爾掩碼或一個整數(shù)數(shù)組來告訴 booster 哪些特征是用來分類的。例如:


        model = HistGradientBoostingRegressor(
        categorical_features=[True, False]
        )



        在 scikit-learn 0.24 版本中,直方圖 boosting 算法在速度和內(nèi)存使用方面得到了改進。在 2020 年末,HistGradientBoostingClassifier 的基準擬合速度(benchmark fit speed)下降了近 75%。


        此外,請注意,基于直方圖的估計器支持缺失值,因此,如果你不需要填充缺失值,則無需進行插補。這些估計器還處于試驗階段,因此啟用估計器需要從 sklearn.experimental 導(dǎo)入。


        4. 前向選擇用于特征選擇


        選擇特征子集時,SequentialFeatureSelector 從無特征開始,通過前向選擇,逐漸添加特征,首先添加第一個最有價值的特征,然后添加第二個最有價值的特征,依此類推,直到到達選擇的停止點。


        不同于特征選擇轉(zhuǎn)換器 RFE 和 SelectFromModel,SequentialFeatureSelector 不需要底層模型來公開 coef_或 feature_importances_屬性。但是,SequentialFeatureSelector 可能比 RFE 和 SelectFromModel 這兩個選項慢,因為它使用交叉驗證來評估模型。


        5. 多項式特征展開的快速逼近


        PolynomialFeatures 轉(zhuǎn)換器創(chuàng)建交互項和特征的高階多項式。然而,這會讓模型訓(xùn)練變得非常緩慢。來自 kernel_approximation 命名空間的 PolynomialCountSketch 核近似函數(shù)提供了一種更快的方法來訓(xùn)練具有預(yù)測優(yōu)勢的線性模型,該模型可以使用 PolynomialFeatures 進行近似。


        或者,你可以將 PolynomialCountSketch 視為具有徑向基函數(shù)核的支持向量機的更快版本,只是在預(yù)測方面,性能差一點。


        PolynomialFeatures 返回平方特征和交互項(如果需要,還可以返回高階多項式)。相反,PolynomialCountSketch 返回在 n_components 參數(shù)中指定的特征數(shù)。默認值為 100,建議文檔字符串(docstring)中包含的特征數(shù)量是原始特征數(shù)量的 10 倍。這些特征表示多項式特征展開近似,但不能直接解釋。


        6. 用于半監(jiān)督學(xué)習(xí)的 SelfTrainingClassifier


        SelfTrainingClassifier 是一個新的用于半監(jiān)督學(xué)習(xí)的元分類器。它允許所有可以預(yù)測屬于目標類的樣本概率的監(jiān)督分類器作為半監(jiān)督分類器,從未標記的觀測結(jié)果中學(xué)習(xí)。


        請注意,y_train 中未標記值必須為 - 1,不能設(shè)置為 null。


        7. 平均絕對百分比誤差 (MAPE)


        mean_absolute_percentage_error 函數(shù)現(xiàn)已被添加為回歸問題評分指標。和 R-squared 一樣,MAPE 在不同的回歸問題中提供了一些比較值。


        你可以使用 np.mean(np.abs((y_test — preds)/y_test)) 手動計算 MAPE,但總體來說,這個函數(shù)還是非常有用的。


        8. OneHotEncoder 支持缺失值


        scikit-learn 0.24 版本的 OneHotEncoder 可以處理缺失值。如果在 X_train 中有一個 null 值,那么在轉(zhuǎn)換后的列中將有一個列來表示缺失值。


        9. OrdinalEncoder 可以處理測試集中的新值


        你是否有存在于測試集中、但在訓(xùn)練集中沒有的類別?如果有這種情況的話,將 handle_unknown='use_encoded_value' 關(guān)鍵字參數(shù)和新的 unknown_value 參數(shù)一起使用。你可以將 unknown_value 參數(shù)設(shè)置為未出現(xiàn)在序數(shù)編碼值中的整數(shù)或 np.nan。這使得 OrdinalEncoder 更易于使用。


        10. 遞歸式特征消除(RFE)接受一定比例的特征保留


        向 n_features_to_select 傳遞一個 0 到 1 之間的浮點數(shù),以控制要選擇特性的百分比。這種添加使得以編程方式消除部分特征變得更容易。


        原文鏈接:https://towardsdatascience.com/the-10-best-new-features-in-scikit-learn-0-24-f45e49b6741b


        也可以加一下老胡的微信
        圍觀朋友圈~~~


        推薦閱讀

        (點擊標題可跳轉(zhuǎn)閱讀)

        干掉 LaTeX !用BookDown寫本書
        101道Numpy、Pandas練習(xí)題
        【資源干貨】香港中文大學(xué)《深度學(xué)習(xí)導(dǎo)論》2021課件
        機器學(xué)習(xí)深度研究:特征選擇中幾個重要的統(tǒng)計學(xué)概念

        老鐵,三連支持一下,好嗎?↓↓↓

        瀏覽 44
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            热99精品| 嫩草影院久久 | 在线主播精品国产 | 成人网在线看 | 国产CD系列TS人妖视频 | 大香蕉插插插 | 我要操逼网视频 | 国产99久久久国产精品~~牛 | 2024黄色网址 | 免费区欧美一级毛片私人教师 |