почему обучение lightgbm пошло не так, показывая «Неверный размер имени_функции»? - PullRequest
0 голосов
/ 11 октября 2019

Когда я обучил набор данных с помощью Lightgbm, процесс обучения прошел хорошо, как обычно, пока не появилась неожиданная ошибка: «LightGBMError: Неверный размер name_names». Что пошло не так?

env: Linux-Red Hat 4.8.5

память: 500G

python: python 3.6.5

lightgbm: lightgbm 2.2.3

Я использовал тот же способ и кодирование для обучения набора данных, и все прошло хорошо. За исключением этого времени набор данных довольно большой (необработанные данные почти 40 ГБ, почти 80 ГБ загружены в качестве фрейма данных 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)

И это все ещехорошо тренировался и встретил раннюю остановку на этот раз и показал Лучшую итерацию. Но затем сразу же появилась ошибка:

LightGBMError     Traceback (most recent call last)

…………

LightGBMError: Wrong size of feature_names

Затем я долго искал в сети. Я попытался не устанавливать имя_функции, категориальную_функцию в методе lightgbm.Dataset, как предлагали другие люди. Но бесполезно.

1 Ответ

0 голосов
/ 11 октября 2019

Я получил ответ, и я думаю, что это связано с проблемой китайских иероглифов. Я изменил имена всех функций на короткие имена некитайских символов, и проблема решена.

...