【发布时间】:2021-09-12 19:01:20
【问题描述】:
我正在尝试为住房数据创建转换管道
from sklearn.base import BaseEstimator, TransformerMixin
rooms_ix, bedrooms_ix, population_ix, household_ix = 3,4,5,6
class CombineAttributesAdder(BaseEstimator, TransformerMixin):
def __init__(self, add_bedrooms_per_room = True):
self.add_bedrooms_per_room = add_bedrooms_per_room
def fit(self, X, y=None):
return self
def transfrom(self, X, y=None):
rooms_per_househond = X[:,rooms_ix]/X[:,household_ix]
population_per_household = X[:,population_ix]/ X[:, household_ix]
if self.add_bedrooms_per_room:
bedrooms_per_room = X[:,bedrooms_ix]/X[:rooms_ix]
return np.c_[X, rooms_per_househond, population_per_household, bedrooms_per_room]
else:
return np.c_[X, rooms_per_househond, population_per_household]
我用于管道的管道代码:-
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from imblearn.pipeline import make_pipeline
num_pipline = Pipeline([
('imputer', SimpleImputer(missing_values=np.nan, strategy='median')),
('attribs_adder', CombineAttributesAdder(add_bedrooms_per_room=False)),
('stand_scaler', StandardScaler()),
])
housing_num_transform = num_pipline.fit_transform(housing_num)
【问题讨论】:
-
您定义了
transfrom方法,但指的是transform。 -
请添加更多详细信息,我需要更改哪一行
标签: python python-3.x machine-learning scikit-learn