#python #machine-learning #scikit-learn #image-classification
#python #машинное обучение #scikit-learn #изображение-классификация
Вопрос:
Итак, у меня есть данные со 128 кодировками лиц, метка которых является именем человека, а столбец с именами в нем является моим целевым столбцом. Я, очевидно, использовал labelbinarisation для бинаризации зависимой переменной (столбец name). Когда я использовал KNN для подгонки и прогнозирования имени пользователя, это ничего не предсказывает.
Это должно быть что-то вроде этого:
Но вместо этого я получил это:
Из-за этого моим первым сомнением было, могу ли я использовать строковое значение в качестве зависимой или целевой переменной или нет. Приветствуется любая помощь. Спасибо
Для бинаризации я использовал это
#Binarising the labels
labelBinarised = LabelBinarizer()
Y_train=labelBinarised.fit_transform(Y_train)
Y_test = labelBinarised.fit_transform(Y_test)
Комментарии:
1. Пожалуйста, добавьте код с fit и predict.
2. Это
scikit-learn
вопрос, который на самом деле не имеет ничего общего сpandas
— пожалуйста, не спамите нерелевантными тегами (отредактировано).
Ответ №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')