加载模型后,pyspark GBTRegressor对象没有属性“变换”

问题描述

我已经收到了预先训练的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对象被保存,而不是经过训练的对象,因此它没有转换属性。