此刻我有点失落。我正确地初始化了一个空的numpy数组,我相信我正在使用np.append
函数
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)
答案 0 :(得分:0)
如果 newPreds = np.concatenate((Preds, np.zeros((N,10))), axis=0)
newPreds = np.concatenate((Preds, np.zeros((9649,N)), axis=1)
是(9649,10),那么你可以做两种串联中的一种
np.vstack
第一个产生(9649 + N,10)阵列,第二个产生(9646,10 + N)。
(10,)
可用于使第二个数组为2d,即它将(1,10)
更改为np.append
数组。 alist = []
alist.append(initial_array)
for ...
alist.append(next_array)
result = np.concatenate(alist, axis=?)
# vstack, stack, and np.array can be used if dimensions are right
采用2个参数而不是列表,并确保第二个是数组。将标量添加到1d数组比通用连接更好。
确保您了解阵列的形状和尺寸数。
一个好的选择是附加到列表
Folder\Another Folder\MyAndroidProjects\...
追加到列表,最后是一个连接,比重复连接要快。列表旨在便宜地增长;通过创建一个新的更大的数组来增加数组。