Могу ли я использовать строковые значения в качестве зависимой переменной в модели машинного обучения KNN?
Итак, у меня есть данные со 128 кодировками лиц, где метка - это имя человека, а столбец с именами на нем - мой целевой столбец. Я, очевидно, использовал labelbinarisation для преобразования в двоичную форму зависимой переменной (столбец имени). Когда я использовал KNN для подбора и предсказания имени человека, он ничего не предсказывал.
Должно получиться примерно так:
Но вместо этого я получил следующее:
Из-за этого мое первое сомнение было в том, могу ли я использовать строковое значение в качестве зависимой или целевой переменной или нет. Любая помощь приветствуется. Спасибо
Для бинаризации я использовал это
#Binarising the labels
labelBinarised = LabelBinarizer()
Y_train=labelBinarised.fit_transform(Y_train)
Y_test = labelBinarised.fit_transform(Y_test)
1 ответ
Вы можете использовать строковые значения в качестве целевой переменной, поскольку в документации указано, что целевая переменная должна быть {array-like, sparse matrix} Target values of shape = [n_samples] or [n_samples, n_outputs]
, они не упомянули, что это только числовое значение. ваши функции должны быть числовыми, поскольку они используются для расчета расстояния, но ваша цель может быть строкой.
Как показано в примере ниже, целевым значением является строка, и она отлично работает:
X = [[0], [1], [2], [3]]
y = ['zero', 'zero', 'one', 'one']
from sklearn.neighbors import KNeighborsClassifier
neigh = KNeighborsClassifier(n_neighbors=3)
neigh.fit(X, y)
print(neigh.predict([[3]]))
#output
#array(['one'], dtype='<U4')