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

运行O'Reilly教材自定义Transformer代码出现IndentationError如何解决?

报错修复说明

错误原因

该IndentationError是缩进层级错误导致:代码中else语句的缩进与transform方法同级,不属于方法内部的if分支逻辑,不符合Python语法要求。

修复步骤

  • 调整else语句的缩进,使其与对应的if self.add_bedrooms_per_room:语句保持相同缩进层级,归入transform方法内部
  • 补充numpy导入语句(代码中使用了np别名,未导入会触发后续报错)

修复后完整代码

import numpy as np
from sklearn.base import BaseEstimator, TransformerMixin 
rooms_ix, bedrooms_ix, population_ix, households_ix = 3, 4, 5, 6

class CombinedAttributesAdder(BaseEstimator, TransformerMixin): 
    def __init__(self, add_bedrooms_per_room = True): # no *args or **kargs 
        self.add_bedrooms_per_room = add_bedrooms_per_room
    def fit(self, X, y=None): 
        return self # nothing else to do
    def transform(self, X, y=None): 
        rooms_per_household = X[:, rooms_ix] / X[:, households_ix] 
        population_per_household = X[:, population_ix] / X[:, households_ix] 
        if self.add_bedrooms_per_room: 
            bedrooms_per_room = X[:, bedrooms_ix] / X[:, rooms_ix] 
            return np.c_[X, rooms_per_household, population_per_household, bedrooms_per_room]
        else: 
            return np.c_[X, rooms_per_household, population_per_household]
    
attr_adder = CombinedAttributesAdder(add_bedrooms_per_room=False) 
housing_extra_attribs = attr_adder.transform(housing.values)

修改后运行即可正常生成新增特征的数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:06:03