[PYTHON] SIGNATE Quest ① Vom Lesen der Daten bis zur Vorverarbeitung

Hintergrund mit SIGNATE Quest

Während ich im Rahmen meiner Arbeit eine BI-Umgebung (Talend, Snowflake, Quicksight) aufbaute, war maschinelles Lernen ein Bereich, den ich lernen wollte, aber nicht erreichen konnte. Ich habe erfahren, dass bei SIGNATE ein "Beginner Limited Competition" stattfinden wird, und habe mich daher entschlossen, diese Gelegenheit zu nutzen, um die Herausforderung anzunehmen. Ich wusste nicht, wo ich anfangen sollte, aber ein Teil von "Effizienz des Telemarketings in Finanzinstituten" wurde kostenlos veröffentlicht. Deshalb habe ich das, was ich hier gelernt habe, als mein eigenes Studienprotokoll aufgezeichnet. Wir erstellen diesen Artikel, um ihn zu behalten.

Grundlagen

Pandas importieren

import pandas as pd

Daten lesen

df = pd.read_csv('data.csv', index_col='id')

Grundlegende Statistiken für numerische Daten

print( df.describe() )

Grundlegende Statistiken zu Zeichenfolgentypdaten

print( df.describe(include=['O']) )

Anzeige des Variablentyps df

print( type(df) )

Anzeige der Spalte y

print( df['y'] )

Anzeige des Datentyps, aus dem nur die Spalte y extrahiert wird

print( type(df['y']) )

Anzeige von Daten mit Spalten Alter, Job, y in dieser Reihenfolge extrahiert

print( df[['age', 'job', 'y']] )

Anzeige von Daten mit den Indizes 2 und 3 Spalten Alter, Job, y in dieser Reihenfolge extrahiert

print( df.loc[[2, 3], ['age', 'job', 'y']] )

Anzeige von Daten mit entfernter Spalte y

print( df.drop('y', axis=1) )

Einfache Tabellierung

Anzeige des Elementtyps und der Erscheinungsnummer des Spaltenergebnisses

print( df['poutcome'].value_counts() )

Anzeige der Elementtypen und der Anzahl der Vorkommen in Spalte y

print( df['y'].value_counts() )

Mit der Funktion value_counts werden die in der Spalte vorhandenen Elemente und die Anzahl ihrer Vorkommen angezeigt.

print( df['poutcome'].value_counts() )

Variable Korrelation

    1. Bestätigen Sie mit dem numerischen Wert --Korrelationskoeffizient
  1. Visualisieren und überprüfen

Korrelationskoeffizient

Die Corr-Funktion, die eine der Funktionen der Pandas-Bibliothek ist. Die Korrelation wird durch Kreuztabelle numerischer Daten gezeigt. print(df.corr()) 2020-08-05_10h04_35.png

Visualisierung

Verstreute Diagramme und Box-Whisker werden häufig als Methoden zum Ausdrücken der Korrelation verwendet.

Streudiagramm

Wird verwendet, um die Korrelation zwischen quantitativen Daten zu überprüfen 2020-08-14_10h19_53.png

Box Whisker

Wird verwendet, um die Korrelation zwischen quantitativen und qualitativen Daten zu überprüfen 2020-08-05_10h03_46.png

Wie erstelle ich ein Box Bart Diagramm

    1. Erstellen Sie eine Tabelle mit qualitativen und quantitativen Daten
  1. Erstellen Sie ein Box-Whisker-Diagramm basierend auf den quantitativen Daten für jede qualitative Daten (Im folgenden Beispiel erstellen Sie im Fall von a ein Box-Whisker-Diagramm mit einem Maximalwert von 4 und einem Minimalwert von 1.) 2020-08-14_10h37_17.png

2020-08-14_10h42_23.png

Analyse Methode

Lassen Sie uns eine Hypothese aufstellen, indem wir uns die grundlegenden Statistiken und Grafiken ansehen, welche Art von Variablen das Vorhandensein oder Fehlen von Festgeldanträgen beeinflussen. Anstatt die Daten in den dunklen Wolken zu betrachten, können Sie die Analyse effizient fortsetzen, indem Sie eine Hypothese erstellen und diese überprüfen. Zum Beispiel kann das Folgende berücksichtigt werden.

Hypothese 1. Personen, die sich für die vorherige Kampagne beworben haben, wiederholen sich möglicherweise eher (nur wenn das Produkt zufriedenstellend ist). Hypothese 2. Da Festgelder Produkte sind, die nicht frei abgehoben werden können, kann es für Personen mit einem großen Betrag an überschüssigen Mitteln einfacher sein, Anträge zu stellen. Hypothese 3. Personen, die schon lange mit dem Verkauf in Kontakt stehen, fühlen sich möglicherweise eher unwohl bei der Bewerbung (abhängig von den Fähigkeiten des Verkäufers).

