Alignez le nombre d'échantillons entre les classes de données pour l'apprentissage automatique avec Python

Pour l'apprentissage automatique, il est souhaitable d'avoir le même nombre d'échantillons entre les classes. Cependant, en réalité, non seulement de telles données propres, mais aussi des données avec différents nombres d'échantillons entre les classes sont souvent utilisées.

Cette fois, notez que le processus d'alignement du nombre d'échantillons entre les classes décrites dans les données d'étiquette a été implémenté en Python.

Chose que tu veux faire

Lorsqu'il y a le tableau de données suivant et ses données d'étiquette

#Tableau de données
data = np.array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
#Tableau d'étiquettes
label = np.array([0, 0, 1, 1, 1, 2, 2, 2, 2, 2])

###############
#Traitement de l'information...
###############

>>>data
[10 11 12 14 15 16]
>>>label
[0 0 1 1 2 2]

code

Les détails sont dans les commentaires. En termes simples, nous faisons ce qui suit pour une classe qui a plus d'échantillons que le minimum.

  1. Obtenez le tableau d'index des éléments de données de cette classe
  2. Utilisez random.sample () pour obtenir les index du nombre d'éléments à supprimer aléatoirement du tableau d'index.
  3. Supprimer les données d'index et l'étiquette acquises
import numpy as np
import random

#Tableau de données
data = np.array(range(10,20))
print("data:", data)
#Tableau d'étiquettes
label = np.array([0, 0, 1, 1, 1, 2, 2, 2, 2, 2])
print("label:", label)
#Nombre d'échantillons pour toutes les classes
sample_nums = np.array([])


print("\n Calculez le nombre d'échantillons pour chaque classe")
for i in range(max(label)+1):
    #Nombre d'échantillons pour chaque classe
    sample_num = np.sum(label == i)
    #Ajouté au tableau de gestion du nombre d'échantillons
    sample_nums = np.append(sample_nums, sample_num)
print("sample_nums:", sample_nums)

#Nombre minimum d'échantillons dans toutes les classes
min_num = np.min(sample_nums)
print("min_num:", min_num)


print("\n Alignez le nombre d'échantillons pour chaque classe")
for i in range(len(sample_nums)):

    #Différence entre le nombre d'échantillons dans la classe cible et le nombre minimum d'échantillons
    diff_num = int(sample_nums[i] - min_num)
    print("classe%d Nombre d'échantillons supprimés: %d (%0.2f%)" % (i, diff_num, (diff_num/sample_nums[i])*100))

    #Ignorer si vous n'avez pas besoin de supprimer
    if diff_num == 0:
        continue

    #Index des éléments à supprimer
    #Puisqu'il s'agit d'un taple, convertissez-le en liste(Situé au 0ème index)
    indexes = list(np.where(label == i)[0])
    print("\tindexes:", indexes)

    #Index des données à supprimer
    del_indexes = random.sample(indexes, diff_num)
    print("\tdel_indexes:", del_indexes)

    #Supprimer des données
    data = np.delete(data, del_indexes)
    label = np.delete(label, del_indexes)


print("\ndata:", data)
print("label:", label)

Résultat d'exécution

data: [10 11 12 13 14 15 16 17 18 19]
label: [0 0 1 1 1 2 2 2 2 2]

Calculez le nombre d'échantillons pour chaque classe
sample_nums: [ 2.  3.  5.]
min_num: 2.0

Alignez le nombre d'échantillons pour chaque classe
Classe 0 nombre d'échantillons supprimés: 0 (0.00%)
Nombre d'échantillons supprimés de classe 1: 1 (33.33%)
	indexes: [2, 3, 4]
	del_indexes: [3]
Nombre d'échantillons supprimés de classe 2: 3 (60.00%)
	indexes: [4, 5, 6, 7, 8]
	del_indexes: [7, 8, 6]

data: [10 11 12 14 15 16]
label: [0 0 1 1 2 2]

À la fin

Si vous êtes familier avec Python, vous pouvez le rendre plus efficace.

Recommended Posts

