将机器学习/深度学习模型导出到pmml的python库
nyoka的Python项目详细描述
纽约卡
<<<<<<<<<<<<
注意-
- 如果使用scikit-learn、xgboost和lightgbm模型,则该模型应在sklearn的管道中使用。
工作流程如下-
- 创建scikit learn的
pipeline
对象,并用任何预处理步骤和模型对象填充它。 - 调用pipeline.fit(x,y)方法来训练模型。
- 使用特定的导出器并将管道对象、培训数据集的功能名称、目标名称和pmml的预期名称传递给导出器函数。如果未给定目标名称,则使用默认值
target
。类似地,对于pmml名称,使用默认值from_sklearn.pmml
/from_xgboost.pmml
/from_lighgbm.pmml
。
- 创建scikit learn的
- 对于Keras和Stats车型,需要将安装的车型传递给出口商。
下面提供演示
纽约卡出口SCIKIT学习型:
< Buff行情>将支持向量分类器管道对象导出到pmml中
importpandasaspdfromsklearnimportdatasetsfromsklearn.pipelineimportPipelinefromsklearn.preprocessingimportStandardScalerfromsklearn.svmimportSVCiris=datasets.load_iris()irisd=pd.DataFrame(iris.data,columns=iris.feature_names)irisd['Species']=iris.targetfeatures=irisd.columns.drop('Species')target='Species'pipeline_obj=Pipeline([('scaler',StandardScaler()),('svm',SVC())])pipeline_obj.fit(irisd[features],irisd[target])fromnyokaimportskl_to_pmmlskl_to_pmml(pipeline_obj,features,target,"svc_pmml.pmml")
NYOKA出口XGBoost车型:
< Buff行情>将xgboost模型导出到pmml中
fromsklearnimportdatasetsfromsklearn.pipelineimportPipelinefromsklearn.preprocessingimportStandardScalerimportxgboostasxgbboston=datasets.load_boston()y=boston['target']X=boston['data']xgb_model=xgb.XGBRegressor()pipeline_obj=Pipeline([("scaling",StandardScaler()),("model",XGBRegressor())])pipeline_obj.fit(X,y)fromnyokaimportxgboost_to_pmmlxgboost_to_pmml(pipeline_obj,boston.feature_names,'target',"xgb_pmml.pmml")
Nyoka出口LightGBM型号:
< Buff行情>将lgbm模型导出到pmml中
importpandasaspdfromsklearnimportdatasetsfromsklearn.pipelineimportPipelinefromlightgbmimportLGBMClassifieriris=datasets.load_iris()irisd=pd.DataFrame(iris.data,columns=iris.feature_names)irisd['Species']=iris.targetfeatures=irisd.columns.drop('Species')target='Species'pipeline_obj=Pipeline([('lgbmc',LGBMClassifier())])pipeline_obj.fit(irisd[features],irisd[target])fromnyokaimportlgb_to_pmmllgb_to_pmml(pipeline_obj,features,target,"lgbmc_pmml.pmml")
Nyoka出口Keras车型:
< Buff行情>将MobileNet模型导出到PMML中
fromkerasimportapplicationsfromkeras.layersimportFlatten,Densefromkeras.modelsimportModelmodel=applications.MobileNet(weights='imagenet',include_top=False,input_shape=(224,224,3))activType='sigmoid'x=model.outputx=Flatten()(x)x=Dense(1024,activation="relu")(x)predictions=Dense(2,activation=activType)(x)model_final=Model(inputs=model.input,outputs=predictions,name='predictions')fromnyokaimportKerasToPmmlcnn_pmml=KerasToPmml(model_final,dataSet='image',predictedClasses=['cats','dogs'])cnn_pmml.export(open('2classMBNet.pmml',"w"),0)
Nyoka出口Statsmodels型号
< Buff行情>将arima导出到pmml
importpandasaspdimportnumpyasnpfromstatsmodels.tsa.arima_modelimportARIMAfromnyokaimportArimaToPMMLdefparser(x):returnpd.datetime.strptime(x,'%Y-%m')sales_data=pd.read_csv('sales-cars.csv',index_col=0,parse_dates=[0],date_parser=parser)model=ARIMA(sales_data,order=(9,2,0))result=model.fit()pmml_f_name='non_seasonal_car_sales.pmml'ArimaToPMML(results_obj=result,pmml_file_name=pmml_f_name)
更多关于Nyoka的信息
nyoka包含一个子模块,名为预处理
。此模块包含由nyoka实现的预处理类。目前只有一个预处理类,即lag
lag是nyoka实现的一个预处理类。当在scikit learn的管道中使用时,它只需结合以前的记录数,为数据集的给定特性应用一个aggregation
函数。它需要两个参数-聚合和值。
有效的聚合函数是-
"min"、"max"、"sum"、"avg"、"median"、"product"和"stddev"。
使用滞后-
- 从NYOKA将其作为
从NYOKA导入。预处理导入延迟
- 将lag的实例创建为
lag(aggregation="sum",value=5)
- 这意味着,对给定的字段取5个先前的值并执行求和。
- 在Scikit Learn的训练管道中使用此对象。
卸载
pip uninstall nyoka
支架
您可以在以下位置提问:
- 堆栈溢出用"pmml"、"nyoka"标记问题
- 您还可以在github问题中发布bug报告