问题
我想在进行多标签分类时使用验证数据集提前停止,但似乎 sklearn 的MultiOutputClassifier不支持。您对解决方案有什么建议吗?
我做了什么
import numpy, sklearn
from sklearn.multioutput import MultiOutputClassifier
from xgboost import XGBClassifier
# Creating some multi-label data
X_train = numpy.array([[1,2,3],[4,5,6],[7,8,9]])
X_valid = numpy.array([[2,3,7],[3,4,9],[7,8,7]])
Y_train = numpy.array([[1,0],[0,1],[1,1]])
Y_valid = numpy.array([[0,1],[1,1],[0,0]])
# Creating a multi-label xgboost
xgb = XGBClassifier(n_estimators=500, random_state=0, learning_rate=0.05, eval_metric='logloss')
xgb_ml = MultiOutputClassifier(xgb)
# Training the model
xgb_ml.fit(X_train, Y_train)
一切都按预期工作,直到这里!
现在我想使用一个验证集来做一些提前停止。我使用与普通单标签 xgboost 相同的参数。
# Training model using an evaluation dataset
xgb_ml.fit(X_train, Y_train, eval_set=[(X_train, Y_train), (X_valid, Y_valid)], early_stopping_rounds=5)
>ValueError: y should be a 1d array, got an array of shape (3, 2) instead.
似乎eval_set参数没有表明现在需要在多标签数据集的训练期间评估模型。这不支持吗?还是我做错了什么?