首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IndexError:索引12超出了大小为% 12 GradientBoostingClassifier的轴%1的边界

IndexError:索引12超出了大小为% 12 GradientBoostingClassifier的轴%1的边界
EN

Stack Overflow用户
提问于 2018-12-27 21:36:52
回答 1查看 75关注 0票数 0

我试图在GradientBoosting分类上绘制错误图,但我似乎找不到我的错误。我在网站上查找了类似的话题,但没有找到任何令人满意的答案。这是我的代码,希望你们能帮上忙:

代码语言:javascript
复制
import time
tableau_duree_grd = np.zeros(145)
tableau_erreur_grd = np.zeros(145)

for b in range(5,150):
 start_time=time.time()
 grd=GradientBoostingClassifier(n_estimators=b,validation_fraction= 0.1,n_iter_no_change=10,learning_rate=0.1,max_features=None)
 grd.fit(XTrainD,YTrainD)
 pred = grd.predict(XTestD)
 test_erreur_grd = np.mean(YTestD!=pred)
 end_time=time.time()
 duree=end_time-start_time
 tableau_duree_grd[b-5]=duree
 tableau_erreur_grd[b-5]=test_erreur_grd

完整的错误回溯:

代码语言:javascript
复制
IndexError                                Traceback (most recent call last)
<ipython-input-46-9978ac0dd8ba> in <module>
  6     start_time=time.time()
  7     grd=GradientBoostingClassifier(n_estimators=b,validation_fraction= 0.1, n_iter_no_change=10,learning_rate=0.1,max_features=None)
----> 8     grd.fit(XTrainD,YTrainD)
  9     pred = grd.predict(XTestD)
 10     test_erreur_grd = np.mean(YTestD!=pred)

~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\ensemble\gradient_boosting.py in fit(self, X, y, sample_weight, monitor)
  1463         n_stages = self._fit_stages(X, y, y_pred, sample_weight, self._rng,
  1464                                     X_val, y_val, sample_weight_val,
-> 1465                                     begin_at_stage, monitor, X_idx_sorted)
  1466 
  1467         # change shape of arrays after fit (early-stopping or additional ests)

~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\ensemble\gradient_boosting.py in _fit_stages(self, X, y, y_pred, sample_weight, random_state, X_val, y_val, sample_weight_val, begin_at_stage, monitor, X_idx_sorted)
  1527             y_pred = self._fit_stage(i, X, y, y_pred, sample_weight,
  1528                                      sample_mask, random_state, X_idx_sorted,
-> 1529                                      X_csc, X_csr)
  1530 
  1531             # track deviance (= loss)

~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\ensemble\gradient_boosting.py in _fit_stage(self, i, X, y, y_pred, sample_weight, sample_mask, random_state, X_idx_sorted, X_csc, X_csr)
  1169 
  1170             residual = loss.negative_gradient(y, y_pred, k=k,
-> 1171                                               sample_weight=sample_weight)
  1172 
  1173             # induce regression tree on residuals

~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\ensemble\gradient_boosting.py in negative_gradient(self, y, pred, k, **kwargs)
   914             The index of the class
   915         """
--> 916         return y - np.nan_to_num(np.exp(pred[:, k] -
   917                                         logsumexp(pred, axis=1)))
   918 

  IndexError: index 12 is out of bounds for axis 1 with size 12
EN

回答 1

Stack Overflow用户

发布于 2018-12-27 22:36:06

我不知道这个软件,但它听起来像是一个错误。编程语言通常从0开始计算索引,而不是从1开始计算。

更具体地说,在gradient_boosting.py的916行,"k“变量可能包含值12,但是应该使用值11。

还可以通过在gradient_boosting.py的916行添加打印语句来获取更多信息,以便更好地了解错误发生时逻辑中发生的事情。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53945995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档