为什么sklearn GBDT目标值不能浮动?

时间:2017-01-20 03:33:07

标签: python scikit-learn

我的python代码:

y_train = y_train.astype(float)
X_train = X_train.astype(float)
kernel = gbdt()
kernel = gbdt()
kernel.fit(X_train,y_train)

错误为ValueError: Unknown label type: array([ 0.0206, -0.006 , 0.0008, ..., 0.0245, 0.0166, -0.022 ], dtype=float32).

在sklearn gbdt文档中,它说:目标值(分类中的整数,回归中的实数)对于分类,标签必须与类对应。

任何人都知道发生了什么事?

1 个答案:

答案 0 :(得分:0)

sklearn集成中有两种GBDT算法, ensemble.GradientBoostingClassifier ensemble.GradientBoostingRegressor 并且您应指定最适合您任务的算法。

对于回归,请使用GradientBoostingRegressor,GradientBoostingClassifier进行分类。 例如,

gbdt=GradientBoostingRegressor(
  loss='ls'
, learning_rate=0.1
, n_estimators=100
, subsample=1
, min_samples_split=2
, min_samples_leaf=1
, max_depth=3
, init=None
, random_state=None
, max_features=None
, alpha=0.9
, verbose=0
, max_leaf_nodes=None
, warm_start=False
)

gbdt.fit(X, y)

您似乎正在进行回归,因为您的响应不喜欢分类值,因此您可以尝试GradientBoostingRegressor()