如何解决LightGBM不接受我的数据的dtypes
我正尝试使用LGBMClassifier,由于某种原因,他不接受我的数据类型(我接受了所有功能的测试,所以我不接受。
当我们查看数据时,我们可以清楚地看到所有dtypes都是category,float或int(pd.DataFrame.info())
dtypes: category(275),float64(115),int64(9)
当我最终尝试训练LGBMClassifier时,出现以下错误:
ValueError: Series.dtypes must be int,float or bool
有人知道错在哪里吗?
解决方法
具有数据类型类别的功能在LGBM中单独处理。在创建用于训练的数据集时,可以对这些功能使用关键字categorical_feature。例如,这可能看起来像这样。 首先,您可以将类型为类别的所有功能存储在列表中
categoricals = ["feature1","feature2",...]
然后在为LGBM模型创建训练数据集时使用该列表:
lgb_train = lgb.dataset(train_X,train_y,categorical_feature=categoricals)
您可以对LGBM模型的测试数据集执行相同的操作:
lgb_test = lgb.Dataset(test_X,test_y,categorical_feature=categoricals)
,
我发现错误:
ValueError: Series.dtypes must be int,float or bool
在我的情况下,是指标签,因此是lgb.train()方法唯一传递的系列。我的标签具有lgb.train()无法处理的类型类别。我不得不将dtype从'category'更改为'int'。然后它起作用了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。