Как я могу кодировать текстовые данные как функции для алгоритмов ML в Python?
У меня есть CSV-файл, в котором есть столбцы, заполненные текстовыми данными. Как я могу заменить их постоянными данными, чтобы применить алгоритм машинного обучения к этому набору данных. Пример набора данных: дата, имя, имя цвета, имя пользователя и название продукта.
2 ответа
Вы пытаетесь классифицировать ваши данные. Попробуйте следующее:
Пример 1. Для названия цвета и названия продукта, если только существует несколько типов, вы можете отобразить следующее:
# Color_name mapping
color_mapping = {"red": 1, "yellow": 2, "blue": 3, "green": 4, "pink": 5}
dataset['color_name'] = dataset['color_name'].map(color_mapping)
# Product_name mapping
product_mapping = {"product1": 1, "product2": 2, "product3": 3, "product4": 4, "product5": 5}
dataset['product_name'] = dataset['product_name'].map(product_mapping)
Пример 2. Для user_name, если они не могут быть классифицированы, как указано выше, вы можете сделать следующее:
Попробуйте извлечь названия из названия.
Пример: имена, начинающиеся с названий Mr., Ms., Mrs. и т. Д. Могут быть извлечены и могут быть сгруппированы соответственно
title_mapping = {"Mr": 1, "Miss": 2, "Mrs": 3}
dataset['user_name'] = dataset['user_name'].map(title_mapping)
Пример 3: Для даты вы можете сгруппировать их как даты, относящиеся к разным годам или месяцам или для определенного периода и т. Д.
На самом деле верхние ответы и комментарии просто объясняют половину работы. 1, 2, 3, ... подразумевают пространственные зависимости внутри закодированных слов, например, "красный" ближе к "желтому", чем к "голубому", поскольку 1 ближе к 2, чем к 3. После применения преобразования к целочисленным значениям Вы должны пойти на что-то вроде горячего кодирования.
Если вы используете панд, проверьте get_dummies
Если вы используете sklearn, перейдите на LabelBinarizer
(Здесь вы можете найти очень хороший учебник о том, как обращаться с категориальными данными)
Поскольку одно горячее кодирование взрывает ваши фактические данные, которые вы передаете в сеть, вы можете рассмотреть возможность использования методов уменьшения размерности заранее или, возможно, лучший способ - использовать так называемые вложения слов. Сегодня очень желательно использовать встраивание слов в реальные текстовые данные, так как они изменили правила игры для современных приложений НЛП. Если вы имеете дело только с отдельными словами, нет необходимости вложения слов.
ура