Я пытаюсь решить проблему, в которой я использую алгоритм KNN для классификации. При использовании конвейера я решил добавить SelectKBest
, но я получаю ошибку ниже:
Все промежуточные этапы должны быть преобразователями и выполнять подгонку и преобразование.
Я не знаю, смогу ли я использовать этот алгоритм выбора с KNN. Но я тоже попробовал с SVM и получил тот же результат. Вот мой код:
sel = SelectKBest('chi2',k = 3)
clf = kn()
s = ss()
step = [('scaler', s), ('kn', clf), ('sel',sel)]
pipeline = Pipeline(step)
parameter = {'kn__n_neighbors':range(1,40,1), 'kn__weights':['uniform','distance'], 'kn__p':[1,2] }
kfold = StratifiedKFold(n_splits=5, random_state=0)
grid = GridSearchCV(pipeline, param_grid = parameter, cv=kfold, scoring = 'accuracy', n_jobs = -1)
grid.fit(x_train, y_train)