我正在尝试将 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 个类别