[PYTHON] [Ver1.3.1 Update] Ich habe DataLiner erstellt, eine Datenvorverarbeitungsbibliothek für maschinelles Lernen.

Einführung

Ich habe DataLiner erstellt, eine Datenvorverarbeitungsbibliothek für maschinelles Lernen.

Bei der Durchführung der Modellierung des maschinellen Lernens wird die im Teil Datenverarbeitung / Merkmalsmengenentwicklung verwendete Verarbeitung als Vorverarbeitungsliste zusammengefasst. Da es dem Scikit-Learn-Transformator entspricht, kann es von selbst fit_transformiert oder in die Pipeline gegossen werden. Da es Funktionen und Vorverarbeitung gibt, die noch nicht vollständig gepackt sind, werden wir sie in Zukunft regelmäßig aktualisieren. Es wäre jedoch ermutigend, wenn Sie uns andere Fehlerberichte, FIX, neue Funktionen, neue Pull-Anforderungen für die Vorverarbeitung usw. geben könnten.

GitHub: https://github.com/shallowdf20/dataliner PyPI: https://pypi.org/project/dataliner/ Document: https://shallowdf20.github.io/dataliner/preprocessing.html

Installation

Mit pip installieren. Wenn Sie eine Python-Umgebung mit Anaconda erstellen, versuchen Sie, den folgenden Code mit Anaconda Prompt auszuführen.

! pip install -U dataliner

Datenaufbereitung

Nehmen wir als Beispiel die Datensätze der Titanic, die jeder liebt. Beachten Sie, dass X pandas.DataFrame und y pandas.Series sein muss und ein Fehler ausgegeben wird, wenn die Datentypen unterschiedlich sind. Bereiten Sie nun die zu verarbeitenden Daten vor.

import pandas as pd
import dataliner as dl

df = pd.read_csv('train.csv')
target_col = 'Survived'
X = df.drop(target_col, axis=1)
y = df[target_col]

Vertraute Daten wie diese werden in X gespeichert. image.png

Wie benutzt man

Dann werde ich es sofort verwenden. Versuchen Sie zunächst, Drop High Cardinality zu verwenden, wodurch Features mit zu vielen Kategorien automatisch gelöscht werden.

dhc = dl.DropHighCardinality()
dhc.fit_transform(X)

image.png Sie können sehen, dass Funktionen mit einer großen Anzahl von Kategorien wie Name und Ticket gelöscht wurden. Abgesehen davon denke ich, dass im Fall der Titanic Informationen aus diesen Spalten verdreht werden, um die Genauigkeit zu verbessern.

Versuchen wir als nächstes die bekannte Zielcodierung. Es ist eine Version, die mit dem Durchschnitt von y als Vorwahrscheinlichkeit geglättet wird.

tme = dl.TargetMeanEncoding()
tme.fit_transform(X, y)

image.png Es erkannte automatisch die Spalten der kategorialen Variablen und codierte jede Kategorie unter Verwendung der Zielvariablen.

Ich denke auch, dass viele Datenwissenschaftler Pipeline aus Effizienzgründen nutzen. Natürlich kann jede DataLiner-Klasse auf die gleiche Weise verwendet werden.

from sklearn.pipeline import make_pipeline

process = make_pipeline(
    dl.DropNoVariance(),
    dl.DropHighCardinality(),
    dl.BinarizeNaN(),
    dl.ImputeNaN(),
    dl.OneHotEncoding(),
    dl.DropHighCorrelation(),
    dl.StandardScaling(),
    dl.DropLowAUC(),
)

process.fit_transform(X, y)

Infolge verschiedener Verarbeitungen wurde es so. image.png

In Titanic gibt es Daten namens test.csv, die im Voraus zur Auswertung bereitgestellt werden. Lesen Sie sie also und wenden Sie denselben Prozess an.

X_test = pd.read_csv('test.csv')
process.transform(X_test)

image.png

Das ist es.

Was ist enthalten

Im Moment ist es wie folgt. Wir möchten die Funktionen und Prozesse in zukünftigen Updates erweitern.

** 5/3 Nachschrift: ** Ich habe für jede Klasse einen Einführungsartikel geschrieben. Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Drop) zu verarbeiten Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Encoding) zu verarbeiten Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Konvertierung) zu verarbeiten Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Anhängen) zu verarbeiten