Alignez le nombre d'échantillons entre les classes de données pour l'apprentissage automatique avec Python
Résumé du flux de base de l'apprentissage automatique avec Python
[Homologie] Comptez le nombre de trous dans les données avec Python
Prédire le temps objectif d'un marathon complet avec l'apprentissage automatique-③: j'ai essayé de visualiser les données avec Python-
Amplifiez les images pour l'apprentissage automatique avec Python
[Apprentissage automatique] Vérifiez les performances du classificateur à l'aide de données de caractères manuscrites
[Shakyo] Rencontre avec Python pour l'apprentissage automatique
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer jusqu'à la fin du chapitre 2
L'histoire selon laquelle le coût d'apprentissage de Python est faible
Calculez le nombre total de combinaisons avec python
J'ai commencé l'apprentissage automatique avec le prétraitement des données Python
Ingénierie des fonctionnalités pour l'apprentissage automatique à partir de la partie 1 Google Colaboratory - Validation et discrimination des données de comptage
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Prédire le sexe des utilisateurs de Twitter grâce à l'apprentissage automatique
Bilan du premier défi du machine learning avec Keras
Ensemble de données pour l'apprentissage automatique
Apprentissage automatique avec Python! Préparation
Implémentation de la méthode de clustering k-shape pour les données de séries chronologiques [Apprentissage non supervisé avec python Chapitre 13]
Commencer avec l'apprentissage automatique Python
Essayez de gratter les données COVID-19 Tokyo avec Python
Le résultat de l'apprentissage automatique des ingénieurs Java avec Python www
Vérification des performances du prétraitement des données pour l'apprentissage automatique (données numériques) (partie 2)
L'histoire du rubyiste aux prises avec Python :: Dict data with pycall
Comment augmenter le nombre d'images de jeux de données d'apprentissage automatique
Apprentissage automatique par python (1) Classification générale
<Pour les débutants> bibliothèque python <Pour l'apprentissage automatique>
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Une histoire coincée avec l'installation de la bibliothèque de machine learning JAX
[Apprentissage automatique Python] Recommandation d'utilisation de Spyder pour les débutants (à partir d'août 2020)
Création d'un environnement Windows 7 pour une introduction à l'apprentissage automatique avec Python
L'histoire de la création d'un pilote standard pour db avec python.
Bases de Seaborn pour les débutants ① Graphique agrégé du nombre de données (Countplot)
Comment utiliser l'apprentissage automatique pour le travail? 01_ Comprendre l'objectif de l'apprentissage automatique
Agréger les appels quotidiens par seconde à partir des journaux du serveur Web en Python
Pour vous qui regardez soudainement le journal tout en apprenant avec l'apprentissage automatique ~ Entraînement musculaire avec LightGBM ~
[Exemple d'amélioration de Python] Apprentissage de Python avec Codecademy
Alignez la taille de la barre de couleurs avec matplotlib
API REST du modèle réalisé avec Python avec Watson Machine Learning (édition CP4D)
Sklearn de données déséquilibrées avec apprentissage automatique k-NN
Apprentissage automatique avec python (2) Analyse de régression simple
Notes d'apprentissage depuis le début de Python 1
[Python] [Apprentissage automatique] Les débutants sans aucune connaissance essaient l'apprentissage automatique pour le moment
Pourquoi Python est choisi pour l'apprentissage automatique
Essayez d'imaginer les données d'élévation du National Land Research Institute avec Python
[Exemple d'amélioration de Python] Quel est le site d'apprentissage recommandé pour les débutants en Python?
Python: prétraitement en machine learning: acquisition de données
Code source pour la séparation des sources sonores (série de pratiques d'apprentissage automatique) appris avec Python
[Python] Première analyse de données / apprentissage automatique (Kaggle)
Prédiction des données en un clic pour le champ réalisée par apprentissage automatique entièrement automatique
Prenons la version gratuite "Introduction à Python pour l'apprentissage automatique" en ligne jusqu'au 27/04
La troisième nuit de la boucle avec pour
Obtenez des visites d'articles et des likes avec l'API Qiita + Python
Recommandation d'Altair! Visualisation des données avec Python
Analyse de données à partir de python (pré-traitement des données-apprentissage automatique)
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 13 Bases du réseau neuronal
Une introduction à Python pour l'apprentissage automatique
La deuxième nuit de la boucle avec pour
[Livre d'images sur l'apprentissage automatique] Mémo lorsque l'exercice Python à la fin du livre a été effectué lors de la vérification des données