一袖如何两青蛇 2021-05-10 22:22 采纳率: 50%
浏览 92

在用jupyter notebook写房价预测时,最后两段代码一直报错。

class StackingAveragedModels(BaseEstimator, RegressorMixin, TransformerMixin):
    def __init__(self, base_models, meta_model, n_folds=5):
        self.base_models = base_models
        self.meta_model = meta_model
        self.n_folds = n_folds
        
    def fit(self, X, y):
        self.base_models_ = [list() for x in self.base_models]
        self.meta_model_ = clone(self.meta_model)
        kfold = KFold(n_splits=self.n_folds, shuffle=True, random_state=156)
    # train clones base models then create out-of-fold predictions
        # that are needed to train the cloned meta-model
        # 第一个循环,训练模型。第二个循环,验证
        out_of_fold_predictions = np.zeros((X.shape[0], len(self.base_models)))
        for i, model in enumerate(self.base_models):
            for train_index, holdout_index in kfold.split(X, y):
                instance = clone(model)
                self.base_models_[i].append(instance)
                instance.fit(X[train_index], y[train_index])
                y_pred = instance.predict(X[holdout_index])
                out_of_fold_predictions[holdout_index, i] = y_pred
        # Now train the cloned meta-model using the out-of-fold predictions as new feature
        self.meta_model_.fit(out_of_fold_predictions, y)
        return self
    
        # Do the predictions of all base models on the text data and use the averaged prediction as
        # meta-feature for the final prediction which id done by meta-model
   # 这是第二个阶段, 将第一阶段输出的值,当做特征,输入到第二阶段
    def predict(self, X):
        meta_features = np.column_stack([
            np.column_stack([model.predict(X) for model in base_models]).mean(axis=1)
            for base_models in self.base_models_])
        return  self.meta_model_.predict(meta_features)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-19-9601891919db> in <module>
----> 1 class StackingAveragedModels(BaseEstimator, RegressorMixin, TransformerMixin):
      2     def __init__(self, base_models, meta_model, n_folds=5):
      3         self.base_models = base_models
      4         self.meta_model = meta_model
      5         self.n_folds = n_folds

NameError: name 'BaseEstimator' is not defined
stackea_averaged_models = StackingAveragedModels(base_models=(ENet, GBoost, KRR),
                                                 meta_model=lasso)
score = rmsle_cv(stackea_averaged_models)
print("Stacking Averaged models score:{:.4f}({:.4f})\n".format(score.mean(), score.std()))
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-20-5cdaba2270ae> in <module>
----> 1 stackea_averaged_models = StackingAveragedModels(base_models=(ENet, GBoost, KRR),
      2                                                  meta_model=lasso)
      3 score = rmsle_cv(stackea_averaged_models)
      4 print("Stacking Averaged models score:{:.4f}({:.4f})\n".format(score.mean(), score.std()))

NameError: name 'StackingAveragedModels' is not defined

为什么会显示我未定义呢?

  • 写回答

1条回答 默认 最新

  • 冷寒越 2021-05-11 00:16
    关注

    'BaseEstimator'   'StackingAveragedModels' 这俩参数没定义  检查下代码吧

    评论

报告相同问题?

悬赏问题

  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 关于#c语言#的问题,请各位专家解答!
  • ¥15 这个如何解决详细步骤
  • ¥15 在微信h5支付申请中,别人给钱就能用我的软件,这个的所属行业是啥?
  • ¥30 靶向捕获探针设计软件包
  • ¥15 别人给钱就能用我的软件,这个的经营场景是啥?
  • ¥15 react-diff-viewer组件,如何解决数据量过大卡顿问题