Getting error as DataFrame.dtypes for data must be int, float, bool or categorical

Viewed 3912

Full error in XGBOOST is

ValueError: DataFrame.dtypes for data must be int, float, bool or categorical.  When
                categorical type is supplied, DMatrix parameter
                `enable_categorical` must be set to `True`.Year

The data is

<class 'pandas.core.frame.DataFrame'>
Int64Index: 50327 entries, 0 to 50326
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         
 0   C_Id    50327 non-null  int8          
 1   Year    50327 non-null  datetime64[ns]
 2   value   50327 non-null  float64       
 3   R_Id    50327 non-null  int8          
dtypes: datetime64[ns](1), float64(1), int8(2)
memory usage: 2.3 MB

Then I did,

t_date = "2019-01-01 00:00:00"
X_train = data[data["Year"]<t_date].drop(["value"],axis=1)
Y_train = data[data["Year"]<t_date]["value"]
X_test = data[data["Year"]>=t_date].drop(["value"],axis=1)

`

model = XGBRegressor(
    max_depth = 8,n_estimators=1000,
    min_child_weight=300,colsample_bytree=0.8,
    subsample=0.8,eta=0.3,seed=42)

model.fit(X_train,Y_train,eval_metric="rmse",eval_set=[(X_train,Y_train)],
         verbose =True,early_stopping_rounds=10)

Where am I getting wrong, if you need anything pls ask Thanks for helping !

EDIT: I converted Year type to string and then to int

BUt the result is like this,

[461]   validation_0-rmse:8791.25293
[462]   validation_0-rmse:8791.08789
0 Answers
Related