如何在Apache Pyspark中運行Scikit-learn模型

2021-01-09 不靠譜的貓

在本文中,我們將了解如何在Apache Pyspark中運行Scikit-learn模型,並討論有關每個步驟的細節。如果您已經準備好了機器學習模型,則可以直接跳到「 pyspark wrapper」部分,也可以通過以下步驟創建一個簡單的scikit learn機器學習模型。

scikit learn機器學習模型:

我們使用Python創建一個簡單的機器學習模型:

將機器學習模型保存到磁碟

pyspark wrapper

讓我們考慮一下pyspark dataframe (df)中提供的運行預測所需的特徵

創建一個python函數,該函數接受這四個特性作為參數,並將預測的分數作為輸出進行返回

將python函數轉換為pyspark UDF。這裡有兩種方式:

1、簡單地將python函數註冊為pyspark的UDF

這是最簡單的選項,但是每行的每個pyspark執行程序都將調用python函數(預測變量),如果你有一個像我們這樣的非常小的機器學習模型是可以的,但是如果你有一個大的序列化機器學習模型(> 100mb),從磁碟一次又一次地打開和讀取模型是非常低效的。

2、將模型廣播給spark執行者並進行預測

為了消除1中的低效率,此技術允許從硬碟讀取一次模型並將模型發送到所有spark執行程序。

