Implementieren Sie die Normalisierung der Vorverarbeitung von Python-Trainingsdaten mit scicit-learn [fit_transform].

Die Vorverarbeitung von Trainingsdaten umfasst einen Prozess namens Normalisierung, der den tatsächlichen Datenbereich ändert. Für die Implementierung der Normalisierung bietet scikit-learn (im Folgenden als sklearn bezeichnet) eine Funktion namens fit_transform. Dieses Mal werden wir die Implementierung, die die Trainingsdaten und Validierungsdaten normalisiert, mit dem Beispielcode teilen.

sklearn Normalisierungsfunktion

Es gibt drei Haupttypen von Normalisierungsfunktionen, die von sklearn bereitgestellt werden, und es gibt zweistufige Prozesse.

  1. Parameterberechnung
  2. Konvertierung mit Parametern fit() Berechnen Sie die Standardabweichung und die Maximal- / Minimalwerte aus den Eingabedaten und speichern Sie die Parameter

transform() Konvertieren Sie Daten mithilfe von Parametern, die aus der Anpassungsfunktion berechnet wurden

fit_transform() Führen Sie den obigen Vorgang kontinuierlich aus

Warum gibt es drei Arten von Funktionen?

Wenn Sie bestimmte Daten normalisieren möchten, sollten Sie die Funktion fit_transorm verwenden, um die Parameter zu berechnen und gleichzeitig die Daten zu konvertieren. .. Bei der Konvertierung von Daten als Vorverarbeitung während des Trainings müssen jedoch dieselben Parameter (Ergebnisse der Anpassungsfunktion) für die Trainingsdaten und die Verifizierungsdaten verwendet werden. * Ein einfaches Beispiel wird mit dem Beispielcode angezeigt. Daher wird fit () bereitgestellt, das die Parameter für bestimmte Daten berechnet, und die Transformationsfunktion, die unter Verwendung der berechneten Parameter transformiert.

Normalisierungstyp

Es scheint, dass es 27 Typen gibt, die sich aus der Überprüfung mit der Referenz von sklearn ergeben. Ich habe nur einige Typen verwendet, aber wenn Sie interessiert sind, beziehen Sie sich bitte darauf. API Reference sklearn.preprocessing  scikit-learn 0.19.2 documentation

Häufig verwendete Konvertierungsmethoden -MinMaxScaler () # Definieren Sie maximale / minimale Datenwerte ・ Standardisierung von StandardScaler () #

Beispielcode

Unten finden Sie ein Beispiel für die Normalisierung mit sklearn. Der Inhalt des Prozesses wird in jeder Zeile kommentiert. Als ein Verfahren des Beispielcodes,

  1. Normalisierungsmethode, Testdatendefinition
  2. Transformieren Sie mit fit_transform
  3. Parameter speichern-> Laden
  4. Testdatendefinition
  5. Testdaten-Transformation mit Speicherparametern
  6. Datentransformation für Testdaten (fit_transform)

scaler_sample.py


#Wenn Sie nicht importiert haben, installieren Sie diese bitte jedes Mal.
from sklearn import preprocessing
import numpy as np
import pickle

#Definition der Normalisierungsmethode MinMaxScaler(0<=data<=1)
mmscaler = preprocessing.MinMaxScaler()

#Rohdatendefinition für das Training
train_raw = np.array(list(range(11)))
print (train_raw)   # [ 0  1  2  3  4  5  6  7  8  9 10]

#Fit mit Trainingsdaten_transform
train_transed = mmscaler.fit_transform(train_raw.reshape(-1,1))
#Anzeige des Conversion-Ergebnisses
#0 bis 10 Daten werden von 0 nach 1 konvertiert
print (train_transed.flatten()) # [0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ]

#Speichern Sie die Anpassungsparameter im Binärformat
#Normalerweise werden der Lerncode und der Verifizierungscode separat implementiert, sodass er als Methode zum Speichern der Parameter eingeführt wird.
pickle.dump(mmscaler, open('./scaler.sav', 'wb'))

