Lightgbm 无法从 Dataset get_field 方法访问数据
Lightgbm can't access data from Dataset get_field method
我有一个简单的 lgbm 数据集:
import lightgbm as lgbm
dataset = lgbm.Dataset(data=X, label=y, feature_name=X.columns.tolist())
其中 X 是一个 pandas df,而 y 是一个 pandas 系列。我想在我的自定义 objective 函数中访问 X 的特定列。但是当我尝试时:
data = dataset.get_field('data')
我收到此错误消息:
Traceback (most recent call last):
File "<ipython-input-71-34d27860b9e3>", line 1, in <module>
data = dataset.get_field('data')
File "/Users/***/anaconda3/envs/py3k/lib/python3.6/site-packages/lightgbm/basic.py", line 1007, in get_field
ctypes.byref(out_type)))
File "/Users/***/anaconda3/envs/py3k/lib/python3.6/site-packages/lightgbm/basic.py", line 48, in _safe_call
raise LightGBMError(_LIB.LGBM_GetLastError())
LightGBMError: b'Field not found'
虽然这很有效:
y = dataset.get_field('label')
谢谢!
这似乎是不可能的。
data
似乎是数据集的核心,而 lgb.Dataset
构造函数参数的其余部分作为附加功能处理。除了可以在 _lazy_init
function. Filed setting in C back-end is handled by SetXXXField
functions as handled by the LGBM_DatasetSetField function 中跟踪的 lgb.Dataset.set_field
函数之外,您可以看到所有这些数据。您会看到这些调用不会出现在 c_api.cpp
中的其他地方
我有一个简单的 lgbm 数据集:
import lightgbm as lgbm
dataset = lgbm.Dataset(data=X, label=y, feature_name=X.columns.tolist())
其中 X 是一个 pandas df,而 y 是一个 pandas 系列。我想在我的自定义 objective 函数中访问 X 的特定列。但是当我尝试时:
data = dataset.get_field('data')
我收到此错误消息:
Traceback (most recent call last):
File "<ipython-input-71-34d27860b9e3>", line 1, in <module>
data = dataset.get_field('data')
File "/Users/***/anaconda3/envs/py3k/lib/python3.6/site-packages/lightgbm/basic.py", line 1007, in get_field
ctypes.byref(out_type)))
File "/Users/***/anaconda3/envs/py3k/lib/python3.6/site-packages/lightgbm/basic.py", line 48, in _safe_call
raise LightGBMError(_LIB.LGBM_GetLastError())
LightGBMError: b'Field not found'
虽然这很有效:
y = dataset.get_field('label')
谢谢!
这似乎是不可能的。
data
似乎是数据集的核心,而 lgb.Dataset
构造函数参数的其余部分作为附加功能处理。除了可以在 _lazy_init
function. Filed setting in C back-end is handled by SetXXXField
functions as handled by the LGBM_DatasetSetField function 中跟踪的 lgb.Dataset.set_field
函数之外,您可以看到所有这些数据。您会看到这些调用不会出现在 c_api.cpp