【发布时间】:2021-03-19 17:58:52
【问题描述】:
我试图将 base_margin 作为 sklearn 管道的一部分传递给 fit() 中的 xgboost。
如果您将base_margin 与sample_weight 交换,我的代码将起作用,这也是fit() 中的一个参数,所以我不确定为什么它无法识别base_margin。
由于一些部署限制,我只能在 sklearn 管道中实现 xgboost,所以请不要提供替代答案。
# packages
import sklearn
import xgboost
from sklearn.datasets import load_boston
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import FunctionTransformer
from xgboost import XGBRegressor
import numpy as np
# Get boston dataset
boston = load_boston()
x, y = boston.data, boston.target
# Define offset
offset = np.ones(X.shape[0])
# sklearn pipeline
## identity transformation with XGBRegressor
pipeline_sklearn = Pipeline(steps=[
('preprocessor', FunctionTransformer()),
('regressor', XGBRegressor(
n_etimators = 100,
learning_rate = 0.01,
random_state=0
))])
pipeline_sklearn.fit(X,y,regressor__base_margin = offset)
结果:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-34-ee36c60ebc2d> in <module>
----> 1 pipeline_sklearn.fit(X,y,regressor__base_margin = offset)
/anaconda/envs/azureml_py36/lib/python3.6/site-packages/sklearn/pipeline.py in fit(self, X, y, **fit_params)
352 self._log_message(len(self.steps) - 1)):
353 if self._final_estimator != 'passthrough':
--> 354 self._final_estimator.fit(Xt, y, **fit_params)
355 return self
356
TypeError: fit() got an unexpected keyword argument 'base_margin'
【问题讨论】:
标签: python scikit-learn pipeline xgboost