代码之家  ›  专栏  ›  技术社区  ›  Martin

调用sklearn Pipeline对象上的方法时,Python引发AttributeError

  •  0
  • Martin  · 技术社区  · 1 年前

    问题

    我打电话给 fit_transform() transform() 上的方法 Pipeline 对象,但每当我尝试这样做时,Python都会引发AttributeError。(注:列车/试验拆分已经完成)

    from sklearn.impute import SimpleImputer
    from sklearn.preprocessing import StandardScaler
    from sklearn.linear_model import LinearRegression
    from sklearn.pipeline import Pipeline
    
    pipe = Pipeline([('mean_impute', SimpleImputer()), 
                     ('norm',        StandardScaler()), 
                     ('sklearn_lm',  LinearRegression())])
    
    pipe.fit_transform(x_train, y_train)  #<-- error here
    
    x_transform = pipe.transform(x_test)  #<-- and here if previous line is absent
    

    错误的文本如下:

    AttributeError: This 'Pipeline' has no attribute 'fit_transform'

    出了什么问题?我相信这很简单。

    我尝试过的事情:

    2 回复  |  直到 1 年前
        1
  •  1
  •   e-motta    1 年前

    的文档 sklearn.pipeline.Pipeline.fit_transform 声明它“只有当最终估计器实现 fit_transform fit transform 措辞可能有点模棱两可,但它意味着两种可能性:(i)最终估计器实现 fit_transform ,或(ii)最终估计器实现 适合 使改变 .

    您的最终估算值是 sklearn.linear_model.LinearRegression ,实现 适合 ,但不是 使改变 。这就是引发错误的原因。

        2
  •  0
  •   Bronze_Chaos    1 年前

    在…上 this website 它指出,只有当最终估计器实现fittransform或fit-and-transform时,这种方法才有效。我不知道什么是最终估计器,但这可能是你的问题(我知道这不是很有帮助,但我试过了)。

    推荐文章