遊戲夜讀|Scikit-learn迎來0.21版本

2021-01-18 遊戲夜讀

2019年5月,Scikit-learn(sklearn)迎來了歷史性的0.21版本,不再支持Python 2.7和3.4,僅支持Python 3.5及後續版本。此前,2018年9月0.20版本發布時,已對此做出了提前說明。

sklearn版本更新內容的六大分類

在了解這一次的版本更新內容前,先熟悉一下sklearn對更新內容的分類習慣。

sklearn將更新內容劃分成六個大類,由四種顏色標識。分別是:

綠色,重大新功能 Major Feature;綠色,新功能 Feature;藍色,效率提高 Efficiency;藍色,性能增強 Enhancement;紅色,缺陷修復 Fix;橙色,接口改動 API Change。在0.21版本發布後,陸續更新了幾個以缺陷修復為主的小版本。考慮到0.21版本的更新內容不算少,所以,挑選綠色標識的內容,主要關注一下新增的功能。

0.21的綠色功能更新內容摘要

一共有24個綠色標籤的功能性改動,涉及到了14個類別。其中,13類是具體模塊,剩下的1類,是牽涉多個模塊的基礎性改動。

sklearn.cluster 新增了1項

一個聚類算法 cluster.OPTICS,比cluster.DBSCAN更方便調參。sklearn.ensemble 新增了2項

兩個實驗性質的梯度下降樹GBT,分別是ensemble.HistGradientBoostingClassifier 和 ensemble.HistGradientBoostingRegressor,據說是受到了LightGBM的啟發。當樣本數量大於數萬個時,會比ensemble.GradientBoostingRegressor 和 ensemble.GradientBoostingClassifier要快。但因為是實驗性質的,功能還不健全,sklearn也可能隨時修改這一項更新的內容,對結果不做一致性的保證。添加了ensemble.VotingRegressor,它為回歸問題提供了等效的ensemble.VotingClassifier。sklearn.impute 新增了2項

添加了缺失值處理的新方法 impute.IterativeImputer,實驗性質。impute.SimpleImputer 和 impute.IterativeImputer 新增了一個參數 「add_indicator」,實現了impute.MissingIndicator的轉換輸出。這樣一來,預測模型也可以解釋缺失值了。sklearn.inspection 新增了1項

號外!號外!現在凡是有 「predict_proba」方法的回歸或者分類器都支持部分依賴圖(inspection.plot_partial_dependence)啦!sklearn.isotonic 新增了1項

允許在 isotonic.IsotonicRegression 處理不同的數據類型了,比如:float32。sklearn.linear_model 新增了2項

通過選擇「saga」解算器,linear_model.LogisticRegression 和 linear_model.LogisticRegressionCV 現在支持Elastic-Net懲罰約束了。添加了 linear_model.lars_path 的加強版 linear_model.lars_path_gram,可以直接不提供 X 和 y 就開搞。sklearn.metrics 新增了4項

為單輸出回歸提供了 metrics.max_error 指標,以及相應的 「max_error」得分參數。可以計算每個類別的混淆矩陣了!新增的 metrics.multilabel_confusion_matrix 有助於調參。新增的 metrics.jaccard_score 可以用來計算 Jaccard係數,操作方式跟 metrics.f1_score 差不多。之前「Haversine距離」可以通過最近鄰計算得到,現在新增了metrics.pairwise.haversine_distances ,可以通過 metrics.pairwise_distances 設置「metric=『pairwise』」實現。sklearn.model_selection 新增了1項

新增了兩個類,分別是:GridSearchCV, RandomizedSearchCV。現在允許「refit=callable」來加強查找的可伸縮性,具體可以參考《模型複雜度和交叉驗證分數的平衡之道》。sklearn.neighbors 新增了1項

添加了 neighbors.NeighborhoodComponentsAnalysis,它實現了近領成分分析算法。sklearn.pipeline 新增了2項

pipeline.Pipeline 現在可以使用索引切片了!比如:my_pipleline[0:-1]。提取的子序列可以作為另一個Pipeline實例。還可以直接索引管道的特定步驟,跟通過「named_steps」一樣的效果,但更方便。比如:my_pipeline['svc']。為pipeline.Pipeline,compose.ColumnTransformer 和 pipeline.FeatureUnion以及相應的「make_」 添加了可選參數「verbose」,用來顯示每個步驟的進度和時間。sklearn.preprocessing 新增了1項

