Python 集成分类器(brew软件包)-键错误:“[290 109 240 11 524]不在索引中”

Python 集成分类器(brew软件包)-键错误:“[290 109 240 11 524]不在索引中”,python,machine-learning,jupyter-notebook,ensemble-learning,brew-python,Python,Machine Learning,Jupyter Notebook,Ensemble Learning,Brew Python,我使用的是来自软件包的,并试图从以下内容创建动态选择分类器。因此,我的代码片段如下所示: # Initializing ensemble of different models clf = model1 bag = Bagging(base_classifier=clf, n_classifiers=20) # Changing indices to 0...n instead of random distribution from train_test_split X_train = X_t

我使用的是来自软件包的,并试图从以下内容创建动态选择分类器。因此,我的代码片段如下所示:

# Initializing ensemble of different models
clf = model1
bag = Bagging(base_classifier=clf, n_classifiers=20)

# Changing indices to 0...n instead of random distribution from train_test_split
X_train = X_train.reset_index(drop=True)
X_test = X_test.reset_index(drop=True)
X_val = X_val.reset_index(drop=True)
Y_val = Y_val.reset_index(drop=True)
Y_train = Y_train.reset_index(drop=True)
Y_test = Y_test.reset_index(drop=True)

bag.fit(X_np, Y_np)
ensemble = bag.ensemble


clf1 = sklearn.clone(clf).fit(X_train, Y_train)
clf2 = EnsembleClassifier(ensemble=ensemble, combiner=Combiner('majority_vote'))
clf3 = EnsembleClassifier(ensemble=ensemble, selector=OLA(X_train, Y_train), combiner=Combiner('majority_vote'))
clf4 = EnsembleClassifier(ensemble=ensemble, selector=LCA(X_train, Y_train), combiner=Combiner('majority_vote'))
clf5 = EnsembleClassifier(ensemble=ensemble, selector=APriori(X_train, Y_train), combiner=Combiner('majority_vote'))
clf6 = EnsembleClassifier(ensemble=ensemble, selector=APosteriori(X_train, Y_train), combiner=Combiner('majority_vote'))
clf7 = EnsembleClassifier(ensemble=ensemble, selector=KNORA_ELIMINATE(X_train, Y_train), combiner=Combiner('majority_vote'))
clf8 = EnsembleClassifier(ensemble=ensemble, selector=KNORA_UNION(X_train, Y_train), combiner=Combiner('majority_vote'))

X_test_np = X_test.values

models = [clf1, clf2, clf3, clf4, clf5, clf6, clf7, clf8]
for i in models:
    y_pred = i.predict(X_test_np)
    print "Accuracy : ", acc_score(Y_test, y_pred)
    print "AUC Score : ", auc_score(Y_test, y_pred)
    print classification_report(Y_test, y_pred)
其中,模型1对应于以下内容:

因此,我在运行第一段代码后得到的错误如下:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-166-c02f6a396002> in <module>()
      3 models = [clf1, clf2, clf3, clf4, clf5, clf6, clf7, clf8]
      4 for i in models:
----> 5     y_pred = clf3.predict(X_test_np)
      6     print "Accuracy : ", acc_score(Y_test, y_pred)
      7     print "AUC Score : ", auc_score(Y_test, y_pred)

/home/vat26/.local/lib/python2.7/site-packages/brew/base.pyc in predict(self, X)
    260             for i in range(X.shape[0]):
    261                 ensemble, weights = self.selector.select(
--> 262                     self.ensemble, X[i, :][np.newaxis, :])
    263 
    264                 if weights is not None:  # use the ensemble with weights

/home/vat26/.local/lib/python2.7/site-packages/brew/selection/dynamic/ola.pyc in select(self, ensemble, x)
    114         classifiers = ensemble.classifiers
    115         [idx] = self.knn.kneighbors(x, return_distance=False)
--> 116         X, y = self.Xval[idx], self.yval[idx]
    117 
    118         scores = np.asarray([clf.score(X, y) for clf in classifiers])

/home/vat26/.local/lib/python2.7/site-packages/pandas/core/frame.pyc in __getitem__(self, key)
   2131         if isinstance(key, (Series, np.ndarray, Index, list)):
   2132             # either boolean or fancy integer index
-> 2133             return self._getitem_array(key)
   2134         elif isinstance(key, DataFrame):
   2135             return self._getitem_frame(key)

/home/vat26/.local/lib/python2.7/site-packages/pandas/core/frame.pyc in _getitem_array(self, key)
   2175             return self._take(indexer, axis=0, convert=False)
   2176         else:
-> 2177             indexer = self.loc._convert_to_indexer(key, axis=1)
   2178             return self._take(indexer, axis=1, convert=True)
   2179 

/home/vat26/.local/lib/python2.7/site-packages/pandas/core/indexing.pyc in _convert_to_indexer(self, obj, axis, is_setter)
   1267                 if mask.any():
   1268                     raise KeyError('{mask} not in index'
-> 1269                                    .format(mask=objarr[mask]))
   1270 
   1271                 return _values_from_object(indexer)

KeyError: '[290 109 240  11 524] not in index'
我是新来的。我哪里做错了

编辑:

从clf3开始,它与clf1和clf2一起工作,并给出一个错误

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-166-c02f6a396002> in <module>()
      3 models = [clf1, clf2, clf3, clf4, clf5, clf6, clf7, clf8]
      4 for i in models:
----> 5     y_pred = clf3.predict(X_test_np)
      6     print "Accuracy : ", acc_score(Y_test, y_pred)
      7     print "AUC Score : ", auc_score(Y_test, y_pred)

/home/vat26/.local/lib/python2.7/site-packages/brew/base.pyc in predict(self, X)
    260             for i in range(X.shape[0]):
    261                 ensemble, weights = self.selector.select(
--> 262                     self.ensemble, X[i, :][np.newaxis, :])
    263 
    264                 if weights is not None:  # use the ensemble with weights

/home/vat26/.local/lib/python2.7/site-packages/brew/selection/dynamic/ola.pyc in select(self, ensemble, x)
    114         classifiers = ensemble.classifiers
    115         [idx] = self.knn.kneighbors(x, return_distance=False)
--> 116         X, y = self.Xval[idx], self.yval[idx]
    117 
    118         scores = np.asarray([clf.score(X, y) for clf in classifiers])

/home/vat26/.local/lib/python2.7/site-packages/pandas/core/frame.pyc in __getitem__(self, key)
   2131         if isinstance(key, (Series, np.ndarray, Index, list)):
   2132             # either boolean or fancy integer index
-> 2133             return self._getitem_array(key)
   2134         elif isinstance(key, DataFrame):
   2135             return self._getitem_frame(key)

/home/vat26/.local/lib/python2.7/site-packages/pandas/core/frame.pyc in _getitem_array(self, key)
   2175             return self._take(indexer, axis=0, convert=False)
   2176         else:
-> 2177             indexer = self.loc._convert_to_indexer(key, axis=1)
   2178             return self._take(indexer, axis=1, convert=True)
   2179 

/home/vat26/.local/lib/python2.7/site-packages/pandas/core/indexing.pyc in _convert_to_indexer(self, obj, axis, is_setter)
   1267                 if mask.any():
   1268                     raise KeyError('{mask} not in index'
-> 1269                                    .format(mask=objarr[mask]))
   1270 
   1271                 return _values_from_object(indexer)

KeyError: '[290 109 240  11 524] not in index'