sklearn запрос по api mutual_info_regression

Хочу получить взаимную информацию каждых 2х признаков через метод ближайшего соседа. В mutual_info_regression предустановлено 3 признака для расчетов. работающий код:

selector = SelectKBest(mutual_info_regression, k='all').fit(X, y)

Как сделать для 2х признаков? Приведенные ниже варианты вызывают ошибки:

from sklearn.feature_selection import SelectKBest,mutual_info_regression
selector = SelectKBest(mutual_info_regression, k='all').fit(X, y,**{'n_neighbors':2})
selector = SelectKBest(mutual_info_regression(**{'n_neighbors':2}), k='all').fit(X, y)
selector = SelectKBest(mutual_info_regression(n_neighbors=2), k='all').fit(X, y)
selector = SelectKBest(mutual_info_regression,n_neighbors=2, k='all').fit(X, y)

При попытке зайти через make_scorer:

scoring = make_scorer(mutual_info_regression, greater_is_better=True, n_neighbors = 2)

selector = SelectKBest(scoring, k='all').fit(feat, targ)

ошибка:

TypeError: call() takes at least 4 arguments (3 given)


Ответы (1 шт):

Автор решения: Анна Лебедева

Решение, через partial. Можно заменить существующую функцию, которой уже переданы аргументы переопределение функции:

from functools import partial
scorer_function = partial(mutual_info_regression, n_neighbors=2)
selector = SelectKBest(scorer_function, k='all').fit(X, y)
→ Ссылка