运行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
相关产品推荐
相关产品推荐

