Besides about 500 Python classes which each cover a PMML tag and all constructor parameters/attributes as defined in the standard, Nyoka also provides an increasing number of convenience classes and functions that make the Data Scientist’s life easier for example by reading or writing any PMML file in one line of code from within your favorite Python environment.
可以使用以下命令从PyPi安装它:
pip install nyoka
示例代码
例1
import pandas as pd
from sklearn import datasets
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler, Imputer
from sklearn_pandas import DataFrameMapper
from sklearn.ensemble import RandomForestClassifier
iris = datasets.load_iris()
irisd = pd.DataFrame(iris.data, columns=iris.feature_names)
irisd['Species'] = iris.target
features = irisd.columns.drop('Species')
target = 'Species'
pipeline_obj = Pipeline([
("mapping", DataFrameMapper([
(['sepal length (cm)', 'sepal width (cm)'], StandardScaler()) ,
(['petal length (cm)', 'petal width (cm)'], Imputer())
])),
("rfc", RandomForestClassifier(n_estimators = 100))
])
pipeline_obj.fit(irisd[features], irisd[target])
from nyoka import skl_to_pmml
skl_to_pmml(pipeline_obj, features, target, "rf_pmml.pmml")
例2
from keras import applications
from keras.layers import Flatten, Dense
from keras.models import Model
model = applications.MobileNet(weights='imagenet', include_top=False,input_shape = (224, 224,3))
activType='sigmoid'
x = model.output
x = Flatten()(x)
x = Dense(1024, activation="relu")(x)
predictions = Dense(2, activation=activType)(x)
model_final = Model(inputs =model.input, outputs = predictions,name='predictions')
from nyoka import KerasToPmml
cnn_pmml = KerasToPmml(model_final,dataSet='image',predictedClasses=['cats','dogs'])
cnn_pmml.export(open('2classMBNet.pmml', "w"), 0)
a thin wrapper around the JPMML-SkLearn command-line application. For a list of supported Scikit-Learn Estimator and Transformer types, please refer to the documentation of the JPMML-SkLearn project.
# example tree & viz from http://scikit-learn.org/stable/modules/tree.html
from sklearn import datasets, tree
iris = datasets.load_iris()
clf = tree.DecisionTreeClassifier()
clf = clf.fit(iris.data, iris.target)
from sklearn_pandas import DataFrameMapper
default_mapper = DataFrameMapper([(i, None) for i in iris.feature_names + ['Species']])
from sklearn2pmml import sklearn2pmml
sklearn2pmml(estimator=clf,
mapper=default_mapper,
pmml="D:/workspace/IrisClassificationTree.pmml")
from sklearn.externals.six import StringIO
import pydotplus # this might be pydot for python 2.7
dot_data = StringIO()
tree.export_graphviz(clf,
out_file=dot_data,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("D:/workspace/iris.pdf")
# for in-line display, you can also do:
# from IPython.display import Image
# Image(graph.create_png())
你可以试试Nyoka。出口SKL型号和一些。
Nyoka是一个python库,支持
Scikit-learn
、XGBoost
、LightGBM
、Keras
和Statsmodels
。可以使用以下命令从PyPi安装它:
示例代码
例1
例2
更多的例子可以在Nyoka's Github Page中找到。
^{} 是
正如@user1808924所指出的,它支持Python 2.7或3.4+。它还需要Java1.7+
安装方式:(需要git)
如何将分类器树导出到PMML的示例。首先生长该树:
SkLearn2PMML转换分为两部分:估计器(our
clf
)和映射器(用于离散化或PCA等预处理步骤)。我们的映射程序非常基本,因为我们不做任何转换。有可能(虽然没有文档记录)通过
mapper=None
,但您将看到预测值名称丢失(返回x1
而不是sepal length
等)。让我们看看
.pmml
文件:第一个分割(节点1)的花瓣宽度为0.8。节点2(花瓣宽度<;=0.8)捕获所有刚毛,没有其他。
您可以将pmml输出与
graphviz
输出进行比较:相关问题 更多 >
编程相关推荐