[PYTHON] Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Drop) zu verarbeiten.

Einführung

Ich möchte verschiedene DataLiner ausprobieren, eine Bibliothek, die problemlos Datenvorverarbeitung mit Titanic-Daten durchführen kann, die auch für Kaggle bekannt ist. (Daten: https://www.kaggle.com/c/titanic/data) Übrigens wurden einige Funktionen aus den Titanic-Daten von Kaggle gelöscht, und wenn man sich die Daten hier ansieht, scheint es einige andere Funktionen zu geben. (Daten: https://www.openml.org/d/40945)

Lass es uns jetzt machen. Dieses Mal werden wir die DropXX-Serie vorstellen. Abschließend werde ich auch die Verarbeitung mit Pipeline vorstellen.

Installation

! pip install -U dataliner

Titanic Daten

Laden Sie zuerst train.csv.

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]

Die gelesenen Zugdaten sehen so aus. image.png

DropColumns Löscht einfach die angegebene Spalte. Zum Beispiel ist PassengerId, die eine Passagiernummer darstellt, bei der Modellierung nicht sehr nützlich. Löschen Sie sie daher.

trans = dl.DropColumns('PassengerId')
trans.fit_transform(X)

image.png Die PassengerId wurde entfernt. Es ist auch möglich, eine Liste zu übergeben und mehrere gleichzeitig zu löschen.

Sie können beispielsweise Zugdaten und Testdaten kombinieren und diese normalerweise mit df.drop löschen. Die oben beschriebene Methode verringert jedoch die Wahrscheinlichkeit von Fehlern und macht deutlich, was Sie tun. Beispielsweise kann es wie folgt auf Testdaten angewendet werden.

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

image.png

Darüber hinaus wird es, wie später beschrieben wird, durch die Kombination mit der Scikit-Learn-Pipeline möglich sein, den Fluss der Datenvorverarbeitung und des Merkmalsmengen-Engineerings effizient und abstrakt zusammenzustellen.

DropNoVariance Entfernen Sie Features, die keine Verteilung haben und nur einen einzigen Wert in der Spalte haben. Titanic-Daten verfügen nicht über solche Funktionen. Erstellen wir sie also zuerst.

X['Test_Feature'] = 1

image.png

Wenden wir nun DropNoVariance an.

trans = dl.DropNoVariance()
trans.fit_transform(X)

image.png

Und so weiter. Es kann sowohl für numerische Spalten als auch für Kategoriespalten verwendet werden. Wenn mehrere Spalten vorhanden sind, löschen Sie alle.

DropHighCardinality Löschen Sie Spalten mit einer sehr großen Anzahl von Kategorien. Wenn es zu viele Kategorien gibt, ist es schwierig, sie richtig zu codieren, und es ist schwierig, etwas zu tun. Daher ist es auch eine gute Idee, sie schnell zu löschen, um in der ersten Aktion einen Durchgang zu bestehen. (In Kaggle usw. werden wir die Kardinalität verringern, indem wir Informationen daraus extrahieren und gruppieren.)

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

image.png

Wenn Sie möchten, können Sie auch sehen, welche Spalten wie folgt gelöscht wurden:

trans.drop_columns

array(['Name', 'Ticket', 'Cabin'], dtype='<U6')

Sie können sehen, dass die Funktionen mit einer sehr großen Anzahl von Kategorien gelöscht wurden.

DropLowAUC Führt eine logistische Regression eines einzelnen Features und der Zielvariablen durch, wodurch Features entfernt werden, deren AUC unter einem bestimmten Schwellenwert liegt. Es kann zur Auswahl der Merkmalsmenge verwendet werden. Bei kategorialen Variablen wird eine logistische Regression durchgeführt, nachdem sie intern zu Dummy-Variablen gemacht wurden. Normalerweise wird ungefähr 0,55 empfohlen, aber dieses Mal werden wir aus Gründen der Klarheit einen höheren Schwellenwert festlegen.

trans = dl.DropLowAUC(threshold=0.65)
trans.fit_transform(X, y)

image.png

