CatBoostRegressor在尝试预测时显示错误(TypeError:无法将'b'

2024-08-22Python开发问题
27

本文介绍了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'转换为浮点)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

在xarray中按单个维度的多个坐标分组
groupby multiple coords along a single dimension in xarray(在xarray中按单个维度的多个坐标分组)...
2024-08-22 Python开发问题
15

Pandas中的GROUP BY AND SUM不丢失列
Group by and Sum in Pandas without losing columns(Pandas中的GROUP BY AND SUM不丢失列)...
2024-08-22 Python开发问题
17

pandas 有从特定日期开始的按月分组的方式吗?
Is there a way of group by month in Pandas starting at specific day number?( pandas 有从特定日期开始的按月分组的方式吗?)...
2024-08-22 Python开发问题
10

GROUP BY+新列+基于条件的前一行抓取值
Group by + New Column + Grab value former row based on conditionals(GROUP BY+新列+基于条件的前一行抓取值)...
2024-08-22 Python开发问题
18

PANDA中的Groupby算法和插值算法
Groupby and interpolate in Pandas(PANDA中的Groupby算法和插值算法)...
2024-08-22 Python开发问题
11

PANAS-基于列对行进行分组,并将NaN替换为非空值
Pandas - Group Rows based on a column and replace NaN with non-null values(PANAS-基于列对行进行分组,并将NaN替换为非空值)...
2024-08-22 Python开发问题
10