Scikit-learn玩得很熟了?這些功能你都知道嗎?

2021-01-11 大數據文摘

大數據文摘作品

編譯:汪小七、笪潔瓊、Aileen

分享一些Scikit-learn程序包裡鮮有人知的遺珠功能。

Scikit-learn是Python所有的機器學習程序包中,你必須掌握的最重要的一個包,它包含各種分類算法,回歸算法和聚類算法,其中包括支持向量機、隨機森林、梯度提升、k均值和基於密度的聚類算法(DBSCAN),且旨在與Python數值庫NumPy和科學庫SciPy進行相互配合。

它通過一個接口,提供了一系列的有監督和無監督算法。此庫希望在生產中使用時,能具有很好的穩健性和支撐性,所以它的著重點在易用性,代碼質量,協同工作,文檔生成和性能等問題上。

不管是對機器學習的初學者還是經驗豐富的專業人士來說,Scikit-learn庫都是應該熟練掌握的優秀軟體包。然而,即使是有經驗的機器學習從業者可能也沒有意識到這個包中所隱藏的一些特性,這些特性可以輕鬆地幫助他們完成任務。接下來本文將列舉幾個scikit-learn庫中鮮為人知的方法或接口。

管道(Pipeline)

這可以用來將多個估計量鏈化合一。因為在處理數據時,通常有著一系列固定的步驟,比如特徵選擇、歸一化和分類,此時這個方法將非常有用。

更多信息:

http://scikit-learn.org/stable/modules/pipeline.html

網格搜索(Grid-search)

超參數在參數估計中是不直接學習的,在scikit-learn庫中,超參數會作為參數傳遞給估計類的構造函數,然後在超參數空間中搜索最佳的交叉驗證分數在構建參數估計量時提供的任何參數都是可以用這種方式進行優化的。

更多信息:

http://scikit-learn.org/stable/modules/grid_search.html#grid-search

驗證曲線(Validation curves)

每種估計方法都有其優缺點,它的泛化誤差可以用偏差、方差和噪音來分解。估計量的偏差就是不同訓練集的平均誤差;估計量的方差是表示對不同訓練集的敏感程度;噪聲是數據本身的一個屬性。

繪製單個超參數對訓練分數和驗證分數的影響是非常有用的,因為從圖中可以看出估計量對於某些超參數值是過擬合還是欠擬合。在Scikit-learn庫中,有一個內置方法是可以實現以上過程的。

更多信息:

http://scikit-learn.org/stable/modules/learning_curve.html

分類數據的獨熱編碼(One-hot encoding of categorical data)

這是一種非常常見的數據預處理步驟,在分類或預測任務中(如混合了數量型和文本型特徵的邏輯回歸),常用於對多分類變量進行二分類編碼。Scikit-learn庫提供了有效而簡單的方法來實現這一點。它可以直接在Pandas數據框或Numpy數組上運行,因此用戶就可以為這些數據轉換編寫一些特殊的映射函數或應用函數。

Scikit-learn庫更多信息:

http://scikit-learn.org/stable/modules/preprocessing.html#encoding-categorical-features

多項式特徵生成(Polynomial feature generation)

對於無數的回歸建模任務來說,一種常用的增加模型複雜程度的有效方法是增加解釋變量的非線性特徵。一種簡單而常用的方法就是多項式特徵,因為它可以得到特徵的高階項和交叉項。而Scikit-learn庫中有現成的函數,它可根據給定的特徵集和用戶選擇的最高多項式生成更高階的交叉項。

更多信息:

http://scikit-learn.org/stable/modules/preprocessing.html#generating-polynomial-features

數據集生成器(Dataset generators)

Scikit-learn庫包含各種隨機樣本生成器,可以根據不同大小和複雜程度來構建人工數據集,且具有分類、聚類、回歸、矩陣分解和流形測試的功能。

更多信息:

http://scikit-learn.org/stable/datasets/index.html#sample-generators

相關報導:

https://heartbeat.fritz.ai/some-essential-hacks-and-tricks-for-machine-learning-with-python-5478bc6593f2

