Краткое руководство по использованию sklearn train_test_split на фреймворке pandas

В этой короткой статье я описываю, как разделить набор данных на обучающие и тестовые данные для машинного обучения, применив функцию train_test_split в sklearn. Я использую фрейм данных, который был создан программой из моей последней статьи. Данные основаны на необработанном наборе данных BBC News Article, опубликованном Д. Грином и П. Каннингемом [1].

Не стесняйтесь проверить исходный код здесь, если вам интересно.

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



Понимание данных

Поскольку я хочу, чтобы это руководство было довольно кратким, я не буду описывать этот шаг так подробно, как в моей последней статье. Самая важная информация, которую следует упомянуть в этом разделе, - это структура данных и способы доступа к ним.

Как видно на скриншоте ниже, данные находятся в папке generated_data. Мы также хотим сохранить данные поезда и испытаний в эту папку после того, как эти файлы будут созданы. Кроме того, сценарий запускается в файле prepare_ml_data.py, который находится в папке prepare_ml_data.

Как было показано в моей последней статье о преобразовании текстовых файлов в таблицы данных, файл bbc_articles.tsv содержит пять столбцов. Однако в этом руководстве нас интересуют только столбцы текста и жанра.

Загрузите данные

На первом этапе мы хотим загрузить данные в нашу среду кодирования. Для этого нам понадобится путь к директории, в которой хранятся данные. Мы сохраняем путь к локальной переменной, чтобы получить к ней доступ, чтобы загрузить данные и использовать его в качестве пути для сохранения финального поезда и тестового набора. Поскольку данные хранятся в другой папке, чем файл, в котором мы запускаем скрипт, нам нужно вернуться на один уровень в файловой системе и получить доступ к целевой папке на втором этапе. Мы достигаем этого путем объединения «..» и папки данных, в результате чего получается «../generated_data/».

Используя путь к папке generated_data, мы создаем другую переменную, указывающую на сам файл данных, которая называется bbc_articles.tsv. Поскольку это файл значений, разделенных табуляцией (tsv), нам нужно добавить разделитель «\ t», чтобы загрузить данные как фрейм данных Pandas.

Выбор данных для разделения (необязательно)

Следующая команда не требуется для разделения данных на набор для обучения и тестирования. Тем не менее, поскольку мне не нужны все доступные столбцы набора данных, я выбираю нужные столбцы и создаю новый фрейм данных только со столбцами «текст» и «жанр».

Разделение и сохранение

Теперь у нас есть данные, готовые для их разделения. К счастью, функция train_test_split библиотеки sklearn может обрабатывать кадры данных Pandas, а также массивы. Следовательно, мы можем просто вызвать соответствующую функцию, указав набор данных и другие параметры, например следующие:

  • test_size:
    Этот параметр представляет долю набора данных, которая должна быть включена в тестовую группу. По умолчанию для этого параметра установлено значение 0,25, что означает, что если мы не укажем test_size, результирующее разделение будет состоять из 75% обучающих и 25% тестовых данных.
  • random_state:
    Этот параметр управляет перетасовкой данных перед разделением. Определяя случайное состояние, мы можем воспроизвести одно и то же разделение данных между несколькими вызовами функций.
  • перемешать:
    Этот параметр указывает, следует ли перемешивать данные перед разделением. Поскольку наш набор данных упорядочен по жанрам, мы определенно хотим его перемешать. В противном случае поезд и тестовый набор не содержали бы одних и тех же жанров.

После разделения данных мы используем переменную пути к каталогу, чтобы определить путь к файлу для сохранения поезда и тестовых данных. Преобразуя фреймы данных в CSV с использованием «\ t» в качестве разделителя, мы создаем наши обучающие и тестовые файлы, разделенные табуляцией.

Заключение

В этой короткой статье я описал, как загрузить данные, чтобы разделить их на набор для обучения и тестирования. Соответствующие файлы данных теперь можно использовать для обучения и оценки текстовых классификаторов (хотя в зависимости от модели может потребоваться дополнительная очистка данных).

В будущих статьях я опишу, как настроить различные модели глубокого обучения (такие как LSTM и BERT) для обучения текстовых классификаторов, которые предсказывают жанр статьи на основе ее текста. Ниже приведена ссылка на мою статью, в которой я использовал фреймворк FARM для точной настройки BERT для классификации текста.



Большое спасибо за чтение и удачного кодирования!

использованная литература

[1] Д. Грин и П. Каннингем. «Практические решения проблемы диагонального доминирования в кластеризации ядерных документов», Тр. ICML 2006.