相關焦點

  • 利用Spark 和 scikit-learn 將你的模型訓練加快 100 倍
    當我們使用 Spark 進行數據處理時,我們首選的機器學習框架是 scikit-learn。隨著計算機變得越來越便宜,機器學習解決方案的上市時間變得越來越關鍵,我們探索了加快模型訓練的各種方法。其中一個解決方案是將 Spark 和 scikit-learn 中的元素組合到我們自己的混合解決方案中。
  • PySpark源碼解析,用Python調用高效Scala接口,搞定大規模數據分析
    然而,在數據科學領域,Python 一直佔據比較重要的地位,仍然有大量的數據工程師在使用各類 Python 數據處理和科學計算的庫,例如 numpy、Pandas、scikit-learn 等。同時,Python 語言的入門門檻也顯著低於 Scala。
  • Scikit-learn玩得很熟了?這些功能你都知道嗎?
    接下來本文將列舉幾個scikit-learn庫中鮮為人知的方法或接口。管道(Pipeline)這可以用來將多個估計量鏈化合一。因為在處理數據時,通常有著一系列固定的步驟,比如特徵選擇、歸一化和分類,此時這個方法將非常有用。
  • Python機器學習5:使用scikit-learn實現三種集成學習Bagging算法
    在這篇文章中,將主要講解Bagging算法的常見三種模型,並介紹如何使用scikit-learn實現這三種模型。後面幾篇文章將講解Boosting和Majority Voting算法。Bagging算法Bagging算法指的是利用數據集訓練多個子模型,然後對多個子模型進行綜合,最終對所有子模型預測結果取平均值,作為最終的模型預測結果。
  • 開源機器學習框架:Scikit-learn API簡介
    而在這些分支版本中,最有名,也是專門面向機器學習的一個就是Scikit-learn。和其他眾多的開源項目一樣,Scikit-learn目前主要由社區成員自發進行維護。可能是由於維護成本的限制,Scikit-learn相比其他項目要顯得更為保守。
  • CDA承接的全球頂級機器學習Scikit-learn 中文社區上線啦!
    (注:scikit-learn的官網是www.scikit-learn.org,CDA承接的中文社區網址是www.scikit-learn.org.cn,這同時也標誌著CDA與全球頂級深度學習和機器學習框架更進一步融合,CDA認證更加得到全球頂級技術框架的認可!
  • Python粉都應該知道的開源機器學習框架:Scikit-learn入門指南
    模型選擇是指對於給定參數和模型的比較、驗證和選擇,其主要目的是通過參數調整來提升精度。目前Scikit-learn實現的模塊包括:格點搜索,交叉驗證和各種針對預測誤差評估的度量函數。數據預處理是指數據的特徵提取和歸一化,是機器學習過程中的第一個也是最重要的一個環節。
  • 如何使用PySpark來利用機器學習模型對流數據進行預測?
    首要,如何收集大規模的數據?如何確保一旦生成並收集數據,機器學習管道就會繼續產生結果?這些都是業界面臨的重大挑戰,以及為什麼流數據的概念在企業中越來越受到關注。增加處理流數據的能力將極大地擴展當前的數據科學產品投資組合。這是業界急需的技能,若能熟練掌握它,將幫助你擔負起下一個數據科學角色。
  • WePay機器學習反欺詐實踐:Python+scikit-learn+隨機森林
    【編者按】將機器學習算法用於金融領域的一個很好的突破口是反欺詐,在這篇博文中,WePay介紹了支付行業構建機器學習模型應對很難發現的shell selling欺詐的實踐心得。WePay採用了流行的Python、scikit-learn開源學習機器學習工具以及隨機森林算法。
  • Scikit-Learn 學得如何?程式設計師不容錯過十大實用功能來襲
    這個模型本質上是一個「笨」模型,通常它只能預測最常出現的類別。這個模型可以為你的「智能」模型提供一個基準,這樣才能判斷出模型的效果要優於隨意選擇的結果。Scikit-learn包含一個處理分類任務的DummyClassifier()和一個處理回歸問題的DummyRegressor()。
  • 使用scikit-learn進行特徵選擇
    scikit-learn中提供了用於特徵選擇的模塊feature_selection,主要方法包括方差移除法,卡方檢驗法,基於L1的特徵選擇和基於樹的特徵選擇
  • 百聞不如一練:可視化調試模型超參數!
    以下使用scikit-learn中數據集進行分享。其代碼示例如下所示:代碼中:以下是支持向量機的驗證曲線,調節的超參數gamma共有5個值,每一個點的分數是五折交叉驗證(cv=5)的均值。當想看模型多個超參數與模型評分之間的關係時,使用scikit-learn中validation curve就難以實現,因此可以考慮繪製三維坐標圖。
  • Python機器學習7:如何保存、加載訓練好的機器學習模型
    本文將介紹如何使用scikit-learn機器學習庫保存Python機器學習模型、加載已經訓練好的模型。學會了這個,你才能夠用已有的模型做預測,而不需要每次都重新訓練模型。本文將使用兩種方法來實現模型的保存和加載:Pickle和joblib。
  • 超參數調整實戰:scikit-learn配合XGBoost的競賽top20策略
    快速學習如何為XGboost優化超參數!在過去的幾年中,XGBoost被廣泛用於表格數據推斷,並且贏得了數百個挑戰。但是,僅僅通過XGBoost並不能完成完成整的解決方案,同樣的模型為什麼有些人能獲得更好的準確性呢?除了經驗方面的差異,還有一個事實,那就是他們優化了超參數!
  • 來看看如何生成測試數據集吧!
    scikit-learn Python 庫提供一套函數,用於從可配置測試問題中生成樣本來進行回歸和分類在本教程中,你將學習測試問題及如何在 Python 中使用 scikit-learn 進行測試。完成本教程後,你將知道:如何生成多類分類預測測試問題如何生成二進位分類預測測試問題如何生成線性回歸預測測試問題讓我們開始吧。
  • 如何用Python計算機器學習中特徵的重要程度?
    特徵重要性在預測建模項目中起著重要作用,包括提供對數據、模型的見解,以及如何降維和選擇特徵,從而提高預測模型的的效率和有效性。在本教程中,我將會闡述用於python機器學習的特徵重要性。檢查Scikit-Learn版本首先,確認你已安裝最新版本的scikit-learn庫。這非常重要,因為在本教程中,我們我們研究的一些模型需要最新版的庫。
  • 鳶尾花預測:如何創建機器學習Web應用程式?
    通過既有框架(如Django或Flask)對傳統機器學習模型進行部署,可能是一項艱巨耗時的任務。本文就將展示如何在Python庫中使用streamlit,用不到50行的代碼構建一個簡單的基於機器學習的數據科學web應用程式。
  • GPU上的隨機森林:比Apache Spark快2000倍
    設置Spark集群不在本文的討論範圍之內,但是一旦準備好集群,就可以在Jupyter Notebook中運行以下命令來初始化Spark:import findsparkfindspark.init()from pyspark.sql import SparkSessionspark = (SparkSession .builder .config