Déséquilibre dans scikit-learn

j'utilise scikit-learn dans mon programme Python afin d'effectuer certaines opérations d'apprentissage automatique. Le problème est que mon ensemble de données a de graves problèmes de déséquilibre.

quelqu'un connaît-il une solution pour le déséquilibre dans scikit-learn ou en python en général? À Java, il y a le SMOTE mechanizm. Est-il quelque chose de parallèle en python?

25
demandé sur Maoritzio 2013-02-25 15:23:09
la source

4 ответов

SMOTE n'est pas un builtin dans scikit-learn, mais il y a néanmoins des implémentations disponibles en ligne.

Ici, par exemple.

5
répondu Junuxx 2013-02-26 01:26:44
la source

Il y a un nouveau ici

https://github.com/scikit-learn-contrib/imbalanced-learn

il contient de nombreux algorithmes dans les catégories suivantes, y compris SMOTE

  • Sous-échantillonnage de la majorité de la classe(es).
  • suréchantillonnage de la classe minoritaire.
  • combinaison d'un suréchantillonnage et d'un souséchantillonnage.
  • créer des ensembles équilibrés.
62
répondu nos 2016-08-05 05:35:35
la source

dans Scikit apprendre il y a quelques techniques de correction de déséquilibre, qui varient selon l'algorithme d'apprentissage que vous utilisez.

l'un d'entre eux, comme Mvc ou régression logistique, avoir le paramètre class_weight. Si vous instanciez un SVC avec ce paramètre sur 'auto', il pondérera chaque exemple de classe proportionnellement à l'inverse de sa fréquence.

malheureusement, il n'y a pas d'outil préprocesseur avec ceci but.

25
répondu Lucas Ribeiro 2016-08-04 11:29:47
la source

j'ai trouvé ici une autre bibliothèque qui implémente le sous-échantillonnage et aussi plusieurs techniques de suréchantillonnage incluant plusieurs implémentations SMOTE et une autre qui utilise SVM:

https://github.com/fmfn/UnbalancedDataset

14
répondu burgersmoke 2014-11-17 22:10:47
la source

Autres questions sur