python - LightGBM:ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
问题描述
我正在运行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)
原来的错误:
如果 self.handle 不是 None 并且 feature_name 不是 None 并且 feature_name != 'auto':
ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
我在stackoverflow上检查了其他类似的错误,主要与 相关numpy
,然后我检查了文档并尝试categorical_feature
用类似索引替换我的[0, 2, 5, ...]
(我原来是分类特征的列名),仍然是同样的错误。
我也尝试用label
列索引替换,仍然错误。
任何人都可以帮忙吗?提前致谢。
解决方案
我认为,您通过的方式存在问题feature_name
。构造函数需要一个列表,然后 oyu 传递它pandas.core.indexes.base.Index
。问题在于,feature_name != 'auto'
在错误提到的 if 语句中的此类对象条件下,会按元素进行操作。因此or
尝试加入 abool
和numpy.ndarray
。
一个简单的解决方案是转换为列表 ( )或feature_name=X_train.columns.tolist()
使用feature_name='auto'
pd.DataFrame
推荐阅读
- python - 使用循环添加字段(GIS Python)
- php - AJAX 向 PHP 函数发送 HTML 请求
- ms-access - 需要有关我的更新查询的建议
- java - 从 Firebase Android 读取值并更新它
- bash - 使用来自 API 的数据更新提交消息的 Git 钩子
- c# - 如何将我自己的 Iframe BotFramework (dot Net) 发布到 Azure?
- swift - 通过在函数调用中插入字符来调用 Swift 函数
- bash - 并行化调用多个文件并使用 bcp 的 bash 脚本
- javascript - 如何在 Javascript 中重新排序子标签
- angular - 等待 Promise 时未显示角忙光标