Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在应用分层k-折叠交叉验证后,如何将数据分为测试和训练?_Python_Pandas_Scikit Learn_K Fold - Fatal编程技术网

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

Python 在应用分层k-折叠交叉验证后,如何将数据分为测试和训练?,python,pandas,scikit-learn,k-fold,Python,Pandas,Scikit Learn,K Fold,我已经使用以下代码将列指定给其特定的k折叠: 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,

我已经使用以下代码将列指定给其特定的k折叠:

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
现在,数据帧如预期的那样:


        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
但是如何将其拆分为训练和测试拆分?

将数据帧拆分为多个折叠,并返回训练/测试索引。 每个折叠将有一部分用于测试(尺寸len(数据)/n),其余部分用于培训

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

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