Вывести строковые данные в один горячий вектор для машинного обучения - PullRequest
0 голосов
/ 10 января 2019

все. У меня есть список со строками:

labels = ["Synonym", "Antonym", "Not relevant", "Synonym", "Antonym"]

Существует 3 разных метки, и я хочу сначала отнести их к номерам 1,2 и 3, а затем построить из них один горячий вектор, как, например, для метки 3 -> 0 0 1 У кого-нибудь есть идеи, как это сделать?

1 Ответ

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

Простое решение без библиотек будет:

labels = ["Synonym", "Antonym", "Not relevant", "Synonym", "Antonym"]

mapping = {label: i for i, label in enumerate(set(labels))}

one_hot = []
for label in labels:
    entry = [0] * len(mapping)
    entry[mapping[label]] = 1
    one_hot.append(entry)

Результат: [[0, 1, 0], [0, 0, 1], [1, 0, 0], [0, 1, 0], [0, 0, 1]].

Но вы, возможно, захотите взглянуть на sklearn, в частности sklearn.preprocessing.OneHotEncoder.

...