Типы разделения теста поезда

#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 , данные будут стратифицированы.