Методы эффективного разделения набора данных

#validation #machine-learning #dataset #training-data

#проверка #машинное обучение #набор данных #обучение-данные

Вопрос:

У меня довольно большой набор данных изображений. Снимки были сделаны «x» количеством фотографов, и каждое изображение попадает в одну из «y» тем. Как бы мне сделать разделение на поезд, действительный, тестовый, если я не хочу, чтобы между разделениями не было перекрытия фотографа и как можно меньше перекрытия темы (т. Е. Перекрытие темы между valid и train в порядке, но не с test)?

Некоторые темы не запечатлены некоторыми фотографами. Я пытался сначала разделить набор по фотографам, а затем попытаться объединить их с минимальным наложением темы, но было много проб и ошибок, и мне было интересно, есть ли лучший способ.

Ответ №1:

Ну, вы можете использовать train_test_split функцию внутри scikit-learn библиотеки, чтобы разделить ваш набор данных на train и test . как показано ниже

 from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size = 0.2, random_state=42)
 

где

 X = Features and Y = Labels
 

Затем вы можете использовать cross_validate функцию, которая случайным образом принимает некоторую часть обучающих данных в качестве validation данных и обучает их по переданному алгоритму,
как показано ниже

 from sklearn.model_selection import cross_validate

cv_results = cross_validate(algorithm, x_train, y_train, cv=3)
 

Так ваши тестовые данные и обучающие данные не будут перекрываться