Kreuztabelle

Um die Hypothese 1 zu beweisen, (1) Berechnen Sie die Aufwandmenge für jedes Element des Spaltenergebnisses unter Verwendung des variablen Kreuzes, dem das in der vorherigen Operation erstellte Kreuztabellenergebnis zugeordnet ist, und weisen Sie es der variablen Rate zu.

Führen Sie Kreuztabellen durch

import pandas as pd df = pd.read_csv('data.csv', index_col='id') cross = pd.crosstab(df['poutcome'], df['y'], margins=True)

Berechnung der Aufwandmenge

rate = cross[1] / cross["All"]

Anwendungsrate cvr zu Kreuztabellenergebnissen hinzugefügt

cross["cvr"] = rate print( cross )

Extrahieren und zeigen Sie nur die Indizes 'Erfolg', 'Fehler' und Spalte 'cvr' aus der Kreuztabellen-Tabelle an

print( cross.loc[["success", "failure"], "cvr"])

Heatmap anzeigen

Selbst wenn die Korrelation als Matrixtabelle erstellt wird, ist es schwierig zu verstehen, was in der Liste der numerischen Werte stark korreliert ist. Visualisieren Sie sie daher und überprüfen Sie sie.

Bibliothek importieren

import pandas as pd import matplotlib.pyplot as plt import seaborn as sns

Daten lesen

df = pd.read_csv('data.csv', index_col='id')

Berechnung des Korrelationskoeffizienten quantitativer Daten

corr_matrix = df.corr()

Heatmap erstellen

sns.heatmap(corr_matrix, cmap="Reds")

Titel zum Diagramm hinzufügen

plt.title('Correlation')

Grafik anzeigen

plt.show()

2020-08-05_11h58_10.png

Datenfilterung

In Pandas können Sie dieselbe Verarbeitung wie die Filterfunktion von Excel ausführen, indem Sie sie als Variable [bedingter Ausdruck] beschreiben, der DataFrame zugewiesen ist. Wenn Sie dem bedingten Ausdruck einen variablen Wert ['Spaltenname'] == geben, dem DataFrame zugewiesen ist, können Sie nur die Zeilen extrahieren, für die diese Spalte diesen Wert hat. Typische bedingte Ausdrücke sind wie folgt.

Daten gleich dem angegebenen Wert: Variable, der DataFrame zugewiesen ist ['Spaltenname'] == Wert Daten, die vom angegebenen Wert abweichen: Variable, der DataFrame zugewiesen ist ['Spaltenname']! = Wert Daten größer als der angegebene Wert: Variable, der DataFrame ['Spaltenname']> Wert zugewiesen ist Daten größer oder gleich dem angegebenen Wert: Variable, der DataFrame zugewiesen ist ['Spaltenname']> = Wert

Wenn die Variable, der DataFrame zugewiesen ist, beispielsweise X ist, schreiben Sie wie folgt, um die Daten unter der Bedingung zu filtern, dass der Wert von Spalte A 0 ist.

X [X ['Spalte A'] == 0]

Wenn Sie nur eine bestimmte Spalte B der gefilterten Daten auswählen möchten, schreiben Sie wie folgt.

X [X ['Spalte A'] == 0] ['Spalte B']

Mit dieser Funktion kann nur die Spaltendauer (letzte Kontaktzeit) extrahiert werden, wenn die Spalte y (Vorhandensein / Nichtvorhandensein eines Festgeldantrags (1: Ja, 0: Nein)) '1' ist.

Pandas importieren

import pandas as pd

Daten lesen

df = pd.read_csv('data.csv', index_col='id')

Daten mit dem y-Wert 1 anzeigen

print( df[df['y']==1] )

Anzeige der Datendauer mit dem y-Wert 1

print( df[df['y']==1]['duration'] )

Zeichnen eines Histogramms

Ein Histogramm ist eine Visualisierungsmethode zur Überprüfung der Datenverteilung numerischer Daten. Mithilfe des Histogramms können Sie den Bereich der numerischen Daten und den häufigsten Bereich der numerischen Daten überprüfen.

In Bezug auf die Spaltendauer (Endkontaktzeit) werden dann zwei Arten von Histogrammen, die in den Fall unterteilt sind, in dem die Spalte y (Vorhandensein / Fehlen einer Festgeldanwendung (1: Ja, 0: Nein)) 0 ist und der Fall, in dem sie 1 ist, in einem Diagramm angezeigt. Zeichnen und vergleichen wir die Verteilung. Verwenden Sie zum Erstellen eines Histogramms die Distplot-Funktion von seaborn und schreiben Sie:

seaborn.distplot (Variable mit zugewiesener Serie)

Um zwei Datentypen zu überlagern, können Sie zeichnen, indem Sie die Distplot-Funktion zweimal schreiben. Um dem Diagramm eine Legende hinzuzufügen, geben Sie den Beschriftungsnamen in der Option distplot an und schreiben Sie dann die Legendenfunktion von matplotlib.

