gpt4 book ai didi

python - LightGBM: ValueError: 具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()

转载 作者:太空狗 更新时间:2023-10-30 01:11:23 26 4
gpt4 key购买 nike

我正在运行具有分类特征的 lightgbm:

X_train, X_test, y_train, y_test = train_test_split(train_X, train_y, test_size=0.3)

train_data = lgb.Dataset(X_train, label=y_train, feature_name=X_train.columns,
categorical_feature=cat_features)

test_data = lgb.Dataset(X_test, label=y_train, reference=train_data)

param = {'num_trees': 4000, 'objective':'binary', 'metric': 'auc'}
bst = lgb.train(param, train_data, valid_sets=[test_data], early_stopping_rounds=100)

结果是错误:

if self.handle is not None and feature_name is not None and feature_name != 'auto':

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我检查了 stackoverflow 上的其他类似错误,主要与 numpy 相关,然后我检查了文档并尝试用 [0, 2, 5, ...](我原来是分类特征的列名),还是一样的错误。

我也尝试用列索引替换 label,仍然出错。

有人可以帮忙吗?提前致谢。

最佳答案

我认为,您传递 feature_name 的方式存在问题。构造函数需要一个列表,然后将它传递给 pandas.core.indexes.base.Index。问题是在这样的对象上 feature_name != 'auto' 错误提到的 if 语句中的条件是按元素执行的。因此 or 尝试连接 boolnumpy.ndarray

一个简单的解决方案是转换为列表 (feature_name=X_train.columns.tolist()) 或使用 feature_name='auto',这将从 pd.DataFrame 内部提取名称

关于python - LightGBM: ValueError: 具有多个元素的数组的真值不明确。使用 a.any() 或 a.all(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50982269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com