0
我現在有點迷路了。我正確初始化一個空numpy的陣列,我相信我使用np.append
功能正常for循環中追加numpy數組的問題
Preds = np.empty(shape = (X_test.shape[0],10))
kf = KFold(n = X_train.shape[0], n_folds=10, shuffle = True)
for kf_train, kf_test in kf:
X_train_kf = X_train.iloc[kf_train]
Y_train_kf = Y_train.iloc[kf_train]
dt = tree.DecisionTreeClassifier(max_depth=2)
dt.fit(X_train_kf, Y_train_kf)
Preds = np.append(Preds,dt.predict(X_test))
print Preds
只是一些額外的信息:
X_test具有的形狀(9649,24)
(後運行)Preds具有的形狀(192980)
在這個循環中,Preds的形狀應該是(9649,10)
任何建議將不勝感激。
編輯:這裏是更新的解決方案
Preds = []
kf = KFold(n = X_train.shape[0], n_folds=20, shuffle = True)
for kf_train, kf_test in kf:
X_train_kf = X_train.iloc[kf_train]
Y_train_kf = Y_train.iloc[kf_train]
dt = tree.DecisionTreeClassifier(max_depth=2)
dt.fit(X_train_kf, Y_train_kf)
Preds.append(dt.predict(X_test))
Preds = np.vstack(Preds)
來自numpy.append文檔:'axis:int,可選 值附加的軸。如果未指定軸,則在使用' –
之前,arr和值都會變平並且是否檢查了dt.predict(X_test)的形狀? –
最好避免使用append。相反,只需將每個數組添加到python列表中,然後使用np.vstack或np.hstack將它們平鋪到單個數組中。 – Erotemic