pyspark GBTRegressor 对象在加载模型后没有属性“转换”
Posted
技术标签:
【中文标题】pyspark GBTRegressor 对象在加载模型后没有属性“转换”【英文标题】:pyspark GBTRegressor object has no attribute 'transform' after loading model 【发布时间】:2020-08-17 17:01:46 【问题描述】:我收到了一个预训练的 pyspark 模型 (GBTRegressor),但我无法在数据集上使用它来获得预测。我看过一些关于使用 Pipeline 与 PipelineModel 的帖子,但在这种情况下,它只是回归量对象,我无法使用 PipelineModel 加载它。
我能够成功加载模型:
model = GTBRegressor.load(model_path)
type(model)
'pyspark.ml.regression.GBTRegressor'
但是当我打电话给model.transform(test_df)
我得到了
AttributeError: 'GBTRegressor' object has no attribute 'transform'
我尝试将模型对象放入 Pipeline 和 PipelineModel 中,但没有任何效果。我也在源码中看到了这个类:
class GBTRegressionModel(TreeEnsembleModels):
"""
Model fitted by GBTRegressor.
.. versionadded:: 1.4.0
"""
但我无法使用 GBTRegressionModel.load(model_path)
加载模型
如果有人能花时间帮助我找出我在这里做错了什么,将不胜感激!运行了整整一周,我想避免再次这样做。如果需要我提供更多信息来诊断问题,请告诉我。
【问题讨论】:
为什么不能使用GBTRegressionModel.load(model_path)
加载模型?
我收到错误:IllegalArgumentException: requirement failed: Error loading metadata: Expected class name org.apache.spark.ml.regression.GBTRegressionModel but found class name org.apache.spark.ml.regression.GBTRegressor
【参考方案1】:
我发现答案是由于代码中的一个错误,未训练的 GBTRegressor 对象被保存而不是训练的对象,因此它没有变换属性。
【讨论】:
以上是关于pyspark GBTRegressor 对象在加载模型后没有属性“转换”的主要内容,如果未能解决你的问题,请参考以下文章