python画画bup_python – 在scikit-learn中使用BaseEstimator的GradientBoostingClassifier?

我尝试在scikit-learn中使用GradientBoostingClassifier,它的默认参数可以正常工作.但是,当我尝试用不同的分类器替换BaseEstimator时,它不起作用并且给了我以下错误,

return y - np.nan_to_num(np.exp(pred[:, k] -

IndexError: too many indices

你有解决问题的方法吗?

可以使用以下代码段重新生成此错误:

import numpy as np

from sklearn import datasets

from sklearn.ensemble import GradientBoostingClassifier

from sklearn.linear_model import LogisticRegression

from sklearn.utils import shuffle

mnist = datasets.fetch_mldata('MNIST original')

X, y = shuffle(mnist.data, mnist.target, random_state=13)

X = X.astype(np.float32)

offset = int(X.shape[0] * 0.01)

X_train, y_train = X[:offset], y[:offset]

X_test, y_test = X[offset:], y[offset:]

### works fine when init is None

clf_init = None

print 'Train with clf_init = None'

clf = GradientBoostingClassifier( (loss='deviance', learning_rate=0.1,

n_estimators=5, subsample=0.3,

min_samples_split=2,

min_samples_leaf=1,

max_depth=3,

init=clf_init,

random_state=None,

max_features=None,

verbose=2,

learn_rate=None)

clf.fit(X_train, y_train)

print 'Train with clf_init = None is done :-)'

print 'Train LogisticRegression()'

clf_init = LogisticRegression();

clf_init.fit(X_train, y_train);

print 'Train LogisticRegression() is done'

print 'Train with clf_init = LogisticRegression()'

clf = GradientBoostingClassifier(loss='deviance', learning_rate=0.1,

n_estimators=5, subsample=0.3,

min_samples_split=2,

min_samples_leaf=1,

max_depth=3,

init=clf_init,

random_state=None,

max_features=None,

verbose=2,

learn_rate=None)

clf.fit(X_train, y_train) #

print 'Train with clf_init = LogisticRegression() is done'

这是完整的错误追溯:

Traceback (most recent call last):

File "/home/mohsena/Dropbox/programing/gbm/gb_with_init.py", line 56, in

clf.fit(X_train, y_train)

File "/usr/local/lib/python2.7/dist-packages/sklearn/ensemble/gradient_boosting.py", line 862, in fit

return super(GradientBoostingClassifier, self).fit(X, y)

File "/usr/local/lib/python2.7/dist-packages/sklearn/ensemble/gradient_boosting.py", line 614, in fit random_state)

File "/usr/local/lib/python2.7/dist-packages/sklearn/ensemble/gradient_boosting.py", line 475, in _fit_stage

residual = loss.negative_gradient(y, y_pred, k=k)

File "/usr/local/lib/python2.7/dist-packages/sklearn/ensemble/gradient_boosting.py", line 404, in negative_gradient

return y - np.nan_to_num(np.exp(pred[:, k] -

IndexError: too many indices

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值