为什么lightgbm的“分类特性”不起作用?

2024-10-01 15:48:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用LightGBM来预测house的tradeMoney,但当我在LightGBMlgb.dataset中指定{}。
我得到data.dtypes如下:

type(train)
pandas.core.frame.DataFrame

train.dtypes
area                  float64
rentType               object
houseFloor             object
totalFloor              int64
houseToward            object
houseDecoration        object
region                 object
plate                  object
buildYear               int64
saleSecHouseNum         int64
subwayStationNum        int64
busStationNum           int64
interSchoolNum          int64
schoolNum               int64
privateSchoolNum        int64
hospitalNum             int64
drugStoreNum            int64

{cdi>如下所示:

^{pr2}$

但是即使我指定了categorical_features,它仍然会给出这样的错误消息。在

ValueError: DataFrame.dtypes for data must be int, float or bool. Did not expect the data types in fields rentType, houseFloor, houseToward, houseDecoration, region, plate

要求如下:

LightGBM version: 2.2.3
Pandas version: 0.24.2
Python version: 3.6.8
|Anaconda, Inc.| (default, Feb 21 2019, 18:30:04) [MSC v.1916 64 bit (AMD64)]

谁能帮帮我吗?在


Tags: dataframedataobjectversiontrainregionhouselightgbm
1条回答
网友
1楼 · 发布于 2024-10-01 15:48:39

问题是lightgbm只能处理category类型的特性,而不是objectHere提取所有可能的分类特征的列表。这些特征在代码中被编码成整数。但是objects没有发生任何变化,因此{}会抱怨,因为它发现并不是所有的特征都被转换成了数字。在

所以解决办法是

for c in categorical_feats:
    train[c] = train[c].astype('category')

在你的简历循环之前

相关问题 更多 >

    热门问题