2017-02-16 54 views
2

我使用銀行數據來預測每天的票數。我正在使用堆棧來獲得更準確的結果,並使用庫。蟒蛇 - 堆疊分類器:適合數據時的IndexError

以下是重要特徵的樣本數據集:

[enter image description here] 這裏是目標屬性樣品:

[enter image description here]

這裏是代碼:

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]] 

現在,當我嘗試擬合模型,它提供了以下錯誤: enter image description here

不過,我比較我與庫中給出的示例代碼,但還是無法弄清楚我在哪裏我錯了。請幫助我。

+0

什麼是培訓對象的格式? – Prophecies

+0

更新了我的答案,首先它是在sframe中,然後我將它轉換爲numpy nd數組 – user1584253

+0

錯誤與數組索引有關。 c.classes_是嵌套列表或除整數或布爾值之外的列表。他們有沒有機會? – Benjamin

回答

1

我有一個類似的問題,似乎只是在釀造中的錯誤需要修復。問題是c.classes_(或類的數量)返回一個浮點數的numpy數組(例如,如果你有兩個類,它返回[0.0,1.0]而不是整數([0,1])。使用這些花車到索引中的列,但你不能索引浮筒一個numpy的列

probas.shape =#行=#訓練實例;#=列班

c.predict_proba(X)回報probabilites#每個類每個訓練示例

probas[:, list(c.classes_)] = c.predict_proba(X) 

應該將每個類的每個行在X中的概率放入使用class#的probas中以指向co列在probas。

如果添加astype(INT)本會工作

probas[:, list(et.classes_.astype(int))] = et.predict_proba(X)

或只是

probas = np.copy(et.predict_proba(X))