当我使用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。但是没有用。
答案 0 :(得分:0)
我得到了答案,我认为确实涉及汉字问题。 我将所有功能名称更改为简短的非中文字符名称,问题得以解决。