如何在使用sklearn2pmml

时间:2017-05-19 01:56:02

标签: python pmml

现在我训练了一个名为' GB'的gbdt模型。在python sklearn。我想将这个训练过的模型导出到pmml文件中。但是我遇到了这个问题: 1.如果我试着把受过训练的' GB'将模型转换为PMMLpipeline并使用sklearn2pmml导出模型。如下所示:

GB = GradientBoostingClassifier(n_estimators=100,learning_rate=0.05)
GB.fit(train[list(x_features),Train['Target']])
GB_pipeline = PMMLPipeline([("classifier",GB)])
sklearn2pmml.sklearn2pmml(GB_pipeline,pmml='GB.pmml')
importance=gb.feature_importances_

有一个警告'活动字段'属性未设置'。我将失去所有的功能'导出的pmml文件中的名称。

  1. 如果我尝试直接在PMMLPipeline中训练模型。由于GB_pipeline中没有feature_importances_属性,因此无法观察到此模型的features_importance。如下所示:

    GB_pipeline = PMMLPipeline([(" classifier",GradientBoostingClassifier(n_estimators = 100,learning_rate = 0.05))]) PMMLPipeline.fit(火车[列表(x_features),列车['目标']]) sklearn2pmml.sklearn2pmml(GB_pipeline,PMML =' GB.pmml&#39)

  2. 我该怎么做才能观察模型的特征重要性,同时保留特征。导出的pmml文件中的名称。 非常感谢你!

1 个答案:

答案 0 :(得分:1)

重点:

  1. 在管道外实例化分类器
  2. 实例化(PMML-)管道,将此分类器插入其中。
  3. 将此管道整体安装。
  4. 打印此分类器的要素重要性,并将此管道导出到PMML文档中。
  5. 在您的第一个代码示例中,您要对分类器进行拟合,但您应该整合管道 - 因此警告管道的内部状态不完整。在第二个代码示例中,您没有直接引用分类器(但是,您可以通过"解析"安装管道的最后一步)来获取它。

    基于Iris数据集的完整示例:

    import pandas
    iris_df = pandas.read_csv("Iris.csv")
    
    from sklearn.ensemble import GradientBoostingClassifier
    from sklearn2pmml import sklearn2pmml, PMMLPipeline
    gbt = GradientBoostingClassifier()
    pipeline = PMMLPipeline([
        ("classifier", gbt)
    ])
    pipeline.fit(iris_df[iris_df.columns.difference(["Species"])], iris_df["Species"])
    print (gbt.feature_importances_)
    sklearn2pmml(pipeline, "GBTIris.pmml", with_repr = True)