python - weight issues in scikit-learn's adaboost -
i'm trying use adaboostclassifier decision tree stump base classifier. noticed weight adjustment done adaboostclassifier has been giving me errors both samme.r , samme options.
here's brief overview of i'm doing
def train_adaboost(features, labels): uniqlabels = np.unique(labels) alllearners = [] targetlab in uniqlabels: runs=[] rrr in xrange(10): feats,labs = get_binary_sets(features, labels, targetlab) baseclf = decisiontreeclassifier(max_depth=1, min_samples_leaf=1) baseclf.fit(feats, labs) ada_real = adaboostclassifier( base_estimator=baseclf, learning_rate=1, n_estimators=20, algorithm="samme") runs.append(ada_real.fit(feats, labs)) alllearners.append(runs) return alllearners
i looked @ fit every single decision tree classifier , able predict labels. when @ adaboostclassifier using base classifier, however, errors weight boosting algorithm.
def compute_confidence(alllearners, dada, labbo): ii,thislab in enumerate(alllearners): jj, thislearner in enumerate(thislab): #accessing thislearner's methods here
the methods give errors these:
ipdb> thislearner.predict_proba(mydata)
pathtopackage/lib/python2.7/site-packages/sklearn/ensemble/weight_boosting.py:727: runtimewarning: invalid value encountered in double_scalars proba /= self.estimator_weights_.sum() *** valueerror: 'axis' entry out of bounds
ipdb> thislearner.predict(mydata)
pathtopackage/lib/python2.7/site-packages/sklearn/ensemble/weight_boosting.py:639: runtimewarning: invalid value encountered in double_scalars pred /= self.estimator_weights_.sum() *** indexerror: 0-d arrays can use single () or list of newaxes (and single ...) index
i tried samme.r algorithm adaboost can't fit adaboost in case because of error [...]
file "path/sklearn/ensemble/weight_boosting.py", line 388, in fit return super(adaboostclassifier, self).fit(x, y, sample_weight)
file "path/sklearn/ensemble/weight_boosting.py", line 124, in fit x_argsorted=x_argsorted)
file "path/sklearn/ensemble/weight_boosting.py", line 435, in _boost x_argsorted=x_argsorted)
file "path/sklearn/ensemble/weight_boosting.py", line 498, in _boost_real (estimator_weight < 0)))
valueerror: non-broadcastable output operand shape (1000) doesn't match broadcast shape (1000,1000)
the data's dimensions compatible format classifier expecting, both before using adaboost , when try test trained classifiers. can these errors indicate?
well little counterintuitive, coming coding in matlab.
apparently labs' dimensions issue, (1000,1). needed (1000,)
adding line solved it:
labs = labs[:,0]
Comments
Post a Comment