与.fit()相比,xgb.train的准确性较差

时间:2019-10-15 09:50:59

标签: python-3.x multiclass-classification xgbclassifier

我正在用我的数据构建一个带有xgboost的模型,在进行一次热编码后,它具有大约50,000行和大约550列。我的目标变量是具有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%,这非常糟糕。有人可以告诉我这里的实际情况为何我的准确性如此之差。

0 个答案:

没有答案