#Unter der Annahme, dass das Obige in einer anderen Funktion implementiert ist, laden Sie den in den Trainingsdaten gespeicherten Anpassungsparameter(Binärdatei)
save_scaler = pickle.load(open('./scaler.sav', 'rb'))
#Überprüfen Sie die Parameterdetails
print(save_scaler,type(save_scaler))    # MinMaxScaler() <class 'sklearn.preprocessing._data.MinMaxScaler'>

#Testdatendefinition
test_raw = np.array(list(range(100)))
print (test_raw)
'''print (test_raw)
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
 96 97 98 99]
 '''

 #Konvertieren Sie mit gespeicherten Parametern(tranform)
save_scaler_transed = save_scaler.transform(test_raw.reshape(-1,1))
print (save_scaler_transed.flatten())
#Da das Gewicht der Trainingsdaten verwendet wird, liegt der Datenbereich zwischen 0 und 9..9 werden
'''print (save_scaler_transed.flatten())
[0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.  1.1 1.2 1.3 1.4 1.5 1.6 1.7
 1.8 1.9 2.  2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.  3.1 3.2 3.3 3.4 3.5
 3.6 3.7 3.8 3.9 4.  4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.  5.1 5.2 5.3
 5.4 5.5 5.6 5.7 5.8 5.9 6.  6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.  7.1
 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.  8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9
 9.  9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9]
'''

#Parameterberechnung anhand von Testdaten+Umwandlung(fit_tranform)
test_fit_transed = mmscaler.fit_transform(test_raw.reshape(-1,1))

#Da die Parameter aus den Testdaten berechnet werden, ändert sich der Datenbereich von 0 auf 1.
print (test_fit_transed.flatten())
'''print (test_fit_transed.flatten())
[0.         0.01010101 0.02020202 0.03030303 0.04040404 0.05050505
 0.06060606 0.07070707 0.08080808 0.09090909 0.1010101  0.11111111
 0.12121212 0.13131313 0.14141414 0.15151515 0.16161616 0.17171717
 0.18181818 0.19191919 0.2020202  0.21212121 0.22222222 0.23232323
 0.24242424 0.25252525 0.26262626 0.27272727 0.28282828 0.29292929
 0.3030303  0.31313131 0.32323232 0.33333333 0.34343434 0.35353535
 0.36363636 0.37373737 0.38383838 0.39393939 0.4040404  0.41414141
 0.42424242 0.43434343 0.44444444 0.45454545 0.46464646 0.47474747
 0.48484848 0.49494949 0.50505051 0.51515152 0.52525253 0.53535354
 0.54545455 0.55555556 0.56565657 0.57575758 0.58585859 0.5959596
 0.60606061 0.61616162 0.62626263 0.63636364 0.64646465 0.65656566
 0.66666667 0.67676768 0.68686869 0.6969697  0.70707071 0.71717172
 0.72727273 0.73737374 0.74747475 0.75757576 0.76767677 0.77777778
 0.78787879 0.7979798  0.80808081 0.81818182 0.82828283 0.83838384
 0.84848485 0.85858586 0.86868687 0.87878788 0.88888889 0.8989899
 0.90909091 0.91919192 0.92929293 0.93939394 0.94949495 0.95959596
 0.96969697 0.97979798 0.98989899 1.        ]
 '''

abschließend

Ich habe diesen Artikel als Memorandum über das gemacht, was ich über Normalisierung gelernt habe. Bevor ich es nachgeschlagen habe, habe ich den Unterschied zwischen fit_transform () und transform () überhaupt nicht bemerkt. .. Dies ist eine wichtige Konvertierung der Vorverarbeitung und wirkt sich auch auf die Genauigkeit der zu überprüfenden Daten aus. Wir hoffen, dass es keine Fälle gibt, in denen die Parameter versehentlich wiederverwendet werden. Beim Schreiben dieses Artikels habe ich mir die Weisheit meiner Vorgänger geliehen. Ich werde es zu einem späteren Zeitpunkt schreiben. Danke fürs Lesen. Wenn Sie LGTM mögen, bitte!