seaborn.distplot (Variable mit zugeordneter Serie, label = "label name") matplotlib.pyplot.legend()

matplotlib bietet viele Funktionen, um das Erscheinungsbild des Diagramms zu verbessern. Verwenden Sie beispielsweise die Funktionen xlabel und ylabel, um die x- und y-Achse zu benennen.

matplotlib.pyplot.xlabel (Name der x-Achse) matplotlib.pyplot.ylabel (Name der y-Achse)

Verwenden Sie auch die Funktion xlim, um den Anzeigebereich der x-Achse festzulegen. (Der Anzeigebereich kann auch für die y-Achse mit der ylim-Funktion festgelegt werden.)

matplotlib.pyplot.xlim (untere Grenze der x-Achse, obere Grenze der x-Achse)

Pandas importieren

import pandas as pd

Daten lesen

df = pd.read_csv('data.csv', index_col='id')

Importieren Sie matplotlib.pyplot

import matplotlib.pyplot as plt

Import Seaborn

import seaborn as sns

Extraktion der Dauer

duration_0 = df[df['y']==0]['duration'] duration_1 = df[df['y']==1]['duration']

Histogramm erstellen

sns.distplot(duration_0, label='y=0') sns.distplot(duration_1, label='y=1')

Titel zum Diagramm hinzufügen

plt.title('duration histgram')

Fügen Sie der x-Achse des Diagramms einen Namen hinzu

plt.xlabel('duration')

Fügen Sie der y-Achse des Diagramms einen Namen hinzu

plt.ylabel('frequency')

Festlegen des Anzeigebereichs für die x-Achse

plt.xlim(0, 2000)

Legende zum Diagramm hinzufügen

plt.legend()

Grafik anzeigen

plt.show()

2020-08-14_12h11_31.png

Feature-Generierung und -Verarbeitung

2020-08-14_12h19_42.png

2020-08-14_12h20_33.png

2020-08-14_12h23_10.png

2020-08-14_12h25_05.png

2020-08-14_12h25_18.png

2020-08-14_12h26_28.png

2020-08-14_12h27_49.png

2020-08-14_12h28_08.png

2020-08-14_12h28_53.png

Recommended Posts

SIGNATE Quest ① Vom Lesen der Daten bis zur Vorverarbeitung
[Kaggle] Vom Lesen der Daten bis zur Vorverarbeitung und Codierung
SIGNATE Quest ② Von der gezielten Modellerstellung bis zur Erstellung von Übermittlungsdaten
Datenvorverarbeitung (2) Ändern Sie die Daten von "Kategorisch" in "Numerisch".
Von der Installation von Elasticsearch bis zur Dateneingabe
Python: Lesen von JSON-Daten von der Web-API
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
Summe von 1 bis 10
Abrufen von Daten von MacNote3 und Migrieren zu Write
[Python] Fluss vom Web-Scraping zur Datenanalyse
[AWS] Migrieren Sie Daten von DynamoDB nach Aurora MySQL
Lesen von CSV-Daten aus dem Python-Code des DSX-Objektspeichers
So kratzen Sie Bilddaten von Flickr mit Python
Automatische Datenmigration vom Yahoo Root Lab nach Strava
Senden Sie Protokolldaten vom Server an Splunk Cloud
Lesehinweis: Einführung in die Datenanalyse mit Python
Senden Sie Daten von Python über die Socket-Kommunikation an Processing
DataNitro, Implementierung einer Funktion zum Lesen von Daten aus dem Blatt
Ich habe versucht, Daten aus einer Datei mit Node.js zu lesen.
Ich möchte sagen, dass es eine Datenvorverarbeitung gibt ~
Daten aus S3 extrahieren
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
Übergang von WSL1 zu WSL2
Daten mit TensorFlow lesen
Korrelation durch Datenvorverarbeitung
Vorverarbeitung von Präfekturdaten
Von der Bearbeitung bis zur Ausführung
[Linux] Kopieren Sie Daten mit einem Shell-Skript von Linux nach Windows
[Einführung in matplotlib] Lesen Sie die Endzeit aus den COVID-19-Daten ♬
Die Geschichte des Kopierens von Daten von S3 auf Googles TeamDrive
Drücken Sie in Python auf REST, um Daten von New Relic abzurufen
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Anhängen) zu verarbeiten.
Meteorologie x Python ~ Von der Wetterdatenerfassung bis zur Spektrumanalyse ~
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Encoding) zu verarbeiten.
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner zu verarbeiten (Konvertierung).
Übergeben Sie die OpenCV-Daten der ursprünglichen C ++ - Bibliothek an Python
Ich habe versucht, mit pypyodbc schnell Daten von AS / 400 abzurufen