【发布时间】:2018-11-12 12:26:33
【问题描述】:
我在这里迷路了。希望有人能解释一下。
我已经建立了一个管道(sklearn 管道,确切地说是一个不平衡学习pipeline)
管道的第一步是FunctionSampler(imbalanced-learn 0.4.0dev 仅在 Git-hub 上可用),它是下面第 3 步中定义的自定义函数的 API 包装器。我希望能够将一系列参数传递给底层函数 - 这是我的问题。
然后我构建了一个网格搜索,其中包含 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 显示我需要在 kw_args 中传递 max_samples 的管道
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 fit cv 出现如下错误
ValueError: Invalid parameter max_samples for estimator FunctionSampler(accept_sparse=True,
func=<function outlier_rejection at 0x000001173B3E9EA0>,
kw_args={'max_samples': 1}). Check the list of available parameters with `estimator.get_params().keys()`.
【问题讨论】:
标签: python python-3.x scikit-learn keyword-argument