Разделение значений x и y как поезд, проверка, тест - PullRequest
0 голосов
/ 19 апреля 2020

Сначала я присваиваю аргументы значению X, а зависимой переменной - значение y.

y = df2["letter_grade"]
X = df2.drop(["letter_grade"], axis = 1)

Я хочу разделить набор данных на последовательность 50%, проверку 20% и 30% test.

train, validate, test = np.split(df.sample(frac=1), [int(.5*len(df)), int(.7*len(df))])

Работает в двух кодах. Но я хочу тренироваться с поездом. Я хочу попробовать разные значения k и выбрать наилучшее значение k с помощью набора проверки. Я хочу проверить с тестовым набором. Я ошибаюсь в коде этой части.

1 Ответ

0 голосов
/ 19 апреля 2020

Безусловно, самый простой способ сделать это - использовать scikit-learn's train_test_split дважды:

from sklearn.model_selection import train_test_split

X_train, X2, y_train, y2 = train_test_split(X, y, test_size=0.5)
X_val, X_test, y_val, y_test = train_test_split(X2, y2, test_size=0.6)

Таким образом:

  • X_train составляет 50% от ваш оригинал X
  • X_test равен 0,6 * 0,5 = 0,3, т. е. 30% от вашего оригинала X
  • X_val - это оставшиеся 20% X

Использование train_test_split имеет и другие преимущества, поскольку оно автоматически перетасовывает данные для вас ( рекомендуется ), и вы даже можете указать stratify=y для стратифицированной выборки без особых хлопот .

...