Как преобразовать строки в числовые значения? - PullRequest
0 голосов
/ 21 января 2019

Я чищу csv-файл на jupyter для машинного обучения.Однако несколько столбцов имеют строковые значения, например столбец «описание»:

enter image description here

Я знаю, что для очистки нужно использовать NLP, но не смог найти способ сделать это на jupyter.,Не могли бы вы посоветовать мне, как преобразовать эти значения в числовые значения?

Спасибо

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Числовые значения лучше для создания моделей обучения, чем слова или изображения. (Почему? Уменьшение размерности)

Обычные алгоритмы машинного обучения ожидают ввода чисел.

Техника, используемая для преобразования слова в соответствующее числовое значение, называется встраиванием слова.

В вложение слов , строки преобразуются в векторов объектов (числа).

Мешок слов, word2vec , GloVe можно использовать для реализации этого.

Обычно рекомендуется игнорировать те поля, которые не имеют значения для модели. Включайте описание, только если это абсолютно необходимо.

0 голосов
/ 21 января 2019

Проблема, которую вы описываете, заключается в преобразовании категориальных данных, обычно в форме строк или числовых идентификаторов, в чисто числовые данные. Я уверен, что вы знаете, что использование числовых идентификаторов имеет проблему: это приводит к ложной интерпретации, что данные имеют некоторый порядок. Как apple < orange < lime, когда это не так.

Обычно используется однократное кодирование для получения числовых переменных индикатора. После кодирования одного столбца у вас есть N столбцов, где N - количество уникальных меток. Столбцы имеют значение 1, когда соответствующая категориальная переменная имеет это значение, и 0 в противном случае. Это особенно удобно, если в одном столбце несколько уникальных ярлыков. И у Pandas, и у sklearn есть такие функции, хотя они не настолько полны, как можно было бы надеяться.

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

Например:

>>> import pandas as pd
>>> df = pd.DataFrame(['a', 'b', 'c', 'a', 'a', pd.np.nan])
>>> pd.get_dummies(df)
   0_a  0_b  0_c
0    1    0    0
1    0    1    0
2    0    0    1
3    1    0    0
4    1    0    0
5    0    0    0

Для получения кодирования слово за словом потребуется дополнительная обработка. Этот подход рассматривает только полные значения в качестве переменных.

...