我需要在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格式的其他方法吗?
答案 0 :(得分:0)
TypeError:管道对象不是PMMLPipeline的实例
sklearn2pmml
函数调用的第一个参数必须是sklearn2pmml.PMMLPipeline
的实例。您正在传递sklearn.ensemble.RandomForestClassifier
的实例。
有什么建议我缺少什么或创建pmml格式的其他方法吗?
您正在将史前代码示例与最新版本的sklearn2pmml库配对。这些是你的选择:
答案 1 :(得分:0)
sklearn2pmml()
需要一个PMMLPipeline
模型,因此请尝试将iris_classifier
打包成PMMLPipeline
,如下所示:
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)