Используйте набор данных для замены значения в другом наборе данных, используя Python или pandas - PullRequest
0 голосов
/ 26 октября 2019

У меня есть огромный набор данных 'A' для прогнозирования цены автомобиля с определенными столбцами. Один из столбцов - «город», и я хочу присвоить ранг каждому городу, чтобы использовать его для алгоритма ML. Городов больше 50, поэтому замена во время выполнения не делает код хорошо выглядящим.

Я хочу создать .csv, содержащий 'city' и 'rank', заменить и использовать это 'ранг 'в наборе данных' A '. Как я могу сделать это в питоне или пандах? Любой пример или фрагмент кода будет очень полезен.

1 Ответ

1 голос
/ 26 октября 2019

Вы можете использовать labelEncoder от scikit, он преобразует каждое уникальное имя в код. ОПАСНОСТЬ: обратите внимание, что коды даны случайным образом и являются номинальными (не порядковыми), что означает, что относительные числа городов не имеют никакого значения. В приведенном ниже примере Токио - 2, Париж - 1. Это потому, что в Токио больше население? Или что-нибудь значимое? NO. Поэтому он случайный, поэтому большую часть времени он не подходит для использования в качестве функции ML. Документ для Label enconder: здесь .

Вы также можете заглянуть в одноклавишный кодировщик, который превращает каждое значение в столбец из 1 и 0. Как правило, именно так вы включаете категории в ML.

Для получения дополнительной информации выполните поиск в Google, например, "номинальные или обычные категориальные функции" или "как включить категории в scikit ml" и т. Д. *

>>> le = preprocessing.LabelEncoder()
>>> le.fit(["paris", "paris", "tokyo", "amsterdam"])
LabelEncoder()
>>> list(le.classes_)
['amsterdam', 'paris', 'tokyo']
>>> le.transform(["tokyo", "tokyo", "paris"]) 
array([2, 2, 1]...)
>>> list(le.inverse_transform([2, 2, 1]))
['tokyo', 'tokyo', 'paris']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...