#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)
Так ваши тестовые данные и обучающие данные не будут перекрываться