python pmml评分库
pypmml的Python项目详细描述
PYPMML
pypmml是一个python pmml评分库,它实际上是用于PMML4S的python api。
先决条件
- Java=1.8
- python 2.7或>;=3.5
依赖关系
- PY4J
- 熊猫(可选)
安装
pip install pypmml
或者从github安装最新版本:
pip install --upgrade git+https://github.com/autodeployai/pypmml.git
用法
从各种源(如文件名、字符串或字节数组)加载模型。
frompypmmlimportModel# The model is from http://dmg.org/pmml/pmml_examples/KNIME_PMML_4.1_Examples/single_iris_dectree.xmlmodel=Model.fromFile('single_iris_dectree.xml')
调用
predict(data)
来预测不同类型的新值,例如dict、json、pandas的序列或数据帧。# data in dictresult=model.predict({'sepal_length':5.1,'sepal_width':3.5,'petal_length':1.4,'petal_width':0.2})>>>print(result){'Probability':1.0,'Node_ID':'1','Probability_Iris-virginica':0.0,'Probability_Iris-setosa':1.0,'Probability_Iris-versicolor':0.0,'PredictedValue':'Iris-setosa'}# data in 'records' jsonresult=model.predict('[{"sepal_length": 5.1, "sepal_width": 3.5, "petal_length": 1.4, "petal_width": 0.2}]')>>>print(result)[{"Probability":1.0,"Probability_Iris-versicolor":0.0,"Probability_Iris-setosa":1.0,"Probability_Iris-virginica":0.0,"PredictedValue":"Iris-setosa","Node_ID":"1"}]# data in 'split' jsonresult=model.predict('{"columns": ["sepal_length", "sepal_width", "petal_length", "petal_width"], "data": [[5.1, 3.5, 1.4, 0.2]]}')>>>print(result){"columns":["PredictedValue","Probability","Probability_Iris-setosa","Probability_Iris-versicolor","Probability_Iris-virginica","Node_ID"],"data":[["Iris-setosa",1.0,1.0,0.0,0.0,"1"]]}
如何使用熊猫
importpandasaspd# data in Seriesresult=model.predict(pd.Series({'sepal_length':5.1,'sepal_width':3.5,'petal_length':1.4,'petal_width':0.2}))>>>print(result)Node_ID1PredictedValueIris-setosaProbability1Probability_Iris-setosa1Probability_Iris-versicolor0Probability_Iris-virginica0Name:0,dtype:object# The data is from here: http://dmg.org/pmml/pmml_examples/Iris.csvdata=pd.read_csv('Iris.csv')# data in DataFrameresult=model.predict(data)>>>print(result)Node_IDPredictedValueProbabilityProbability_Iris-setosaProbability_Iris-versicolorProbability_Iris-virginica01Iris-setosa1.0000001.00.0000000.00000011Iris-setosa1.0000001.00.0000000.000000....................14810Iris-virginica0.9782610.00.0217390.97826114910Iris-virginica0.9782610.00.0217390.978261[150rowsx6columns]
关闭PY4J的网关以释放资源。
Model.close()
在Pyspark中使用
请参阅PyPMML-Spark项目。
支架
如果您对pypmml库有任何疑问,请在此存储库上打开问题。
对项目的反馈和贡献,无论是哪一种,都是非常受欢迎的。
许可证
pypmml在APL 2.0下获得许可。