Lorsqu'il s'agit de variables catégorielles dans LightGBM, la bibliothèque standard de Gradient Boosting Decision Tree, qui est une norme en apprentissage automatique. La version LightGBM au moment de la rédaction est 2.3.0.
Il y a au moins trois façons de spécifier une variable de catégorie, mais au moment de l'écriture (3) dtype = 'category'
semble être bon. (1) (2) est également populaire, mais UserWarning apparaît; a-t-il été découragé récemment?
lgb_train = lgb.Dataset(X_train, y_train, categorical_feature=['A'])
«X_train» est «pandas.DataFrame» et «« A »est le nom de colonne de la variable de catégorie.
UserWarning apparaît:
python3.7/site-packages/lightgbm/basic.py:1243: UserWarning: Using categorical_feature in Dataset.
warnings.warn('Using categorical_feature in Dataset.')
Oui, j'ai spécifié categorical_feature dans Dataset, quoi?
gbm = lgb.train(params,
lgb_train,
categorical_feature=['A'],
)
UserWarning:
python3.7/site-packages/lightgbm/basic.py:1247: UserWarning: categorical_feature in Dataset is overridden.
New categorical_feature is ['A']
Eh bien, est-il déconseillé de définir ici une fonction_catégorique? Si vous définissez à la fois Dataset
dans (1) et` train () ʻin (2), UserWarning ne sera pas possible, mais je pense qu'il est inutilement dupliqué.
X_train['A'] = X_train['A'].astype('category')
Avec cela, UserWarning n'apparaît pas. Si vous définissez d'abord le type de catégorie, vous n'avez pas à spécifier la fonction categorical_feature deux fois dans le train et la validation comme dans le cas de (1). Le type de catégorie utilise un type entier raisonnablement petit en interne, il est donc également compatible avec la RAM. Cela semble bon.
On ne sait pas quand cet UserWarning a commencé à apparaître et s'il continuera. J'ai écrit cet article car je n'ai trouvé aucune information sur le net. Cela semble être un changement récent.