xgBoost运行过程中出现的问题

在python上运行xgBoost创建模型、预测结果的时候,测试数据跑了一万多就出现了AttributeError: 'DMatrix' object has no attribute 'handle'的问题,在网上搜索了一波,大致有两个原因:

1.文件名与python的保留字、关键字重名

2.DMatrix里面的数据初始化有问题,我的问题主要出现在这里,代码如下:

xgbtrain = xgb.DMatrix(df_train[feature], df_train['label'])

DMatrix里面的数据df_train[feature]的类型不统一,而且我记得在源文件core.py中有提到过DMatrix的数据类型必须为float之类的,记不清了,于是我把df_train[feature]转换为numpy的array类型,再转换为float类型,代码如下:

for f in feature:
    if df_train[f].dtype == 'object':
        lbl = preprocessing.LabelEncoder()
        lbl.fit(list(df_train[f].values))
        df_train[f] = lbl.transform(list(df_train[f].values))
df_train[feature].fillna((-999), inplace=True)
df_train[feature] = np.array(df_train[feature])
df_train[feature] = df_train[feature].astype(float)

再次运行代码,问题解决了

但是我还有一个疑惑,为什么数据运行了一部分之后才出现bug呢?目测是跟xgBoost的model函数中early_stopping_rounds参数有关系,等我搞清楚了再来补充




你可能感兴趣的:(xgBoost运行过程中出现的问题)