Вы, вероятно, хотите использовать кодировщик. Одними из самых популярных и популярных являются LabelEncoder
и OneHotEncoder
. Оба предоставляются как части библиотеки sklearn
.
LabelEncoder может использоваться для преобразования категориальных данных в целые числа:
from sklearn.preprocessing import LabelEncoder
label_encoder = LabelEncoder()
x = ['Apple', 'Orange', 'Apple', 'Pear']
y = label_encoder.fit_transform(x)
print(y)
array([0, 1, 0, 2])
Это приведет к преобразованию списка ['Apple', 'Orange', 'Apple', 'Pear'] в [0, 1, 0, 2] с каждым целым числом, соответствующим элементу. Это не всегда идеально для ML, так как целые числа имеют разные числовые значения, что позволяет предположить, что одно больше другого, например, Pear> Apple, что совсем не так. Чтобы не создавать такого рода проблемы, вы должны использовать OneHotEncoder.
OneHotEncoder может использоваться для преобразования категориальных данных в один массив с горячим кодированием. Кодирование, ранее определенное y
с использованием OneHotEncoder, приведет к:
from numpy import array
from numpy import argmax
from sklearn.preprocessing import OneHotEncoder
onehot_encoder = OneHotEncoder(sparse=False)
y = y.reshape(len(y), 1)
onehot_encoded = onehot_encoder.fit_transform(y)
print(onehot_encoded)
[[1. 0. 0.]
[0. 1. 0.]
[1. 0. 0.]
[0. 0. 1.]]
, где каждый элемент x
превращается в массив нулей и только один 1
, который кодирует категорию элемента.
Простое руководство по использованию этого в DataFrame можно найти здесь .