PMML,全稱預言模型标記語言(Predictive Model Markup Language),利用XML描述和存儲資料挖掘模型,是一個已經被W3C所接受的标準。PMML是一種基于XML的語言,用來定義預言模型。詳細的介紹可以參考: http://dmg.org/pmml/v4-3/GeneralStructure.html
。
本文将介紹如何在Spark中導出PMML檔案(Python語言)。
首先我們需要安裝jpmml-sparkml-package。具體的安裝細節可以參考:
https://github.com/jpmml/jpmml-sparkml-package 1.利用Git下載下傳JPMML-SparkML-Package projectgit init
git clone https://github.com/jpmml/jpmml-sparkml-package.git
cd jpmml-sparkml-package
如下圖所示:
2.生成uber-JAR檔案
将Spark的Python路徑添加到環境變量
sudo gedit /etc/profile
export PYTHONPATH=$PYTHONPATH:$SPARK_HOME/python
source /etc/profile
再生成uber-JAR檔案
mvn -Ppyspark -Dpython.exe=/usr/bin/python3.5 clean package
注意這裡的python路徑要是你自己的系統裡的Python路徑。耐心等待運作,運作結果如下:
這時jpmml-sparkml-package檔案夾下會多出target檔案夾,如下:
3.将上述的jpmml_sparkml-1.3rc0-py3.5.egg檔案添加到Eclipse的Pydev的libraries中,如下圖:
并且将上述的兩個jar包複制到spark安裝目錄下的jars檔案夾下。
這樣我們就完成了所有的環境配置。接下來我們進行測試:
首先,我們需要資料……資料檔案test_data.csv截圖如下(部分):
完整的資料集可在
http://archive.ics.uci.edu/ml/datasets/Wholesale+customers找到。
在Eclipse中建立test_PMML項目,如下圖:
其中test_pmml.py的python代碼如下:
from pyspark import SparkContext
from pyspark.sql import SparkSession
from pyspark.ml import Pipeline
from pyspark.ml.classification import LogisticRegression
from pyspark.ml.feature import RFormula
from jpmml_sparkml import toPMMLBytes
sc = SparkContext.getOrCreate()
spark = SparkSession.builder.appName("PMML Predict").config("spark.some.config.option", "some-value").getOrCreate()
print("Read file from /home/vagrant/......")
df = spark.read.csv("/home/vagrant/test_data.csv", header = True, inferSchema = True)
print("Reading complete.\n")
print("Processing logistic model......")
formula = RFormula(formula = "target ~ .")
logit = LogisticRegression()
pipeline = Pipeline(stages = [formula, logit])
pipelineModel = pipeline.fit(df)
print("Modeling complete.\n")
print("Exporting pmml file......")
pmmlBytes = toPMMLBytes(sc, df, pipelineModel)
output_rdd = sc.parallelize([pmmlBytes])
output_rdd.saveAsTextFile("pmml_Logit")
print("Export complete.\nThe end.")
運作結果如下:
同時會生成pmml_Logit檔案夾,裡面包含PMML檔案part-00000,内容如下圖(部分):
這樣我們就成功地導出了邏輯回歸模型的PMML檔案!本次分享就到這兒啦~~
參考文獻:
1.PMML介紹:
2.測試資料集:
http://archive.ics.uci.edu/ml/machine-learning-databases/00292/3.
https://stackoverflow.com/questions/39888728/export-models-as-pmml-using-pyspark/39902676#399026764.
注意:本人現已開通兩個微信公衆号: 用Python做數學(微信号為:python_math)以及輕松學會Python爬蟲(微信号為:easy_web_scrape), 歡迎大家關注哦~~