[PYTHON] LightGBM UserWarning: Utilisation de la fonction categorical_feature dans l'ensemble de données

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.

Conclusion

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?

3 méthodes

1. Définissez Dataset sur categorical_feature

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?

2. Définissez train () sur categorical_feature

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é.

3. Utilisez dtype = 'category'

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.

Recommended Posts

LightGBM UserWarning: Utilisation de la fonction categorical_feature dans l'ensemble de données
Utilisation de verticalenv dans les scripts shell
Traduit à l'aide de googletrans en Python
Utilisation du mode Python dans le traitement