Richten Sie die Anzahl der Stichproben zwischen Datenklassen für maschinelles Lernen mit Python aus

Es ist wünschenswert, die gleiche Anzahl von Stichproben zwischen Klassen für maschinelles Lernen zu haben. In der Realität werden jedoch häufig nicht nur solche sauberen Daten verwendet, sondern auch Daten mit unterschiedlicher Anzahl von Stichproben zwischen Klassen.

Beachten Sie diesmal, dass der Prozess zum Ausrichten der Anzahl der Stichproben zwischen den in den Etikettendaten beschriebenen Klassen in Python implementiert wurde.

Was du machen willst

Wenn das folgende Datenarray und seine Beschriftungsdaten vorhanden sind

#Datenarray
data = np.array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
#Beschriftungsarray
label = np.array([0, 0, 1, 1, 1, 2, 2, 2, 2, 2])

###############
#Datenverarbeitung...
###############

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

Code

Details finden Sie in den Kommentaren. Einfach ausgedrückt, machen wir Folgendes für eine Klasse, die mehr Stichproben als die Mindestanzahl von Stichproben enthält.

  1. Rufen Sie das Indexarray der Datenelemente dieser Klasse ab
  2. Verwenden Sie random.sample (), um die Indizes der Anzahl der Elemente abzurufen, die zufällig aus dem Indexarray gelöscht werden sollen.
  3. Löschen Sie die erfassten Indexdaten und die Beschriftung
import numpy as np
import random

#Datenarray
data = np.array(range(10,20))
print("data:", data)
#Beschriftungsarray
label = np.array([0, 0, 1, 1, 1, 2, 2, 2, 2, 2])
print("label:", label)
#Anzahl der Proben für alle Klassen
sample_nums = np.array([])


print("\n Berechnen Sie die Anzahl der Proben für jede Klasse")
for i in range(max(label)+1):
    #Anzahl der Proben für jede Klasse
    sample_num = np.sum(label == i)
    #Zum Array zur Verwaltung von Probennummern hinzugefügt
    sample_nums = np.append(sample_nums, sample_num)
print("sample_nums:", sample_nums)

#Mindestanzahl von Proben in allen Klassen
min_num = np.min(sample_nums)
print("min_num:", min_num)


print("\n Richten Sie die Anzahl der Proben für jede Klasse aus")
for i in range(len(sample_nums)):

    #Unterschied zwischen der Anzahl der Stichproben in der Zielklasse und der Mindestanzahl der Stichproben
    diff_num = int(sample_nums[i] - min_num)
    print("Klasse%d Anzahl der gelöschten Proben: %d (%0.2f%)" % (i, diff_num, (diff_num/sample_nums[i])*100))

    #Überspringen, wenn Sie nicht löschen müssen
    if diff_num == 0:
        continue

    #Index der zu löschenden Elemente
    #Da es sich um ein Taple handelt, konvertieren Sie es in eine Liste(Befindet sich am 0. Index)
    indexes = list(np.where(label == i)[0])
    print("\tindexes:", indexes)

    #Index der zu löschenden Daten
    del_indexes = random.sample(indexes, diff_num)
    print("\tdel_indexes:", del_indexes)

    #Aus Daten löschen
    data = np.delete(data, del_indexes)
    label = np.delete(label, del_indexes)


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

Ausführungsergebnis

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

Berechnen Sie die Anzahl der Proben für jede Klasse
sample_nums: [ 2.  3.  5.]
min_num: 2.0

Richten Sie die Anzahl der Proben für jede Klasse aus
Klasse 0 Anzahl gelöschter Proben: 0 (0.00%)
Klasse 1 Anzahl gelöschter Proben: 1 (33.33%)
	indexes: [2, 3, 4]
	del_indexes: [3]
Klasse 2 Anzahl gelöschter Proben: 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]

Am Ende

Wenn Sie mit Python vertraut sind, können Sie es effizienter gestalten.

Recommended Posts

