Случайным образом разделить информационный фрейм панд сразу на группы для перекрестной проверки в x раз - PullRequest
0 голосов
/ 30 сентября 2018

Допустим, у меня есть фрейм данных с 500 строками.Я хочу выполнить 10-кратную перекрестную проверку.Итак, мне нужно разделить эти данные на 10 наборов, каждый из которых содержит 50 строк.Я хочу выполнить это разделение целых данных сразу на 10 групп, которые тоже случайным образом .

Есть ли способ сделать это, используя любую библиотеку, такую ​​как pandas, numpy и т. Д .?

1 Ответ

0 голосов
/ 30 сентября 2018

Вы можете использовать sklearn's KFold :

import numpy as np
import pandas as pd
from sklearn.model_selection import KFold 

# create dummy dataframe with 500 rows
features = np.random.randint(1, 100, 500)
labels = np.random.randint(1, 100, 500)
df = pd.DataFrame(data = {"X": features, "Y": labels})

kf = KFold(n_splits=10, random_state=42, shuffle=True) # Define the split - into 10 folds 
kf.get_n_splits(df) # returns the number of splitting iterations in the cross-validator
print(kf) 

for train_index, test_index in kf.split(df):
    print("TRAIN:", train_index) 
    print("TEST:", test_index)
    X_train, X_test = df.loc[train_index, "X"], df.loc[test_index, "X"]
    y_train, y_test = df.loc[train_index, "Y"], df.loc[test_index, "Y"]

Пример взят здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...