0

我正在尝试将 sklearn 的 CalibratedClassifierCV() 与 lightgbm 一起使用,如下所示:

clf = LGBMClassifier(
boosting_type= 'gbdt',
objective= 'multiclass',
num_class=5,
metric= 'multi_logloss',
learning_rate= 0.05,
max_depth= 7,
num_leaves= 60,
feature_fraction= 0.7,
bagging_fraction= 1,
bagging_freq= 20,
nthread=4,
n_estimators=50)

calibrated_clf = CalibratedClassifierCV(clf, method='isotonic', cv=5)
calibrated_clf.fit(train_df[v1], train_df['label'])

但是它给我带来了错误,因为有一些分类变量,lightgbm 可以有效地处理这些变量,而不必转换为一种热编码,但 CalibratedClassifierCV 不是。

错误:ValueError: could not convert string to float: 'RC'

它正在调用sklearn的validation.py,它在步骤中抛出错误,因为在字符串对象上调用astype float:

if dtype_numeric and array.dtype.kind == "O":
    array = array.astype(np.float64)

有没有办法可以在不转换为数字变量的情况下处理这个问题?我避免将类别转换为数字,因为有超过 10000 个类别

4

0 回答 0