** BinarizeNaN ** - Suchen Sie eine Spalte mit fehlenden Werten und erstellen Sie eine neue Funktion, die Sie darüber informiert, ob die Spalte fehlte ** ClipData ** - Trennen Sie numerische Daten mit dem q-Perzentil und ersetzen Sie Werte über und unter der Obergrenze durch Ober- und Untergrenze. ** CountRowNaN ** - Erstellt den Gesamtwert fehlender Werte in Zeilenrichtung der einzelnen Daten als neue Feature-Menge. ** DropColumns ** - Löscht angegebene Spalten ** DropHighCardinality ** - Löschen Sie Spalten mit einer großen Anzahl von Kategorien ** DropHighCorrelation ** - Entfernt Features, deren Pearson-Korrelationskoeffizient den Schwellenwert überschreitet. Beim Löschen bleiben Features übrig, die stärker mit der Zielvariablen korrelieren. ** DropLowAUC ** - Für alle Features wird für jedes Feature eine logistische Regression mit y als Zielvariable durchgeführt, und Features, deren AUC unter dem Schwellenwert liegt, werden gelöscht. ** DropNoVariance ** - Löscht Funktionen, die nur einen Datentyp enthalten. ** GroupRareCategory ** - Gruppiert die weniger häufig vorkommenden Kategorien in der Kategoriespalte. ** ImputeNaN ** - Ergänzt fehlende Werte. Standardmäßig werden numerische Daten durch Durchschnittswerte und kategoriale Variablen durch die häufigsten Werte ergänzt. ** OneHotEncoding ** - Machen Sie kategoriale Variablen Dummy. ** TargetMeanEncoding ** - Ersetzt jede Kategorie von kategorialen Variablen durch einen geglätteten Mittelwert der Zielvariablen. ** StandardScaling ** - Konvertiert numerische Daten so, dass sie einen Durchschnitt von 0 und eine Verteilung von 1 haben. ** MinMaxScaling ** - Skaliert numerische Daten von 0 auf 1 ** CountEncoding ** - Ersetzt Kategoriewerte durch die Anzahl der Vorkommen ** RankedCountEncoding ** --Erstellen Sie ein Ranking basierend auf der Anzahl der Vorkommen des Kategoriewerts und ersetzen Sie es durch dieses Ranking. Dies ist effektiv, wenn mehrere Kategorien gleich oft angezeigt werden. ** FrequencyEncoding ** - Ersetzt Kategoriewerte nach Häufigkeit des Auftretens. Die Ranking-Version ist mit RankedCountEncoding identisch, daher ist sie nicht verfügbar. ** RankedTargetMeanEncoding ** - Dies ist eine Version, die ein Ranking erstellt, indem die Zielvariablen für jeden Kategoriewert gemittelt und durch dieses Ranking ersetzt werden. ** AppendAnomalyScore ** - Fügt eine Ausreißer-Punktzahl aus Isolation Forest als Feature-Menge hinzu ** AppendCluster ** - Führen Sie KMeans durch und fügen Sie den resultierenden Cluster als Feature-Menge hinzu. Datenskalierung empfohlen ** AppendClusterDistance ** - Führen Sie KMeans durch und fügen Sie den resultierenden Abstand zu jedem Cluster als Feature-Menge hinzu. Datenskalierung empfohlen ** AppendPrincipalComponent ** - Führen Sie eine Hauptkomponentenanalyse durch und fügen Sie die Hauptkomponente als Feature-Menge hinzu. Datenskalierung empfohlen ** AppendArithmeticFeatures ** - Führt vier Regeln für die in den Daten enthaltenen Features aus und fügt ein neues Feature mit einem höheren Bewertungsindex als die in der Berechnung verwendeten Features hinzu. (ver1.2.0) ** RankedEvaluationMetricEncoding ** - Nachdem Sie jede Kategorie zu einer Dummy-Variablen gemacht haben, führen Sie mit jeder Kategoriespalte und Zielvariablen eine logistische Regression durch. Erstellen Sie ein Ranking mit der resultierenden Metrik (standardmäßig AUC) und codieren Sie die ursprüngliche Kategorie mit diesem Ranking. (ver1.2.0) ** AppendClassificationModel ** - Trainiert den Klassifikator für die Eingabe und fügt die Bezeichnung oder Bewertung des Vorhersageergebnisses als Merkmalsgröße hinzu. (ver1.2.0) ** AppendEncoder ** - Fügt das Verarbeitungsergebnis jedes in DataLiner enthaltenen Encoders als Feature-Menge hinzu, anstatt es zu ersetzen. (ver1.2.0) ** AppendClusterTargetMean ** - Fügt die durchschnittliche Zielvariable in jedem Cluster nach dem Clustering als Feature-Menge hinzu. (ver1.2.0) ** PermutationImportanceTest ** - Die Auswahl der Funktionsmenge wird unter dem Gesichtspunkt durchgeführt, um wie viel sich der Bewertungsindex des Modellvorhersageergebnisses verschlechtert, wenn die Daten einer bestimmten Merkmalsmenge zufällig gemischt werden oder nicht. (ver1.2.0) ** UnionAppend ** --DataLiners Append 〇〇 -Klasse wird parallel statt seriell verarbeitet, und die Merkmale des Ausgabeergebnisses werden kombiniert und zu den ursprünglichen Merkmalen hinzugefügt. Klassen müssen in einer Liste angegeben werden. (ver1.3.1) ** load_titanic ** --Lädt titanische Daten. (ver1.3.1)

schließlich

Ich habe die Prozesse zusammengefasst, die ich viele Male wiederholt habe, aber vielleicht haben andere Menschen ähnliche Bedürfnisse? Ich habe es öffentlich gemacht. Von den unzähligen Vorverarbeitungen hoffe ich, dass die wichtigsten eine zusammenhängende Bibliothek sein werden.

