Страницы

Поиск по вопросам

среда, 26 февраля 2020 г.

Ошибка: TypeError: fit() missing 1 required positional argument: 'y'

#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?

Комментариев нет:

Отправить комментарий