Richten Sie die Anzahl der Stichproben zwischen Datenklassen für maschinelles Lernen mit Python aus
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
[Homologie] Zählen Sie mit Python die Anzahl der Löcher in den Daten
Vorhersage der Zielzeit eines vollständigen Marathons mit maschinellem Lernen - Visual: Visualisierung von Daten mit Python-
Verstärken Sie Bilder für maschinelles Lernen mit Python
[Maschinelles Lernen] Überprüfen Sie die Leistung des Klassifikators anhand handgeschriebener Zeichendaten
[Shakyo] Begegnung mit Python zum maschinellen Lernen
Python-Lernnotiz für maschinelles Lernen von Chainer bis zum Ende von Kapitel 2
Die Geschichte, dass die Lernkosten von Python niedrig sind
Berechnen Sie die Gesamtzahl der Kombinationen mit Python
Ich habe mit der maschinellen Vorverarbeitung von Python Data begonnen
Feature Engineering für maschinelles Lernen ab Teil 1 Google Colaboratory - Validierung und Diskriminierung von Zähldaten
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Prognostizieren Sie das Geschlecht von Twitter-Nutzern durch maschinelles Lernen
Aufzeichnung der ersten Herausforderung des maschinellen Lernens mit Keras
Datensatz für maschinelles Lernen
Maschinelles Lernen mit Python! Vorbereitung
Implementierung der Clustering-K-Form-Methode für Zeitreihendaten [Unüberwachtes Lernen mit Python Kapitel 13]
Beginnend mit maschinellem Python-Lernen
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Das Ergebnis des maschinellen Lernens von Java-Ingenieuren mit Python www
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 2)
Die Geschichte eines Rubinisten, der mit Python :: Dict-Daten mit Pycall kämpft
So erhöhen Sie die Anzahl der Datensatzbilder für maschinelles Lernen
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
<Für Anfänger> Python-Bibliothek <Für maschinelles Lernen>
"Scraping & maschinelles Lernen mit Python" Lernnotiz
Eine Geschichte, die mit der Installation der maschinellen Lernbibliothek JAX zusammenhängt
[Python Machine Learning] Empfehlung zur Verwendung von Spyder für Anfänger (Stand August 2020)
Erstellen einer Windows 7-Umgebung für eine Einführung in das maschinelle Lernen mit Python
Die Geschichte, einen Standardtreiber für db mit Python zu erstellen.
Seaborn-Grundlagen für Anfänger ① Aggregiertes Diagramm der Anzahl der Daten (Countplot)
Wie nutzt man maschinelles Lernen für die Arbeit? 01_ Den Zweck des maschinellen Lernens verstehen
Aggregieren Sie die täglichen Treffer pro Sekunde aus den Webserver-Protokollen in Python
Für Sie, die beim Lernen mit maschinellem Lernen plötzlich auf das Protokoll schauen ~ Muskeltraining mit LightGBM ~
[Beispiel für eine Python-Verbesserung] Python mit Codecademy lernen
Richten Sie die Größe der Farbleiste an der Matplotlib aus
REST-API eines mit Python erstellten Modells mit Watson Machine Learning (CP4D-Edition)
Unausgeglichenes Datenlernen mit maschinellem Lernen k-NN
Maschinelles Lernen mit Python (2) Einfache Regressionsanalyse
Notizen vom Anfang von Python 1 lernen
[Python] [Maschinelles Lernen] Anfänger ohne Wissen versuchen vorerst maschinelles Lernen
Warum Python für maschinelles Lernen ausgewählt wird
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden
[Beispiel für eine Python-Verbesserung] Was ist die empfohlene Lernseite für Python-Anfänger?
Python: Vorverarbeitung beim maschinellen Lernen: Datenerfassung
Quellcode für die Trennung von Tonquellen (Übungsreihe zum maschinellen Lernen), der mit Python gelernt wurde
[Python] Erste Datenanalyse / maschinelles Lernen (Kaggle)
Ein-Klick-Datenvorhersage für das Feld, realisiert durch vollautomatisches maschinelles Lernen
Lassen Sie uns die kostenlose "Einführung in Python für maschinelles Lernen" bis zum 27. April online stellen
Die dritte Nacht der Runde mit für
Holen Sie sich Artikelbesuche und Likes mit Qiita API + Python
Empfehlung von Altair! Datenvisualisierung mit Python
Datenanalyse beginnend mit Python (Datenvorverarbeitung - maschinelles Lernen)
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 13 Grundlagen des neuronalen Netzwerks
Eine Einführung in Python für maschinelles Lernen
Die zweite Nacht der Runde mit für
[Bildbuch zum maschinellen Lernen] Memo, wenn die Python-Übung am Ende des Buches ausgeführt wurde, während die Daten überprüft wurden