Python的XGBoost分类器无法进行“predict”:TypeError:数据类型不支持。

9

我有这样的数据集:

print(X_test.dtypes)
metric1                    int64
rank                     float64
device_type                 int8
NA_estimate              float64

当我尝试对这个数据集进行预测时,会出现以下错误:

y_test_pred_xgb = clf_xgb.predict(xgb.DMatrix(X_test))
TypeError: Not supported type for data.<class 'xgboost.core.DMatrix'>

我搜索了一会儿,但只发现了关于object变量数据类型引起问题的讨论。我的数据还有其他问题吗,还是问题出在其他地方?我已经查看了各种博客和Kaggle的代码,但没有找到解决方法。


1
源代码表明您的类型是正确的(https://github.com/dmlc/xgboost/blob/e7d17ec4f4a091bac58c1d241be3f4969400b874/python-package/xgboost/core.py#L220),但是也许尝试使用 as.type() 将 int8 更改为 int64?同时,请检查您的数字变量中是否只有数值。 - jared_mamrot
2个回答

2

我曾经遇到过同样的问题,通过使用 np.float32() 进行数据类型转换解决了这个问题:

model.predict(np.float32(X_test))

1
我遇到了同样的问题。你的clf_xgb模型对象是Scikit-Learn API的一种实现。DMatrix是XGBoost内部使用的数据结构。也许这导致了问题
你可以尝试以下方法:
clf_xgb.get_booster().predict(xgb.DMatrix(X_test))

在我的情况下,这个方法有效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接