【问题标题】:Converting pmml file for random forest in python在python中为随机森林转换pmml文件
【发布时间】:2017-10-23 09:55:00
【问题描述】:

我需要在 python 中将我的随机森林模型转换为 pmml 格式。我已经从 github 导入了 sklearn2pmml 并尝试创建一个 pmml 文件。我运行下面的代码;

import pandas
import sklearn_pandas

iris = iris.csv

iris_df = pandas.concat((pandas.DataFrame(iris.data[:, :], columns = ["Sepal.Length", "sepal_width", "petal_length", "petal_width"]), pandas.DataFrame(iris.target, columns = ["species"])), axis = 1)

iris_mapper = sklearn_pandas.DataFrameMapper([('sepal_length',None),
                                              ('sepal_width', None), 
                                              ('petal_width', None),
                                              ('petal_width', None),
                                              ('species',None)])

iris = iris_mapper.fit_transform(iris_df)

from sklearn.ensemble import RandomForestClassifier

iris_X = iris[:, 0:4]
iris_y = iris[:, 4]

iris_classifier = RandomForestClassifier(n_estimators=10)
iris_classifier.fit(iris_X, iris_y)

from sklearn2pmml import sklearn2pmml

sklearn2pmml(iris_classifier, iris_mapper, "randomforest.pmml")

但是,我得到一个错误;

TypeError: The pipeline object is not an instance of PMMLPipeline

任何建议我缺少什么或创建 pmml 格式的其他方法?

【问题讨论】:

    标签: python random-forest pmml


    【解决方案1】:

    TypeError: 管道对象不是 PMMLPipeline 的实例

    sklearn2pmml 函数调用的第一个参数必须是sklearn2pmml.PMMLPipeline 的实例。您正在传递 sklearn.ensemble.RandomForestClassifier 的实例。

    任何建议我缺少什么或创建 pmml 格式的其他方法?

    您正在将史前代码示例与最新版本的 sklearn2pmml 库配对。这些是您的选择:

    1. 将代码示例升级到最新的 sklearn2pmml 库版本。请花两分钟时间阅读the "Usage" section of its README.file
    2. 将 sklearn2pmml 库降级到 0.13.0(或更早)版本。

    【讨论】:

      【解决方案2】:

      sklearn2pmml() 需要一个PMMLPipeline 模型,所以尝试像这样将iris_classifierPMMLPipeline 打包:

      import pandas
      import sklearn_pandas
      from sklearn.datasets import load_iris
      from sklearn2pmml.pipeline import PMMLPipeline
      from sklearn.ensemble import RandomForestClassifier
      d = load_iris()
      iris_X = d.data
      iris_y = d.target
      
      iris_classifier = RandomForestClassifier(n_estimators=10)
      #rfc_model = iris_classifier.fit(iris_X, iris_y)
      pipeline_model = PMMLPipeline([('iris_classifier', 
      iris_classifier)]).fit(iris_X, iris_y)
      from sklearn2pmml import sklearn2pmml
      sklearn2pmml(pipeline_model, 'rfc.pmml', with_repr = True)
      

      【讨论】:

        猜你喜欢
        • 2015-02-10
        • 2016-03-02
        • 2021-08-27
        • 2016-05-15
        • 2018-04-10
        • 2021-05-29
        • 2013-06-26
        • 2015-02-12
        • 2014-01-06
        相关资源
        最近更新 更多