You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行fit.transform时触发AttributeError:'Assignment4Transformer'无'y'属性

问题分析与解决

错误根源

你的自定义Assignment4Transformer类在执行过程中尝试访问实例属性self.y,但该属性并未在fit方法中完成初始化,导致属性不存在的报错。

Scikit-learn的Pipeline调用fit_transform时,会先执行Transformer的fit方法,再执行transform方法。若你的Transformer需要在fit阶段留存目标变量y,必须在fit方法内显式为self.y赋值,否则后续访问必然报错。

修复步骤

  • 检查并修正Assignment4Transformer的fit方法:
    确保方法接收X和y参数(即便不需要y,也要保留y=None的参数位以符合sklearn接口规范),且在需要使用y的场景下完成赋值。示例框架如下:
    from sklearn.base import BaseEstimator, TransformerMixin
    
    class Assignment4Transformer(BaseEstimator, TransformerMixin):
        def fit(self, X, y=None):
            # 若需使用y,在此处保存到实例属性
            self.y = y
            # 其他fit逻辑代码
            return self
    
        def transform(self, X):
            # 此处可安全访问self.y
            # 实现你的数据转换逻辑
            return transformed_X
    
  • 确认Transformer继承了BaseEstimator和TransformerMixin,这是自定义Transformer与Pipeline兼容的必要前提。
  • 单独测试Assignment4Transformer的fit和transform方法,确认无属性错误后,再加入Pipeline运行。

额外注意事项

  • 若Transformer不需要使用目标变量y,fit方法仍需保留y=None参数,避免Pipeline传递y时触发参数不匹配错误。
  • 检查full_pipeline的构造代码,确保Assignment4Transformer被正确加入步骤列表,无语法错误。

内容的提问来源于stack exchange,提问作者Kdoyle73

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 01:25:24