preprocessing.OneHotEncoder 現在支持通過「drop」刪除某個類別的特徵。這在存在共線性的時候比較實用,例如:將結果數據輸入神經網絡或非規則化回歸時。sklearn.tree 新增了3項

決策樹更容易畫出來了!現在可以基於「matplotlib」,通過 tree.plot_tree作圖,不再依賴難安裝的「dot」庫了。現在可以通過 tree.export_text 導出閱讀性良好的「文本格式」決策樹了。tree.BaseDecisionTree 新增了 get_n_leaves() 和 get_depth() 兩個方法。重點是:基於這個基礎算法的那些模型都同步更新了這兩個方法。比如:tree.DecisionTreeClassifier,tree.DecisionTreeRegressor,tree.ExtraTreeClassifier,tree.ExtraTreeRegressor。sklearn.utils 新增了1項

utils.resample 現在可以通過新增的「stratify」參數,設置根據分布分層取樣。涉及多個模塊的基礎更新,新增有2項

完全重寫了「_repr_()」方法,現在用的是Python標準庫的列印方式,很優雅。這個方法用在調用 print(estimator) 的時候。但想改的話也可以,通過修改 sklearn.set_config 的 「print_changed_only」參數。引入了Estimator Tags 估算器標籤,字典形式存儲,通過調用「_get_tags()」方法獲取。像sklearn.utils.estimator_checks.check_estimator 可以使用這些標籤決定運行哪些測試以及輸入哪些數據是合適的。標籤可以依賴於估算器的參數設置,甚至系統控制,一般只在運行的時候才真正生效。標籤作為注釋,可以標識具體某個估算器的功能、數據要求、支持的輸出類型、支持的方法等信息。以上就是sklearn的0.21版本綠色功能性改動部分的摘要,更詳細準確的內容就必須前往官方文檔查閱了。

