【问题标题】:Unable to Pass Assertion Check [Creating custom transformer, scikit-learn]无法通过断言检查 [创建自定义转换器,scikit-learn]
【发布时间】:2020-02-05 07:31:24
【问题描述】:

给定数据来自

%%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

还有这些上下文: “我们将从 DataFrame 中包含数字和布尔特征的列开始。一些行包含空值;估计器无法处理空值,因此必须估算或删除这些值。我们将创建一个包含处理这些特征的转换器的管道,然后由估算器。

注意:当评分者检查您的答案时,它会将字典列表传递给您的估算器的 predict 或 predict_proba 方法,而不是 DataFrame。这意味着您的模型必须使用这两种数据类型。出于这个原因,我们提供了一个自定义的 ColumnSelectTransformer 供您使用 scikit-learn 自己的 ColumnTransformer。”

我的任务是完成以下代码 sn-ps。 但是我无法通过断言测试。下面附上我的尝试:

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)),
])

完成这个断言检查

assert data['RESTOT'].isnull().sum() > 0
assert not np.isnan(simple_features.fit_transform(data)).any()

如果我能得到任何帮助,我将不胜感激,谢谢!

【问题讨论】:

    标签: python pandas machine-learning scikit-learn assertion


    【解决方案1】:

    我无法通过断言测试,因为

     return X[self.columns].values()
    

    正确的返回语句应该是

    return X[self.columns].values
    

    【讨论】:

      猜你喜欢
      • 2020-02-04
      • 2021-10-25
      • 2020-02-03
      • 2019-02-06
      • 2022-06-11
      • 2021-09-06
      • 2022-08-12
      • 2016-04-16
      • 2012-05-09
      相关资源
      最近更新 更多