【发布时间】:2022-01-16 04:31:56
【问题描述】:
首先,作为一个不会说英语的人,我正在使用翻译来解决我的问题。如果句子笨拙且难以阅读,请您谅解。
我尝试通过 Kfold 交叉验证来学习数据。但是,在为 kfold 划分训练数据的过程中会出现连续的错误。以下代码是我的数据集。
df_test = df_data.iloc[50001:, :] #Test set
df_use = df_data.iloc[0:50000, :] #Training set
x_test = df_test.drop(['upgraded'], axis = 1)
y_test = df_test['upgraded']
x = df_use.drop(['upgraded'], axis = 1)
y = df_use['upgraded']
而且每次我尝试拆分训练数据和验证数据时,都会出现错误。
for train_ix, val_ix in kfold.split(x):
trainX, trainy = x[train_ix], y[train_ix]
valX, valy = x[val_ix], y[val_ix]
model, val_acc = evaluate_model(trainX, trainy, valX, valy)
我不确定这是否会有所帮助,但是当我使用此代码时,trainX, trainy = x[train_ix], y[train_ix] 会出现此错误消息。
KeyError: "没有 [Int64Index([10000, 10001, 10002, 10003, 10004, 10005, 10006, 10007, 10008,\n 10009,\n ...\n 49990, 49991, 49992, 49993, 499 , 49995, 49996, 49997, 49998,\n 49999],\n dtype='int64', length=40000)] 在[列]"
所以我像这样切换了代码。
for train_ix, val_ix in kfold.split(x):
trainX, valX = x.iloc[train_ix], x.iloc[val_ix]
trainy, valy = y.iloc[train_ix], y.iloc[val_ix]
model, val_acc = evaluate_model(trainX, trainy, valX, valy)
这一次,model, val_acc = evaluate_model(trainX, trainy, valX, valy) 这个代码得到了错误。
IndexError:索引 -9223372036854775808 超出轴 1 的范围,大小为 2
所以我也尝试了这段代码。 (我用 train_test_split 对 df_use 进行了切片。)出现相同的索引错误。
inputs = np.concatenate((x_train, x_val), axis=0)
targets = np.concatenate((y_train, y_val), axis=0)
我想以正确的方式拆分和放置数据,以便 kfold 交叉验证模型识别我的数据并可以运行模型。如果有人提供帮助会非常有帮助。
【问题讨论】:
标签: python regression cross-validation ensemble-learning k-fold