我正在使用银行数据来预测每日的门票数量。我正在使用堆叠来获得更准确的结果并使用brew库。
以下是重要功能的示例数据集:
[] 以下是目标属性示例:
[]
以下是代码:
from stacked_generalization.lib.stacking import StackedClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression, RidgeClassifier
# Stage 1 model
bclf = LogisticRegression(random_state=1)
# Stage 0 models
clfs = [RandomForestClassifier(n_estimators=40, criterion = 'gini', random_state=1),
gbm,
RidgeClassifier(random_state=1)]
sl = StackedClassifier(bclf, clfs)
sl.fit(training.select_columns(features).to_dataframe().as_matrix(), np.array(training['class']))
以下是培训数据格式:
[[ 21 11 2014 46 4 3]
[ 22 11 2014 46 5 4]
[ 24 11 2014 47 0 4]
...,
[ 30 9 2016 39 4 5]
[ 3 10 2016 40 0 1]
[ 4 10 2016 40 1 1]]
但是,我将我的代码与库中给出的示例进行了比较,但仍然无法弄清楚我哪里出错了。请帮助我。
答案 0 :(得分:1)
我有一个类似的问题,似乎只是一个需要修复的brew中的错误。问题是c.classes_(或类的数量)返回一个带浮点数的numpy数组(例如,如果你有两个类,它返回[0.0,1.0]而不是整数([0,1])。代码试图使用这些浮点数来索引列,但不能使用浮动索引numpy列。
probas.shape =#rows =#training examples; #columns =#of classes
c.predict_proba(X)
为每个训练示例返回每个类的概率。
probas[:, list(c.classes_)] = c.predict_proba(X)
应该使用类#来索引probas中的列,将X中每行的每个类的概率放入probas中。
如果添加astype(int)
,这将有效 probas[:, list(et.classes_.astype(int))] = et.predict_proba(X)
或只是
probas = np.copy(et.predict_proba(X))