问题描述
我已经收到了预先训练的pyspark模型(GBTRegressor),但无法在数据集上使用它来获取预测。我已经看到了一些有关使用Pipeline vs 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)
如果有人可以花时间帮助我弄清楚我在这里做错了什么,将不胜感激!花了整整一周的时间,我想避免再次这样做。让我知道是否需要我提供更多信息来诊断问题。
解决方法
我发现答案是由于代码中的错误,未训练的GBTRegressor对象被保存,而不是经过训练的对象,因此它没有转换属性。