Я здесь потерян.Надеюсь, что кто-то может пролить свет.
Я построил конвейер (sklearn pipe, точнее говоря, неуравновешенный конвейер )
Первый шагpipe - это FunctionSampler (imbalanced-learn 0.4.0dev, доступный только на Git-hub), который представляет собой оболочку API для пользовательской функции, определенной ниже на шаге № 3.Я хотел бы иметь возможность передавать диапазон параметров в лежащую в основе функции - это моя проблема здесь.
Затем я строю поиск в сетке с диапазоном для max_samples, но когда я подхожу, я получаю ошибку.
Я новичок в python - извиняюсь, если нет очевидного ответа, которого я не вижу.
Большое спасибо!
1 определить пользовательскую функцию
In [90]: def outlier_rejection(X, y, max_samples):
...: model = IsolationForest(max_samples=max_samples, contamination=0.4, random_state=rng)
...: model.fit(X)
...: y_pred = model.predict(X)
...: return X[y_pred ==1], y[y_pred == 1]
...:
2 построить конвейер
pipe = make_pipeline(FunctionSampler(func=outlier_rejection, kw_args={'max_samples':1}), LogisticRegression(random_state=rng))
3 показать канал, который мне нужно передать max_samples в kw_args
Pipeline(memory=None,
steps=[('functionsampler', FunctionSampler(accept_sparse=True,
func=<function outlier_rejection at 0x000001173B3E9EA0>,
kw_args={'max_samples': 1})), ('logisticregression', LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
intercept_scaling=1, max...ect at 0x0000011737DCA1B0>,
solver='liblinear', tol=0.0001, verbose=0, warm_start=False))])
4 построить поиск сетки
cv = GridSearchCV(pipe, param_grid={'logisticregression__C': [1., 10.], 'functionsampler__max_samples': [1, 10, 100]})
5подгони резюме и получи следующую ошибку