对sklearn GridSearchCV使用单独的预定义验证集

2024-09-28 12:14:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我在随机森林分类器上运行Sklearn库中的GridSearchCV(gridsearchcrossvalidation)。 我想使用一个train/validation/test split,这个split我已经获得并保存在单独的numpy阵列上的磁盘上(也就是说,为了在某些测试中兼容,我必须在同一个split上使用其他算法)。在

我找不到将我的独立验证集与GridSearchCV一起使用的方法。我找到的唯一解决方法是在一个新的numpy数组上使用PredefinedSplit,在这个数组中,我连接从保存的文件加载的原始train和validation数组。在

ts_train = extractPlainTable(np.load('TimeSeries/train_x%d_30.npy' % i),s)
ts_val = extractPlainTable(np.load('TimeSeries/validation_x%d_20.npy' % i),s)
ts_test = extractPlainTable(np.load('TimeSeries/test_x%d_30.npy' % i),s)


labels_train = np.load('ground_truth/train_y%d_30.npy' % i)
labels_val = np.load('ground_truth/validation_y%d_20.npy' % i)
labels_test = np.load('ground_truth/test_y%d_30.npy' % i)

clf =  RandomForestClassifier()

merged_ts = np.concatenate((ts_train,ts_val),axis=0)
merged_labels = np.concatenate((labels_train,labels_val),axis=0)
mytestfold = []
for i in range(len(ts_train)):
    mytestfold.append(-1)
for i in range(len(ts_val)):
    mytestfold.append(0)


ps = PredefinedSplit(test_fold=mytestfold)

grid_search = GridSearchCV(estimator=clf, param_grid=param_grid,cv=ps)
grid_search.fit(merged_ts, merged_labels)

有更好的方法吗?在


Tags: 方法testlabelsnploadtrainvalmerged
1条回答
网友
1楼 · 发布于 2024-09-28 12:14:07

您可以通过一对train/val索引传递iterable。在

split = [(range(len(ts_train)), range(len(ts_train), len(ts_train) + len(ts_val)))]
grid_search = GridSearchCV(estimator=clf, param_grid=param_grid, cv=split)
grid_search.fit(merged_ts, merged_labels)

相关问题 更多 >

    热门问题