作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
作为交叉验证的一部分,需要将训练数组分成 N 份。然后对每个折叠进行一次实验。后者意味着我需要将 N-1 折叠合并到一个数组中,并使用剩余的折叠进行验证。
假设我有 binary_train_X 作为初始数组并希望将其分成 5 份。我得到了一些有效的代码:
num_folds = 5
train_folds_X = []
# Split the training data in folds
step = int(binary_train_X.shape[0] / num_folds)
for i in range(num_folds):
train_folds_X.append(binary_train_X[i*step:(i+1)*step])
# Prepare train and test arrays
for i in range(num_folds):
if i == 0:
train_temp_X = np.concatenate((train_folds_X[1:]))
elif i == num_folds - 1:
train_temp_X = np.concatenate((train_folds_X[0:(num_folds - 1)]))
else:
train_temp_X1 = np.concatenate((train_folds_X[0:i]))
train_temp_X2 = np.concatenate((train_folds_X[(i+1):(num_folds)]))
train_temp_X = np.concatenate((train_temp_X1, train_temp_X2))
test_temp_X = train_folds_X[i]
# Run classifier based on train_temp_X and test_temp_X
...
pass
问题 - 如何以更优雅的方式做到这一点?
最佳答案
为什么不这样做:
splits = np.array_split(binary_train_X, num_folds)
for i in range(num_folds):
fold_train_X = np.concatenate([*splits[:i], *splits[i + 1:]])
fold_test_X = splits[i]
# use your folds here
如果您想使用预构建的解决方案,可以使用sklearn.model_selection.KFold
:
kf = KFold(num_folds)
for train_index, test_index in kf.split(binary_train_X):
fold_train_X = binary_train_X[train_index]
fold_test_X = binary_test_X[train_index]
# use your folds here
关于python - 如何对数组进行切片以排除一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55334278/
我是一名优秀的程序员,十分优秀!