现在我训练了一个名为' 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文件中的名称。
如果我尝试直接在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)
我该怎么做才能观察模型的特征重要性,同时保留特征。导出的pmml文件中的名称。 非常感谢你!
答案 0 :(得分:1)
重点:
在您的第一个代码示例中,您要对分类器进行拟合,但您应该整合管道 - 因此警告管道的内部状态不完整。在第二个代码示例中,您没有直接引用分类器(但是,您可以通过"解析"安装管道的最后一步)来获取它。
基于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)