[PYTHON] Feature Engineering für maschinelles Lernen ab Teil 1 Google Colaboratory - Validierung und Diskriminierung von Zähldaten

Einführung

Dieser Artikel beschreibt die Binärisierung und Dezentralisierung, die als Vorverarbeitung für Zähldaten verwendet werden. Dieser Artikel basiert hauptsächlich auf "Feature Quantity Engineering für maschinelles Lernen". Bitte probieren Sie es aus, wenn Sie werden.

Der Inhalt dieses Artikels wird auf YouTube ausführlicher erläutert. Wenn Sie also interessiert sind, lesen Sie ihn bitte durch.

Was ist Binarisierung?

Wie der Name schon sagt, wird der Zielwert binär gemacht. Betrachten Sie beispielsweise das folgende Beispiel.

Beispiel
Ich möchte ein System erstellen, das Songs empfiehlt, die Benutzern empfohlen werden.
Ich möchte die Häufigkeit, mit der der Benutzer einen Titel gehört hat, als Feature-Menge verwenden. Wie soll ich die Daten formatieren?

Wenn ich dort die Daten eines bestimmten Benutzers herausgenommen habe, wird angenommen, dass die Daten wie folgt waren. Die erste Spalte ist die ID des Songs und die zweite Spalte gibt an, wie oft der Song gespielt wurde.

image.png

Das Ergebnis dieser Daten als Histogramm ist wie folgt.

image.png

Um nun ein dem Benutzer empfohlenes Lied empfehlen zu können, ist es wichtig zu wissen, ob der Benutzer an dem Lied interessiert war. Wenn das oben Gesagte jedoch unverändert bleibt, gibt ein Song, der 20 Mal angehört wurde, dem Modell die Information, dass es 20 Mal so gut gefällt wie ein Song, der nur einmal angehört wurde. Unter der Annahme, dass Sie interessiert sind, wenn Sie den Song einmal gespielt haben, werden die Songs, die mehr als einmal gespielt wurden, auf 1 und die Songs, die noch nie gespielt wurden, auf 0 binärisiert. Auf diese Weise konnte ich die Unterschiede zwischen den Songs beseitigen und sie in Songs, die mich interessierten, und Songs, die mich nicht interessierten, unterteilen.

Dies wird in einem Diagramm wie folgt dargestellt.

image.png

Der implementierte Code wird unten gezeigt.

binary.py


import math
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

##Feste Zufallszahl
np.random.seed(100)

##Generieren Sie Pseudodaten
data_array = []
for i in range(1, 1000):
  s = np.random.randint(0, i * 10, 10)
  data_array.extend(s)
data_array.extend(np.zeros(9000))
data = pd.DataFrame({'Listen Count': data_array})

data_binary = pd.DataFrame()
##Wahr durch Multiplikation mit 1,Falsch zu 1,In 0 konvertieren
data_binary['Listen Count'] = (data['Listen Count'] > 0) * 1

Was ist Verbreitung?

Unterscheidung durch feste Breite

Durch die Durchführung der Verbreitung können kontinuierliche Daten als dieselbe Gruppe behandelt werden

Es gibt einen Verdienst

Wenn beispielsweise das Alter einer Person als numerische Daten angegeben wird, werden alle Altersgruppen in Gruppen eingeteilt, indem 0 bis 10 als Gruppe 1, 10 bis 20 als Gruppe 2 ..... und 80 oder mehr als Gruppe 9 gruppiert werden. Wird möglich sein. Möglicherweise haben Sie das Gefühl, dass Sie die numerischen Daten unverändert lassen können. Wenn jedoch mehrere Personen bis zu 110 Jahre alt sind, werden sie von den großen Datenmengen erfasst und der Einfluss anderer Faktoren wird verringert. Kann gemacht werden. Durch die Gruppierung von 80- und 110-Jährigen als ältere Menschen in derselben Gruppe können solche Probleme jedoch gelöst werden.

Dieses Mal wird das Alter durch 10 Jahre geteilt, aber je nach Lebensstil können 0 bis 12 (von der Kindheit bis zur Grundschule) in Gruppen 1 und 12 bis 17 (Schüler der Mittel- und Oberstufe) in Gruppen 2 eingeteilt werden.

Wenn sich die Zahl über mehrere Ziffern erstreckt, kann sie auch durch eine Potenz von 10 gruppiert werden, z. B. 0-9, 10-99, 100-999 usw.

** Beim Teilen durch 10 **

discretization.py


import numpy as np

small_counts = np.random.randint(0, 100, 20)
print(small_counts)

print(np.floor_divide(small_counts, 10))

** Ausführungsergebnis **

image.png

image.png

** Bei Gruppierung mit einer Potenz von 10 **

discretization.py


import numpy as np

large_counts = []
for i in range(1, 100, 10):
  tmp = np.random.randint(0, i * 1000, 5)
  large_counts.extend(tmp)

print(np.array(large_counts))
print(np.floor(np.log10(large_counts)))

image.png

image.png

Diskriminierung nach Bruchteilen

Eine Unterscheidung mit einer festen Breite ist sehr praktisch, aber wenn es beispielsweise eine große Lücke in den Zähldaten gibt, gibt es mehrere Gruppen, die keine Daten enthalten. Verwenden Sie in solchen Fällen die Fraktion. Die Anzahl der Brüche teilt die Daten durch den Medianwert in zwei und die geteilten Daten durch den Medianwert weiter in zwei. Der Quadrant teilt also die Daten in vier und das Dezil teilt die Daten in zehn.