相關焦點

  • Python粉都應該知道的開源機器學習框架:Scikit-learn入門指南
    對Python語言有所了解的科研人員可能都知道SciPy——一個開源的基於Python的科學計算工具包。基於SciPy,目前開發者們針對不同的應用領域已經發展出了為數眾多的分支版本,它們被統一稱為Scikits,即SciPy工具包的意思。而在這些分支版本中,最有名,也是專門面向機器學習的一個就是Scikit-learn。
  • Scikit-Learn 學得如何?程式設計師不容錯過十大實用功能來襲
    隨著時間的推移,該項目發展出了許多便捷的功能,變得越來越容易使用。在本文中,我將介紹你可能不太熟悉的10個最實用的功能。Scikit-learn擁有內置數據集Scikit-learnAPI內置了各種實驗以及真實的數據集。只需一行代碼即可訪問這些數據集,如果你正在學習或者想快速嘗試新功能,那麼這些數據集能助你一臂之力。
  • 利用Spark 和 scikit-learn 將你的模型訓練加快 100 倍
    當我們使用 Spark 進行數據處理時,我們首選的機器學習框架是 scikit-learn。隨著計算機變得越來越便宜,機器學習解決方案的上市時間變得越來越關鍵,我們探索了加快模型訓練的各種方法。其中一個解決方案是將 Spark 和 scikit-learn 中的元素組合到我們自己的混合解決方案中。
  • CDA承接的全球頂級機器學習Scikit-learn 中文社區上線啦!
    (注:scikit-learn的官網是www.scikit-learn.org,CDA承接的中文社區網址是www.scikit-learn.org.cn,這同時也標誌著CDA與全球頂級深度學習和機器學習框架更進一步融合,CDA認證更加得到全球頂級技術框架的認可!
  • 開源機器學習框架:Scikit-learn API簡介
    簡介對Python語言有所了解的科研人員可能都知道SciPy——一個開源的基於Python的科學計算工具包。
  • 如何在Apache Pyspark中運行Scikit-learn模型
    在本文中,我們將了解如何在Apache Pyspark中運行Scikit-learn模型,並討論有關每個步驟的細節。如果您已經準備好了機器學習模型,則可以直接跳到「 pyspark wrapper」部分,也可以通過以下步驟創建一個簡單的scikit learn機器學習模型。
  • Python機器學習5:使用scikit-learn實現三種集成學習Bagging算法
    如果你在解決一個問題時實現了多種模型,但是每個模型的效果都差不多,但是你想要進一步提升最後預測效果,那麼本文將強烈建議你使用集成學習算法來實現!集成學習算法指的是將已有的多種模型綜合起來,實現最終分類或者回歸。一般而言,集成學習可以提高原有算法模型的準確性。
  • WePay機器學習反欺詐實踐:Python+scikit-learn+隨機森林
    WePay採用了流行的Python、scikit-learn開源學習機器學習工具以及隨機森林算法。以下是文章內容:什麼是shellselling?雖然欺詐幾乎涉及各種領域,但相對於傳統的買方或賣方僅僅擔心對方是否是騙子,支付平臺需要擔心的是交易雙方。
  • 使用scikit-learn進行特徵選擇
    scikit-learn中提供了用於特徵選擇的模塊feature_selection,主要方法包括方差移除法,卡方檢驗法,基於L1的特徵選擇和基於樹的特徵選擇
  • 超參數調整實戰:scikit-learn配合XGBoost的競賽top20策略
    我們將在Hacker Earth挑戰的數據集上使用scikit-learn配合XGBoost。以下我使用的全部代碼。我排除了分析部分和數據處理部分,因為這不是本文的目標。(如果有多個核心)如前所述,這是一個隨機搜索,因此並不是所有的參數組合都將被試用,這有助於節省計算時間,並具有超參數的初步建議。
  • 10大機器學習算法,看懂你就是數據科學家
    你得是個博聞強識,又對新鮮事物保持好奇心的人。正因為如此,數據科學家會掌握幾乎所有的常見算法,並精通其中一門,這樣可以快速適應新領域的問題。今天我們就來聊聊,每一位數據科技家都應該了解的10大機器學習算法。下面是關於普遍機器學習算法和快速資源的風暴之旅,準好了嗎?燒腦挑戰開始: 1.
  • 9102年了,你還不知道怎麼做數據科學家嗎?
    它是一項功能,可以在具有行和列的表格結構中操作數據。在 Python 環境中,轉移、可視化以及聚合等所有這些很酷的操作都可以使用數據框架實現。等下,那麼它和 Excel 的區別到底在哪裡呢?我畢業後就在一直在完成這些任務,這是否就意味著我已經是一位數據科學家了?如果你這樣標榜自己更舒服的話,當然可以。
  • 從星際2深度學習環境到神經機器翻譯,上手機器學習這些開源項目必...
    由於我們需要這些數據來訓練機器學習算法,所以獲取高質量的數據集是如今機器學習領域的最大挑戰之一。算法:如何處理和分析數據機器學習算法可利用數據執行特定的任務,最常見的機器學習算法有如下幾種:1.監督學習。
  • Python功能不夠多?來看看如何生成測試數據集吧!
    測試數據集是小型的專用數據集,它可以讓你測試一個機器學習算法或測試工具。數據集中的數據有完整的定義(例如線性或非線性)使你可以探索特定的算法行為。scikit-learn Python 庫提供一套函數,用於從可配置測試問題中生成樣本來進行回歸和分類在本教程中,你將學習測試問題及如何在 Python 中使用 scikit-learn 進行測試。
  • 拓撲機器學習的神聖三件套:Gudhi,Scikit-Learn和Tensorflow(附...
    相當明顯的是後者有個洞,但前者沒有TDA跟蹤這些洞的方式實際上相當簡單。想像給定半徑為R的每個球的圓心都在你點雲的每個點上。如果R=0,這些球的併集就是點雲本身。如果R為無窮,那麼球的併集是整個單位正方形。但如果R被很精心的選擇,球的併集可能存在很多拓撲結構,比如,洞。球併集的例子。對於中間圖的併集,它清晰的組成了一個洞。
  • 在機器學習回歸問題中,你應該使用哪種評估指標?
    用更數學的符號:1 - (∑(y - ) / ∑(y - y))下面是代碼的樣子——改編自scikit-learn,主要的Python機器學習庫。最重要的是,您可以做得比null模型糟糕得多!事實上,你可以預測更壞的情況,結果是一個無窮小的R方。簡而言之,讓我們看看調整後的R和機器學習與統計數據。調整後的R說明增加了更多的預測變量(特徵)。當一個新的預測變量對模型性能的改善超過預期時,調整後的R只會隨著該變量的增加而增加。調整後的R有助於您集中精力使用最節省的模型。
  • 遊戲夜讀|Scikit-learn迎來0.21版本
    2019年5月,Scikit-learn(sklearn)迎來了歷史性的0.21版本,不再支持Python 2.7和3.4,僅支持Python 3.5及後續版本。此前,2018年9月0.20版本發布時,已對此做出了提前說明。sklearn版本更新內容的六大分類在了解這一次的版本更新內容前,先熟悉一下sklearn對更新內容的分類習慣。