python - Scikit-Learn,自定义转换器:ColumnSelectTransformer
问题描述
给定数据来自
%%bash
mkdir data
wget http://dataincubator-wqu.s3.amazonaws.com/mldata/providers-train.csv -nc -P ./ml-data
wget http://dataincubator-wqu.s3.amazonaws.com/mldata/providers-metadata.csv -nc -P ./ml-data
我的任务是完成以下代码片段。
simple_cols = ['BEDCERT', 'RESTOT', 'INHOSP', 'CCRC_FACIL', 'SFF', 'CHOW_LAST_12MOS', 'SPRINKLER_STATUS', 'EXP_TOTAL', 'ADJ_TOTAL']
class ColumnSelectTransformer(BaseEstimator, TransformerMixin):
def __init__(self, columns):
self.columns = columns
def fit(self, X, y=None):
return self
def transform(self, X):
if not isinstance(X, pd.DataFrame):
X = pd.DataFrame(X)
return X[self.columns]
simple_features = Pipeline([
('cst', ColumnSelectTransformer(simple_cols)),
])
assert data['RESTOT'].isnull().sum() > 0
assert not np.isnan(simple_features.fit_transform(data)).any()
完成这个断言检查
assert data['RESTOT'].isnull().sum() > 0
assert not np.isnan(simple_features.fit_transform(data)).any()
但是我无法通过断言测试。下面附上我的尝试:
simple_cols = ['BEDCERT', 'RESTOT', 'INHOSP', 'CCRC_FACIL', 'SFF', 'CHOW_LAST_12MOS', 'SPRINKLER_STATUS', 'EXP_TOTAL', 'ADJ_TOTAL']
class ColumnSelectTransformer(BaseEstimator, TransformerMixin):
def __init__(self, columns):
self.columns = columns
def fit(self, X, y=None):
return self
def transform(self, X):
if not isinstance(X, pd.DataFrame):
X = pd.DataFrame(X)
X.dropna(inplace=True)
return X[self.columns].values()
simple_features = Pipeline([
('cst', ColumnSelectTransformer(simple_cols)),
])
希望能得到任何帮助,谢谢!
解决方案
问题出在
return X[self.columns].values()
正确的 return 语句应该是
return X[self.columns].values
推荐阅读
- sql - Teradata Counting 特定记录和总记录
- r - 寻找唯一变量
- javascript - 如何从函数中返回过滤后的组件
- flutter - 使用 Flutter 发送附件 gmail api
- tensorflow - 使用 Tensorflow 2.0 addson seq2seq BasicDecoder 的困惑
- c++ - 它有任何方法可以将带有捕获参数的 lambda 存储在指针中
- html - npx create-react-app my-app 通过纱线管理器在 xx.xs 中完成
- php - 如何根据用户在 Laravel 6 中选择的“国家”更改所有刀片并获取产品
- python - 使用 BeautifulSoup 创建循环并将结果放入列表中
- javascript - “解决”回调在 for 循环完成之前运行,因此传递了一个空数组,语法错误还是有其他方法?