首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在应用分层k-折交叉验证后将数据拆分为测试和训练?

如何在应用分层k-折交叉验证后将数据拆分为测试和训练?
EN

Stack Overflow用户
提问于 2020-08-18 10:41:29
回答 1查看 1K关注 0票数 1

我已经使用下面的代码将列分配给了它们特定的k-fold:

代码语言:javascript
复制
from sklearn.model_selection import StratifiedKFold, train_test_split

# Stratified K-fold cross-validation 
df['kfold'] = -1
df = df.sample(frac=1).reset_index(drop=True)
y = df.quality
kf = StratifiedKFold(n_splits=5)

for f, (t_,v_) in enumerate(kf.split(X=df, y=y)):
  df.loc[v_, 'kfold'] = f

现在,数据帧如预期的那样:

代码语言:javascript
复制
        alcohol  volatile acidity   sulphates citric acid   quality kfold
1499    10.9            0.36          0.73        0.39          6   4
1500    9.5             0.65          0.55        0.10          5   4
1501    13.4            0.44          0.66        0.68          6   4
1502    9.6             0.59          0.67        0.24          5   4
1503    13.0            0.53          0.77        0.79          5   4

但是如何将其拆分成训练和测试拆分呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-18 10:56:02

StratifiedKFold将数据帧拆分为多个文件夹,并返回训练/测试索引。每个折叠将有一个部分用于测试(大小为len(数据)/n),其余部分将用于训练。

在for循环中,您可以访问训练和测试集,如下所示:

代码语言:javascript
复制
for f, (t_,v_) in enumerate(kf.split(X=df, y=y)):
  df_train = df.loc[t_]
  df_test = df.loc[v_]

正如您所看到的,您添加的kfold列标记了测试数据。其余的数据应用于此文件夹的训练。即,对于kfold == 1,训练数据是所有其他数据(kfold != 1)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63461112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档