Zum Beispiel zeigt die folgende Tabelle, wie die Verteilungsdaten wie unten gezeigt ausreichen.

image.png

image.png

Wenn dieser Wert in der Grafik angezeigt wird, entspricht er der Abbildung unten, und Sie können sehen, dass die Breite so berechnet wird, dass die Datenmenge gleichmäßig ist.

image.png

Das implementierte Programm ist unten dargestellt.

** Bei Gruppierung nach Bruch (Grafik) **

quantile.py


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

##Feste Zufallszahl
np.random.seed(100)

data_array = []
for i in range(1, 1000):
  s = np.random.randint(0, i * 10, 10)
  data_array.extend(s)
data_array.extend(np.zeros(2000))
data = pd.DataFrame({'Listen Count': data_array})

deciles = data['Listen Count'].quantile([.1, .2, .3, .4, .5, .6, .7, .8, .9])

print(deciles)

plt.vlines(deciles, 0, 5500, "blue", linestyles='dashed') 

image.png

** Bei Gruppierung nach Bruch **

quantile.py


import numpy as np

large_counts = []
for i in range(1, 100, 10):
  tmp = np.random.randint(0, i * 1000, 5)
  large_counts.extend(tmp)
np.array(large_counts)

#In Quadranten konvertieren
print(pd.qcut(large_counts, 4, labels=False))

image.png

Schließlich

Ich plane, Rezensionen und Kommentarvideos von technischen Büchern auf YouTube zu veröffentlichen, wobei der Schwerpunkt auf maschinellem Lernen liegt. Wir stellen auch Unternehmen vor, die Sie kennen sollten, wenn Sie in die IT gehen. Bitte abonnieren Sie den Kanal und geben Sie uns eine hohe Bewertung, da dies Sie motivieren wird, Youtube und Qiita zu aktualisieren.

YouTube: https://www.youtube.com/channel/UCywlrxt0nEdJGYtDBPW-peg Twitter: https://twitter.com/tatelabo

Recommended Posts

Feature Engineering für maschinelles Lernen ab Teil 1 Google Colaboratory - Validierung und Diskriminierung von Zähldaten
Feature Engineering für maschinelles Lernen Beginnend mit dem 4. Google Colaboratory - Interacting Features
Feature Engineering für maschinelles Lernen ab Teil 3 Google Colaboratory-Scale
Richten Sie die Anzahl der Stichproben zwischen Datenklassen für maschinelles Lernen mit Python aus
[Maschinelles Lernen] Überprüfen Sie die Leistung des Klassifikators anhand handgeschriebener Zeichendaten
Ich habe versucht, das Bild zu verarbeiten und zu transformieren und die Daten für maschinelles Lernen zu erweitern
Vorhersage der Zielzeit eines vollständigen Marathons mit maschinellem Lernen - Visual: Visualisierung von Daten mit Python-
Der erste Schritt des maschinellen Lernens ~ Für diejenigen, die versuchen möchten, mit Python zu implementieren ~
[Python] Speichern Sie PDF von Google Colaboratory in Google Drive! -Lass uns Daten für maschinelles Lernen sammeln-
Prognostizieren Sie das Geschlecht von Twitter-Nutzern durch maschinelles Lernen
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
Aufzeichnung der ersten Herausforderung des maschinellen Lernens mit Keras
Lernen Sie mit "Google Colaboratory" ganz einfach 100 Sprachverarbeitungsklopfen 2020.
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 2)
[Homologie] Zählen Sie mit Python die Anzahl der Löcher in den Daten
[Python] Die größten Schwächen und Nachteile von Google Colaboratory [Für Anfänger]
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 1)
Datensatz für maschinelles Lernen
Für Sie, die beim Lernen mit maschinellem Lernen plötzlich auf das Protokoll schauen ~ Muskeltraining mit LightGBM ~
Eine Geschichte, die mit der Installation der maschinellen Lernbibliothek JAX zusammenhängt
Zusammenfassung der empfohlenen APIs für künstliche Intelligenz, maschinelles Lernen und KI
Wie nutzt man maschinelles Lernen für die Arbeit? 01_ Den Zweck des maschinellen Lernens verstehen
Bedeutung des maschinellen Lernens und des Mini-Batch-Lernens
OpenCV-Funktionserkennung mit Google Colaboratory
Eine Sammlung von Tipps zur Beschleunigung des Lernens und Denkens mit PyTorch
Ein-Klick-Datenvorhersage für das Feld, realisiert durch vollautomatisches maschinelles Lernen
[Zusammenfassung der Bücher und Online-Kurse für Programmierung und datenwissenschaftliches Lernen]
Grundlegendes maschinelles Lernverfahren: ③ Vergleichen und untersuchen Sie die Auswahlmethode für die Merkmalsmenge
Python-Lernnotiz für maschinelles Lernen von Chainer bis zum Ende von Kapitel 2
Ich habe die Geschwindigkeit der Listeneinschlussnotation für und während mit Python2.7 gemessen.
Python: Vorverarbeitung beim maschinellen Lernen: Umgang mit fehlenden / Ausreißern / unausgeglichenen Daten
Bestimmen Sie die Authentizität von veröffentlichten Artikeln durch maschinelles Lernen (Google Prediction API).
Einstellungen, die es einfacher machen, den Maßstab und die Beschriftung der Figur auch bei einem dunklen Thema mit Google Colaboratory zu sehen