Передавая список целых чисел в качестве функций в scikit-learn, вы говорите, что между функциями есть какая-то зависимость.Например, 0
ближе к 1
, чем к 2
.Чтобы обойти это, вам нужно будет выполнить горячее кодирование со встроенным OneHotEncoder .Если у вас есть три категории, 0
, 1
и 2
, 0
будет преобразовано в [1,0,0]
, а 1
будет преобразовано в [0,1,0]
.По сути, ваш единственный объект заменен вектором, равным 1
в позиции, соответствующей классу, к которому он относится, и 0
в противном случае.
import numpy as np
from sklearn.preprocessing import OneHotEncoder
# Generate random integers between 0 and 2
x = np.random.randint(0,3, size=(100,1))
# Create the one-hot encoder object, specifying not to use sparse arrays.
m = OneHotEncoder(sparse=False)
# Transform your features
x_one_hot = m.fit_transform(x)