xgb.train дает низкую точность по сравнению с .fit()
Я создаю модель с xgboost для своих данных, которая имеет около 50000 строк и около 550 столбцов после кодирования onehot. Моя целевая переменная - это мультиклассовая классификация со 150 переменными. Сначала я обучил свою модель с параметрами по умолчанию.
xgb_model = xgb.XGBClassifier()
xgb_model.fit(x_train, y_train)
xgb_model.score(x_test,y_test)
Поскольку размеры моих данных высоки, модель тренировалась в течение 2,5 часов и дала точность 92%. После некоторого исследования я увидел, что преобразование данных в DMatrix и обучение модели сократят время обучения, что я и сделал ниже.
from sklearn import preprocessing
encoder = preprocessing.LabelEncoder()
y_train_tr = encoder.fit_transform(y_train)
y_test_tr = encoder.fit_transform(y_test)
dtrain = xgb.DMatrix(x_train, label = y_train_tr)
dtest = xgb.DMatrix(x_test, y_test_tr)
params = {‘objective’ =‘multi:softmax’, ‘num_class’: 150}
xgb_model_dm = xgb.train(params, dtrain)
Как и ожидалось, эта модель тренировалась 11 минут, но моя точность составила 1,7%, что ужасно. Может кто-нибудь сказать мне, что на самом деле здесь происходит, почему моя точность так низка.