#python #pandas #машинное_обучение #numpy #scikit_learn
Я пытаюсь сделать алгоритм на python, определяющий написанные от руки английские буквы, но при попытке обучения появляется ошибка. Мой код: import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.neighbors import KNeighborsClassifier as knc abc_train = pd.read_csv("alphabet.csv") columns = ["let"] for i in range(784): columns.append(f"px_{i+1}") abc_train.columns = columns label_name = abc_train["let"].values let_train = abc_train.values[:, 1:] pict_train = let_train.reshape(372450 , 28, 28) knc = knc.fit( pict_train, label_name) Ошибка: TypeError Traceback (most recent call last)in ----> 1 knc = knc.fit( pict_train[1:14325], label_name) TypeError: fit() missing 1 required positional argument: 'y' Что я делаю не так? Как я могу решить эту проблему / ошибку ? Может ли это быть из-за того, что в датасете не указан верный вывод?
Ответы
Ответ 1
Ошибка в том, что вы не создали объект класса KNeighborsClassifier, а использовали метод класса KNeighborsClassifier.fit(). Попробуйте так: from sklearn.neighbors import KNeighborsClassifier knc = KNeighborsClassifier(n_neighbors=5) ... knc.fit(pict_train, label_name) PS @gil9red отлично дополнил ответ в комментарии: в питоне у методов объекта есть первый, неочевидный параметр self, в который кладется ссылка на объект, что метод вызвал и в случае вызова метода классом (а не объектом), в тот параметр self попал объект pict_train, а label_name, соответственно, попал в X, поэтому и ругается на y?
Комментариев нет:
Отправить комментарий