Alles, was bleibt, sind Klasse, Geschlecht und Tarif, von denen bekannt ist, dass sie eine starke Korrelation mit der Zielvariablen in den Titanic-Daten aufweisen. Es ist effektiv, es zu verwenden, nachdem die Anzahl der Dimensionen explodiert ist, indem OneHotEncoding usw. ausgeführt wird.

DropHighCorrelation Basierend auf dem Pearson-Korrelationskoeffizienten werden Merkmale mit hoher Korrelation identifiziert, und dann bleiben nur die Merkmale mit höherer Korrelation mit der Zielvariablen übrig und die anderen werden gelöscht. Selbst wenn es mehrere Funktionen mit genau demselben Inhalt gibt, werden sie gleichzeitig gelöscht. Zum Boosten von Bäumen usw. ist es ziemlich gut, ohne sich darüber Gedanken zu machen, aber wenn Sie eine lineare Regression usw. durchführen, sollte es gelöscht werden, auch wenn es reguliert ist.

trans = dl.DropHighCorrelation(threshold=0.5)
trans.fit_transform(X, y)

image.png

Der Tarif wurde gelöscht.

Wird mit Pipeline verwendet

Dies ist der größte Vorteil der Vorverarbeitung mit dieser Methode. Verarbeiten wir die 5 diesmal eingeführten Drop-Typen mit einer Pipeline.

from sklearn.pipeline import make_pipeline

process = make_pipeline(
    dl.DropColumns('PassengerId'),
    dl.DropNoVariance(),
    dl.DropHighCardinality(),
    dl.DropLowAUC(threshold=0.65),
    dl.DropHighCorrelation(),
)

process.fit_transform(X, y)

Alle oben eingeführten Prozesse wurden durchgeführt und das Ergebnis ist wie folgt. image.png

Wenden wir dies auf die Testdaten an.

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

image.png Ich konnte im Handumdrehen die gleiche Verarbeitung auf die Testdaten anwenden wie beim Lernen. Wenn Sie es danach als Pickle speichern, ist es perfekt für die nächste Verwendung oder Servicebereitstellung!

abschließend

Diesmal habe ich also die Drop-Elemente von DataLiner vorgestellt. Als nächstes möchte ich das Codierungssystem vorstellen.

Artikel zur Veröffentlichung des Dataliner: https://qiita.com/shallowdf20/items/36727c9a18f5be365b37 GitHub: https://github.com/shallowdf20/dataliner PyPI: https://pypi.org/project/dataliner/

Recommended Posts

Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Drop) zu verarbeiten.
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Anhängen) zu verarbeiten.
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Encoding) zu verarbeiten.
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner zu verarbeiten (Konvertierung).
Versuchen Sie, Doujin-Musikdaten mit Pandas zu aggregieren
20200329_Einführung in die Datenanalyse mit Python 2nd Edition Personal Summary
Versuchen Sie, die Datentabelle von Azure SQL Server mit pyodbc zu extrahieren
Versuchen Sie, Daten zu erfassen, während Sie mit anaconda eine Portweiterleitung an RDS durchführen.
Versuchen Sie, Merkmale von Sensordaten mit CNN zu extrahieren
Versuchen Sie, den Boden durch Rekursion herauszufordern
Generieren Sie einen Fehlerkorrekturcode, um die Datenbeschädigung mit der zfec-Bibliothek wiederherzustellen
Versuchen Sie, den kürzesten Weg mit Python + NetworkX + Social Data zu lösen
Versuchen Sie, CloudWatch-Metriken mit der Python-Datenquelle re: dash abzurufen
Versuchen Sie, Facebook mit Python zu betreiben
Umgang mit unausgeglichenen Daten
Versuchen Sie, Daten in MongoDB abzulegen
Aufblasen von Daten (Datenerweiterung) mit PyTorch
Verarbeiten Sie Pubmed .xml-Daten mit Python
Versuchen Sie Daten parallel zu Distributed TensorFlow
[Ver1.3.1 Update] Ich habe DataLiner erstellt, eine Datenvorverarbeitungsbibliothek für maschinelles Lernen.
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden