#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?
Комментариев нет:
Отправить комментарий