相關焦點

  • 開源機器學習框架:Scikit-learn API簡介
    基於SciPy,目前開發者們針對不同的應用領域已經發展出了為數眾多的分支版本,它們被統一稱為Scikits,即SciPy工具包的意思。而在這些分支版本中,最有名,也是專門面向機器學習的一個就是Scikit-learn。和其他眾多的開源項目一樣,Scikit-learn目前主要由社區成員自發進行維護。可能是由於維護成本的限制,Scikit-learn相比其他項目要顯得更為保守。
  • Python粉都應該知道的開源機器學習框架:Scikit-learn入門指南
    基於SciPy,目前開發者們針對不同的應用領域已經發展出了為數眾多的分支版本,它們被統一稱為Scikits,即SciPy工具包的意思。而在這些分支版本中,最有名,也是專門面向機器學習的一個就是Scikit-learn。
  • 利用Spark 和 scikit-learn 將你的模型訓練加快 100 倍
    當我們使用 Spark 進行數據處理時,我們首選的機器學習框架是 scikit-learn。隨著計算機變得越來越便宜,機器學習解決方案的上市時間變得越來越關鍵,我們探索了加快模型訓練的各種方法。其中一個解決方案是將 Spark 和 scikit-learn 中的元素組合到我們自己的混合解決方案中。
  • CDA承接的全球頂級機器學習Scikit-learn 中文社區上線啦!
    基於CDA全國教研團隊近5年的Scikit-learn課程研發經驗,為了響應越來越多的數據科學愛好者的學習需求,CDA通過一年多的Scikit-learn文檔的翻譯和認真校對,並在CDA研發部門的密切配合下,Scikit-learn中文社區終於上線了。
  • Scikit-learn玩得很熟了?這些功能你都知道嗎?
    不管是對機器學習的初學者還是經驗豐富的專業人士來說,Scikit-learn庫都是應該熟練掌握的優秀軟體包。然而,即使是有經驗的機器學習從業者可能也沒有意識到這個包中所隱藏的一些特性,這些特性可以輕鬆地幫助他們完成任務。接下來本文將列舉幾個scikit-learn庫中鮮為人知的方法或接口。
  • 如何在Apache Pyspark中運行Scikit-learn模型
    在本文中,我們將了解如何在Apache Pyspark中運行Scikit-learn模型,並討論有關每個步驟的細節。如果您已經準備好了機器學習模型,則可以直接跳到「 pyspark wrapper」部分,也可以通過以下步驟創建一個簡單的scikit learn機器學習模型。
  • 使用scikit-learn進行特徵選擇
    scikit-learn中提供了用於特徵選擇的模塊feature_selection,主要方法包括方差移除法,卡方檢驗法,基於L1的特徵選擇和基於樹的特徵選擇
  • WePay機器學習反欺詐實踐:Python+scikit-learn+隨機森林
    WePay採用了流行的Python、scikit-learn開源學習機器學習工具以及隨機森林算法。以下是文章內容:什麼是shellselling?雖然欺詐幾乎涉及各種領域,但相對於傳統的買方或賣方僅僅擔心對方是否是騙子,支付平臺需要擔心的是交易雙方。
  • Python機器學習5:使用scikit-learn實現三種集成學習Bagging算法
    在這篇文章中,將主要講解Bagging算法的常見三種模型,並介紹如何使用scikit-learn實現這三種模型。後面幾篇文章將講解Boosting和Majority Voting算法。Bagging算法Bagging算法指的是利用數據集訓練多個子模型,然後對多個子模型進行綜合,最終對所有子模型預測結果取平均值,作為最終的模型預測結果。
  • Scikit-Learn 學得如何?程式設計師不容錯過十大實用功能來襲
    該網站包含21,000多種可用於機器學習項目的數據集。from sklearn.datasets importfetch_openmlX,y = fetch_openml("wine",version=1, as_frame=True, return_X_y=True)利用已訓練好的分類器來訓練基準模型在開發機器學習模型時,一般需要先創建一個基準模型。
  • 超參數調整實戰:scikit-learn配合XGBoost的競賽top20策略
    我們將在Hacker Earth挑戰的數據集上使用scikit-learn配合XGBoost。以下我使用的全部代碼。我排除了分析部分和數據處理部分,因為這不是本文的目標。, 1, 1.5, 2, 5],'subsample': [0.6, 0.8, 1.0],'colsample_bytree': [0.6, 0.8, 1.0],'max_depth': [3, 4, 5]}
  • 神經網絡初學者指南:基於Scikit-Learn的Python模塊
    編者按:這個帖子概述了使用 Scikit-learn在 Python 中設置神經網絡的方法,其最新版本現在已經內置支持神經網絡模型。前幾天最新版本(0.18)剛剛發布,現在已內置支持神經網絡模型。 對 Python 的基本理解對於弄明白這篇文章是必要的,有一些關於Sci-Kit Learn 的使用經驗也是十分有幫助的(但不是必要)。另外,作為一個快速附註,我寫了一篇詳解版的姐妹文章,不過是以 R 語言編寫的(可點擊此處查看)。
  • 拓撲機器學習的神聖三件套:Gudhi,Scikit-Learn和Tensorflow(附...
    , 1.0], "TDA__num_directions": [20], "Estimator": [SVC(kernel="precomputed")]}, {"TDA": [tda.PersistenceWeightedGaussianKernel()], "TDA__bandwidth": [0.1, 0.01], "TDA__weight": [lambda x: np.arctan(x[1
  • 無人深空迎來2.0版本,登頂全球熱銷榜,傳奇程度堪比彩六
    我是遊戲日報的只想過平靜生活的一般上班族殘翼。無人深空在迎來2.0版本後,成功登頂Steam全球熱銷榜榜首,這次還是只是三次大更新中的第一次更新。誰都沒想到這款三年前被眾人所唾棄的遊戲,能走到現在這個地步。
  • 人物模型纖毫畢現《FIFA21》公開次世代版本遊戲截圖
    EA官方新近發布了PS5和Xbox Series X/S版《FIFA21》的兩張遊戲截圖。新發布的遊戲截圖公開了特倫特·亞歷山大·阿諾德和若昂·菲利克斯在《FIFA21》中的角色模型,非常直觀的展現了次世代版本的畫面逼真程度。