#python #pandas #machine-learning #scikit-learn #train-test-split
#python #панды #машинное обучение #scikit-learn #поезд-тест-сплит
Вопрос:
Кто-нибудь может объяснить мне эти 2 разных типа разделения теста поезда. Я знаю первый. Второй, который я видел в чьем-то коде.
train_text, temp_text, train_labels, temp_labels = train_test_split(df['text'], df['spam'],
random_state=42,
test_size=0.3,
stratify=df['spam'])
df_train, df_valid = model_selection.train_test_split(
text, test_size=0.1,
random_state=42, stratify=data.spam.values)
Во втором примере, почему человек взял только 2 переменные вместо 4
Ответ №1:
почему человек взял только 2 переменные вместо 4
Причина в том, что train_test_split
принимает два типа параметров — *arrays
и **options
— и:
-
В первом примере
*arrays
являютсяdf['text'], df['spam']
. Остальные аргументы (**options
) не имеют отношения к вопросу. Итак, функция получает два массива —df['text']
иdf['spam']
и производит разделение поездов и тестов для каждого из двух массивов, поэтому она имеет 4 результата. -
Во втором примере предоставляется только один массив —
text
поэтому функция возвращает только два результата — разделение поезда и тестаtext
.
В документации функции указано, что она возвращает:
разделение: список, длина = 2 * len (массивы) Список, содержащий разделение входных данных для обучающего теста.
Комментарии:
1. каким бы примером был df_train, df_valid = model_selection. train_test_split( df, test_size=0.1, random_state=42, stratify=data.spam.values) Это бы фрагментировало весь фрейм данных?
Ответ №2:
В соответствии с этим. Если вы используете stratify
, данные будут разделены с использованием значения stratify в качестве меток классов стратифицированным образом. Что помогает в распределении классов.
Если это так, поскольку как в первом, так и во втором примере stratify
нет None
, данные будут стратифицированы.