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)