Python之pypmml:pypmml的簡介、安裝、使用方法之詳細攻略
Python之pypmml:pypmml的簡介、安裝、使用方法之詳細攻略
目錄
2、利用XGBoost模型對Iris資料訓練並轉為PMML檔案,載入並實現預測
pypmml的簡介
pypmml是一個python pmml評分庫,它實際上是用於PMML4S的python api。pmml經常是跨平臺給java呼叫,借用PMML模型進行上線測試,即採用Python語言做模型訓練,線上採用 Java 載入模型做預測。離線部分負責模型訓練和匯出模型,線上匯入模型並且做預測。當然特徵工程部分主要做特徵變換,例如 分桶,單值編碼,歸一化等。
預測模型標記語言PMML(Predictive Model Markup Language)是一套與平臺和環境無關的模型表示語言,是目前表示機器學習模型的實際標準。PMML是一種可以呈現預測分析模型的事實標準語言。標準東西的好處就是,各種開發語言都可以使用相應的包,把模型檔案轉成這種中間格式,而另外一種開發語言,可以使用相應的包匯入該檔案做線上預測。
從2001年釋出的PMML1.1,到2019年最新4.4,PMML標準已經由最初的6個模型擴充套件到了17個模型,並且提供了挖掘模型(Mining Model)來組合多模型。作為一個開放的成熟標準,PMML由資料探勘組織DMG(Data Mining Group)開發和維護,經過十幾年的發展,得到了廣泛的應用,有超過30家廠商和開源專案(包括SAS,IBM SPSS,KNIME,RapidMiner等主流廠商)在它們的資料探勘分析產品中支援並應用PMML,
PMML是一套基於XML的標準,通過 XML Schema 定義了使用的元素和屬性,主要由以下核心部分組成:
- 資料字典(Data Dictionary),描述輸入資料。
- 資料轉換(Transformation Dictionary和Local Transformations),應用在輸入資料欄位上生成新的派生欄位。
- 模型定義 (Model),每種模型型別有自己的定義。
- 輸出(Output),指定模型輸出結果。
1、PMML優點
- 平臺無關性。PMML可以讓模型部署環境脫離開發環境,實現跨平臺部署,是PMML區別於其他模型部署方法最大的優點。比如使用Python建立的模型,匯出PMML後可以部署在Java生產環境中。
- 互操作性。這就是標準協議的最大優勢,實現了相容PMML的預測程式可以讀取其他應用匯出的標準PMML模型。
- 廣泛支援性。已取得30餘家廠商和開源專案的支援,通過已有的多個開源庫,很多重量級流行的開源資料探勘模型都可以轉換成PMML。
- 可讀性。PMML模型是一個基於XML的文字檔案,使用任意的文字編輯器就可以開啟並檢視檔案內容,比二進位制序列化檔案更安全可靠。
2、PMML的缺點
- 資料處理操作有限。支援不了所有的資料預處理和後處理操作。雖然PMML已經支援了幾乎所有的標準資料處理方式,但是對使用者一些自定義操作,還缺乏有效的支援,很難放到PMML中。
- 模型型別支援有限。特別是缺乏對深度學習模型的支援,PMML下一版5.0會新增對深度模型的支援,目前Nyoka可以支援Keras等深度模型,但生成的是擴充套件的PMML模型。
- PMML是一個鬆散的規範標準,有的廠商生成的PMML有可能不太符合標準定義的Schema,並且PMML規範允許廠商新增自己的擴充套件,這些都對使用這些模型造成了一定障礙。
參考文章:https://zhuanlan.zhihu.com/p/79197337
pypmml的安裝
pip install pypmml
pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple pypmml
pypmml的使用方法
1、基礎案例
heart_data = pandas.read_csv("heart.csv")
#用Mapper定義特徵工程
mapper = DataFrameMapper([
(['sbp'], MinMaxScaler()),
(['tobacco'], MinMaxScaler()),
('ldl', None),
('adiposity', None),
(['famhist'], LabelBinarizer()),
('typea', None),
('obesity', None),
('alcohol', None),
(['age'], FunctionTransformer(np.log)),
])
#用pipeline定義使用的模型,特徵工程等
pipeline = PMMLPipeline([
('mapper', mapper),
("classifier", linear_model.LinearRegression())
])
pipeline.fit(heart_data[heart_data.columns.difference(["chd"])], heart_data["chd"])
#匯出模型檔案
sklearn2pmml(pipeline, "lrHeart.xml", with_repr = True)
2、利用XGBoost模型對Iris資料訓練並轉為PMML檔案,載入並實現預測
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
import pandas as pd
from xgboost import XGBClassifier
seed = 123
iris = datasets.load_iris()
target = 'Species'
features = iris.feature_names
iris_df = pd.DataFrame(iris.data, columns=features)
iris_df[target] = iris.target
X, y = iris_df[features], iris_df[target]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=seed)
pipeline = Pipeline([
('scaling', StandardScaler()),
('xgb', XGBClassifier(n_estimators=5, seed=seed))
])
pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)
y_pred_proba = pipeline.predict_proba(X_test)
from nyoka import xgboost_to_pmml
xgboost_to_pmml(pipeline, features, target, "xgb-iris.pmml")
from pypmml import Model
model = Model.load("xgb-iris.pmml")
model.predict(X_test)
相關文章
- Python之selenium:selenium庫的簡介、安裝、使用方法之詳細攻略Python
- Py之dlib:Python庫之dlib庫的簡介、安裝、使用方法詳細攻略Python
- TF學習——TF之TensorFlow Slim:TensorFlow Slim的簡介、安裝、使用方法之詳細攻略
- Python安裝PyMongo的方法詳細介紹PythonGo
- Python爬蟲之scrapy框架簡介及環境安裝Python爬蟲框架
- rqt的安裝及詳細介紹QT
- python詳細的安裝教程分享!Python
- rabbitmq簡易安裝詳細教程MQ
- vuex詳細介紹和使用方法Vue
- Python安裝教程(非常詳細) python如何安裝使用Python
- Python之pandas:pandas中to_csv()、read_csv()函式的index、index_col引數詳解之詳細攻略Python函式Index
- 【轉】Python之Numpy詳細教程Python
- MySQL中介軟體之ProxySQL(1):簡介和安裝MySql
- Python 與 PyCharm 安裝詳細教程PythonPyCharm
- python之feedparser安裝Python
- nginx之 nginx-1.9.7 編譯安裝、理論簡介Nginx編譯
- 12【線上日誌分析】之RedisLive監控工具的詳細安裝Redis
- ldap安裝詳細LDA
- Linux Centos 7安裝MongoDB(簡單!詳細!)LinuxCentOSMongoDB
- python之程式語言(簡介)01Python
- Linux下安裝與使用MySQL詳細介紹LinuxMySql
- BBED的安裝及簡單的使用方法
- python字典詳細介紹Python
- MySQL之儲存函式詳細介紹艹籟MySql儲存函式
- QPM 之簡介
- ELK之簡介
- Mahout學習之Mahout簡介、安裝、配置、入門程式測試
- KVM簡介,安裝及常見使用詳解
- Nginx安裝(詳細版本)Nginx
- hass安裝tileboard詳細
- MySQL的安裝步驟(詳細)MySql
- 如何安裝leapftp,如何安裝leapftp的詳細教程FTP
- linux伺服器安裝svn超詳細介紹Linux伺服器
- scrapy的簡介與安裝
- Mule的簡介和安裝
- CentOS7.2編譯安裝PHP7.2.3之史上最詳細步驟。CentOS編譯PHP
- Python裝飾器之property()詳解Python
- 超詳細的介紹Python語句Python