Wir warten wieder auf Fehlerberichte, FIXes, neue Funktionen und neue Pull-Anforderungen für die Verarbeitung! !!

Recommended Posts

[Ver1.3.1 Update] Ich habe DataLiner erstellt, eine Datenvorverarbeitungsbibliothek für maschinelles Lernen.
[Python] Ich habe einen Klassifikator für Iris erstellt [Maschinelles Lernen]
Ich habe eine Bibliothek für versicherungsmathematische Versicherungen erstellt
Ich habe mit der maschinellen Vorverarbeitung von Python Data begonnen
xgboost: Effektives Modell für maschinelles Lernen für Tabellendaten
Datensatz für maschinelles Lernen
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 2)
Die Verwendung von icrawler zum Sammeln von Daten zum maschinellen Lernen wurde vereinfacht
Ich habe versucht, Tensorboard zu verwenden, ein Visualisierungstool für maschinelles Lernen
Ich habe ein Lernkit für word2vec / doc2vec / GloVe / fastText erstellt
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 1)
Ich habe eine C ++ - Lernseite erstellt
<Für Anfänger> Python-Bibliothek <Für maschinelles Lernen>
Vorverarbeitung beim maschinellen Lernen 2 Datenerfassung
Erstellt ein Tool, mit dem Sie bequem Parameter für Modelle des maschinellen Lernens festlegen können
Vorverarbeitung beim maschinellen Lernen 4 Datenkonvertierung
Ich habe eine Python-Wrapper-Bibliothek für die Docomo-Bilderkennungs-API erstellt.
Ich habe ein Dash-Docset für Holoviews erstellt
Python: Vorverarbeitung beim maschinellen Lernen: Datenerfassung
Python: Vorverarbeitung beim maschinellen Lernen: Datenkonvertierung
Vorverarbeitung beim maschinellen Lernen 1 Datenanalyseprozess
Erstellen einer Entwicklungsumgebung für maschinelles Lernen
Ich habe eine Python-Wörterbuchdatei für Neocomplete erstellt
Ich habe einen Ersatz2-Algorithmus für uWSGI billiger gemacht
[Python] Datenanalyse, maschinelles Lernen (Kaggle) -Datenvorverarbeitung-
Ich habe einen Downloader für wortverteilte Ausdrücke erstellt
Ich habe versucht, das Bild zu verarbeiten und zu transformieren und die Daten für maschinelles Lernen zu erweitern
Wir haben ein Peeping-Prevention-Produkt für die Telearbeit entwickelt.
Geschichte rund um die Datenanalyse durch maschinelles Lernen
Ich habe den Deep Learning Framework Chainer installiert
Lassen Sie uns Chat-Benutzerverwaltungstool gemacht
Ich habe eine Bibliothek erstellt, um japanische Sätze schön zu brechen
Ich habe mit Tkinter ein Fenster für die Protokollausgabe erstellt
Informationen zur Datenvorverarbeitung von Systemen, die maschinelles Lernen verwenden
Ich habe ein Reinigungstool für Google Container Registry erstellt
Ich habe eine VM erstellt, auf der OpenCV für Python ausgeführt wird
Installation von TensorFlow, einer Bibliothek für maschinelles Lernen von Google
Ich habe eine Python-Bibliothek erstellt, die einen rollierenden Rang hat
Ich habe ein Tool zur Erzeugung sich wiederholender Textdaten "rpttxt" erstellt.
Konstruktionsnotiz für eine maschinelle Lernumgebung von Python
〇✕ Ich habe ein Spiel gemacht
Bibliothek für maschinelles Lernen dlib
Bibliothek für maschinelles Lernen Shogun
Da ImageDataGenerator nicht mehr verwendet werden kann, eine Geschichte zum Erstellen einer Datenerweiterungsklasse für Tensorflow> = 2.0
Ich habe die automatische maschinelle Lernbibliothek auto-sklearn auf centos7 installiert
[VSCode] Ich habe ein Benutzer-Snippet für Python-Druck-F-String erstellt
Vorverarbeitung beim maschinellen Lernen 3 Fehlende Wert- / Ausreißer- / Ungleichgewichtsdaten
Ich habe einen Ressourcenmonitor für Raspberry Pi mit einer Tabelle erstellt
Ich habe versucht, eine Gesichtsdiagnose-KI für professionelle Golferinnen zu erstellen ③
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Anhängen) zu verarbeiten.
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Encoding) zu verarbeiten.
Erstellen Sie eine PyData-Umgebung für eine Lernsitzung zum maschinellen Lernen (Januar 2017).
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner zu verarbeiten (Konvertierung).
Pipeline-Vorlage für DataLiner vorverarbeiten
Erstellen Sie eine maschinelle Lernumgebung
Ich habe einen Python-Text gemacht
Befehl für FizzBuzz erstellt
Ich habe einen Zwietrachtbot gemacht
Ich habe versucht, die Extreme-Lernmaschine zu implementieren
Eine Geschichte, die mit der Installation der maschinellen Lernbibliothek JAX zusammenhängt