为什么lightgbm培训显示“ feature_names大小错误”而出错?

时间:2019-10-11 03:35:47

标签: python machine-learning lightgbm

当我使用Lightgbm训练数据集时,训练进度照常进行,直到出现意外错误:“ LightGBMError:feature_names的大小错误”。出了什么问题?

env:Linux-Red Hat 4.8.5

内存:500G

python:python 3.6.5

lightgbm:lightgbm 2.2.3

我一直使用相同的方法和编码来训练数据集,而且一切都进行得很顺利。除了这次,数据集很大(原始数据接近40G,将近80G作为Pandas数据帧加载),其功能名称在进行一次热编码后就包含了一些汉字。

import pandas as pd
import numpy as np
import lightgbm as lgb
from sklearn.model_selection import train_test_split

import dic_description as dic
……
List_cat1 = list(df_cat_dummy.columns)
df_l = df['LOST_TAG']
del df['LOST_TAG']
x_train, x_test, y_train, y_test = train_test_split(df, df_l, test_size=0.3, random_state=32)
del df

lgb_train = lgb.Dataset(x_train, y_train, free_raw_data=False, feature_name=list(x_train.columns),categorical_feature=List_cat1)
lgb_eval = lgb.Dataset(x_test, y_test, reference=lgb_train, free_raw_data=False, feature_name=list(x_test.columns),categorical_feature=List_cat1)
……
lgb1 = lgb.train(params,
             lgb_train,
             num_boost_round=1000,
             valid_sets=[lgb_eval, lgb_train],
             early_stopping_rounds=50)

它仍然训练得很好,这次遇到了早停,并显示了Best迭代。但是随后出现以下错误:

LightGBMError     Traceback (most recent call last)

…………

LightGBMError: Wrong size of feature_names

然后我在网上搜索了很长时间。我尝试不像其他人建议的那样在lightgbm.Dataset方法上设置feature_name,categorical_feature。但是没有用。

1 个答案:

答案 0 :(得分:0)

我得到了答案,我认为确实涉及汉字问题。 我将所有功能名称更改为简短的非中文字符名称,问题得以解决。