CatBoostRegressor在尝试预测时显示错误(TypeError:无法将'b'转换为浮点) [英] CatBoostRegressor is showing an error when trying to predict (TypeError: Cannot convert 'b' to float)

查看:56
本文介绍了CatBoostRegressor在尝试预测时显示错误(TypeError:无法将'b'转换为浮点)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

那么,事情是这样的.我有一个问题和这个人问的非常接近here。我在做一个相当结实的模型。我实际上已经运行过此代码几次,但是现在我面临这个问题。

这是我的数据集(由于公司政策,我不能分享任何真实数据):

category        brand        city        day_of_week        price
mobile_phone    LG           Busan       3                  100   
mobile_phone    Apple        Seul        4                  120
mobile_phone    LG           Changwon    5                  110
tv              LG           Busan       2                  120
tv              Samsung      Suwon       3                  150
tv              Samsung      Ulsan       3                  200
.
.
.

是关于修理电子产品的价格问题。问题是,我在运行一个回归,其中价格是目标,睡觉是功能。

所以这正是我运行的内容:

rf = CatBoostRegressor(
cat_features = ["category",
"brand",
"city",
"day_of_week"],
eval_metric="RMSE",
learning_rate=0.13,
iterations=500,
)

rf.fit(X_train, y_train, plot=True, eval_set=(X_test, y_test))
pred_rf = rf.predict(X_test)

这是Python显示的消息:

TypeError: Cannot convert 'b'mobile_phone'' to float

为什么?CatBoost应该在没有其他东西的情况下就转换了。这很疯狂,因为它在10分钟前对另一个非常相似的数据集起作用。

另外,模型实际运行:

bestTest = 0.3275576877
bestIteration = 144

Shrink model to first 145 iterations.

那么,你知道我做错了什么吗?

提前谢谢您。再次抱歉,我无法共享数据集。

推荐答案

我同意查看克里斯的评论。我刚才出现了这个错误,这是因为我没有正确指定我的cat_features参数。乍一看,您似乎猜对了,但我要做的是使用以下命令提取所有对象功能:

# Get all object variables from X_train
cat_vars = [var for var in X_train.columns if X_train[var].dtype == "O"]

# Initialize model with cat_vars
rf = CatBoostRegressor(
                   cat_features = cat_vars,
                   eval_metric="RMSE",
                   learning_rate=0.13,
                   iterations=500,
                   )
# Fit & Predict
rf.fit(X_train, y_train, plot=True, eval_set=(X_test, y_test))
pred_rf = rf.predict(X_test)
这样,如果我的数据帧被奇怪地读入(pd.read_csv)并转换了一些dtype,这通常是floatint,它仍然可以处理。 警告:在prod中,您可能希望静态了解cat_var,并在某个配置文件中定义它们,而不是运行此命令。这仅供catBoost上的dev使用。

这篇关于CatBoostRegressor在尝试预测时显示错误(TypeError:无法将'b'转换为浮点)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