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.
import pandas as pd
df = pd.read_csv('data.csv', index_col='id')
print( df.describe() )
print( df.describe(include=['O']) )
print( type(df) )
print( df['y'] )
print( type(df['y']) )
print( df[['age', 'job', 'y']] )
print( df.loc[[2, 3], ['age', 'job', 'y']] )
print( df.drop('y', axis=1) )
print( df['poutcome'].value_counts() )
print( df['y'].value_counts() )
print( df['poutcome'].value_counts() )
Die Corr-Funktion, die eine der Funktionen der Pandas-Bibliothek ist. Die Korrelation wird durch Kreuztabelle numerischer Daten gezeigt. print(df.corr())
Wird verwendet, um die Korrelation zwischen quantitativen Daten zu überprüfen
Wird verwendet, um die Korrelation zwischen quantitativen und qualitativen Daten zu überprüfen
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).
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.
import pandas as pd df = pd.read_csv('data.csv', index_col='id') cross = pd.crosstab(df['poutcome'], df['y'], margins=True)
rate = cross[1] / cross["All"]
cross["cvr"] = rate print( cross )
print( cross.loc[["success", "failure"], "cvr"])
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.
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns
df = pd.read_csv('data.csv', index_col='id')
corr_matrix = df.corr()
sns.heatmap(corr_matrix, cmap="Reds")
plt.title('Correlation')
plt.show()
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.
import pandas as pd
df = pd.read_csv('data.csv', index_col='id')
print( df[df['y']==1] )
print( df[df['y']==1]['duration'] )
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)
import pandas as pd
df = pd.read_csv('data.csv', index_col='id')
import matplotlib.pyplot as plt
import seaborn as sns
duration_0 = df[df['y']==0]['duration'] duration_1 = df[df['y']==1]['duration']
sns.distplot(duration_0, label='y=0') sns.distplot(duration_1, label='y=1')
plt.title('duration histgram')
plt.xlabel('duration')
plt.ylabel('frequency')
plt.xlim(0, 2000)
plt.legend()
plt.show()