Recommended Posts

Implementieren Sie die Normalisierung der Vorverarbeitung von Python-Trainingsdaten mit scicit-learn [fit_transform].
Empfehlung von Altair! Datenvisualisierung mit Python
Ich habe mit der maschinellen Vorverarbeitung von Python Data begonnen
Datenanalyse mit Python 2
Vorverarbeitung von Präfekturdaten
Datenanalyse mit Python
Fordern Sie die Hauptkomponentenanalyse von Textdaten mit Python heraus
[Grundlagen der Datenwissenschaft] Sammeln von Daten aus RSS mit Python
Mit Python erstellte Beispieldaten
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Visualisieren Sie die Ergebnisse von Entscheidungsbäumen, die mit Python scikit-learn erstellt wurden
Neuronales Netzwerk mit Python (Scikit-Learn)
Holen Sie sich Youtube-Daten mit Python
Hinweise zum Umgang mit großen Datenmengen mit Python + Pandas
Anwendung von Python: Datenbereinigung Teil 3: Verwendung von OpenCV und Vorverarbeitung von Bilddaten
Befreien Sie sich mit Python und regulären Ausdrücken von schmutzigen Daten
Parallele Verarbeitung mit Parallel von Scikit-Learn
Python: Grundlagen der Verwendung von Scikit-Learn ①
[Homologie] Zählen Sie mit Python die Anzahl der Löcher in den Daten
[Python] Lineare Regression mit Scicit-Learn
Grundlegende Zusammenfassung der Datenoperationen mit Python Pandas - Erste Hälfte: Datenerstellung und -operationen
Lesen von JSON-Daten mit Python
Praktische Übung zur Datenanalyse mit Python ~ 2016 New Coder Survey Edition ~
Rastersuche von Hyperparametern mit Scikit-learn
Python: Zeitreihenanalyse: Vorverarbeitung von Zeitreihendaten
Implementieren Sie einfach Unterbefehle mit Python-Klick
[Python] Mit DataReader Wirtschaftsdaten abrufen
Erste Schritte mit Python Grundlagen von Python
Persönliche Notizen zur Vorverarbeitung von Python Pandas-Daten
Lebensspiel mit Python! (Conways Spiel des Lebens)
10 Funktionen von "Sprache mit Batterie" Python
Vorverarbeitungsvorlage für die Datenanalyse (Python)
Visualisieren Sie Ihre Daten ganz einfach mit Python Seaborn.
Implementierung der Dyxtra-Methode durch Python
Zeitreihenanalyse 3 Vorverarbeitung von Zeitreihendaten
Verarbeiten Sie Pubmed .xml-Daten mit Python
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 4.3. Datenvorverarbeitung
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
Implementieren Sie "Data Visualization Design # 2" mit matplotlib
Anwendung von Python: Datenbereinigung Teil 2: Datenbereinigung mit DataFrame
Grundlegendes Studium von OpenCV mit Python
CSV-Ausgabe von Pulsdaten mit Raspberry Pi (Analogeingang mit Python prüfen)
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden
Ich habe 0 Jahre Programmiererfahrung und fordere die Datenverarbeitung mit Python heraus
Zeichnen Sie die CSV von Zeitreihendaten mit einem Unixtime-Wert in Python (matplotlib).
Python: Vorverarbeitung beim maschinellen Lernen: Umgang mit fehlenden / Ausreißern / unausgeglichenen Daten
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Grundlagen der binärisierten Bildverarbeitung durch Python
Datenpipeline-Aufbau mit Python und Luigi
[Beispiel für eine Python-Verbesserung] Python mit Codecademy lernen
Empfangen Sie Textdaten von MySQL mit Python
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Verarbeiten Sie Pubmed .xml-Daten mit Python [Teil 2]
Führen Sie das Python-Skript mit TS-220 cron aus
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Generieren Sie japanische Testdaten mit Python faker