user2205916
user2205916

Reputation: 3456

Python XGBoost classifier can't `predict`: `TypeError: Not supported type for data`

I have a dataset like so:

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

When I try to make predictions on this data set, I get the following error:

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

I searched for a bit but only found discussion of object variable data types causing issues. Is there something else wrong with my data or is the issue something else? I have looked at various blogs and Kaggle code without luck.

Upvotes: 9

Views: 5489

Answers (2)

CyberPlayerOne
CyberPlayerOne

Reputation: 3180

I had the same problem. Your clf_xgb model object is an implementation of Scikit-Learn API. DMatrix is an internal data structure that is used by XGBoost. Maybe this caused the problem.

You can try with:

clf_xgb.get_booster().predict(xgb.DMatrix(X_test))

In my case, this worked.

Upvotes: 2

Azzam Radman
Azzam Radman

Reputation: 53

I faced the same problem and solved it by casting the data type using np.float32():

model.predict(np.float32(X_test))

Upvotes: 2

Related Questions