[PYTHON] Vorhersage des Kreditkartenfehlers Feature Quantity Engineering

Vorheriger Artikel

Bitte schauen Sie sich den vorherigen Inhalt an! https://qiita.com/lindq_yu/items/4f8e3e1d28df0c693d4f

Feature Quantity Engineering

Bestätigung der Art der Daten beim Engineering der Merkmalsmenge. Diese Daten sind PAY_AMT, BILL_AMT, AGE, LIMIT BAL sind numerische Daten Kategoriedaten für Sex, Ehe, Bildung PAY hat kategoriale Variablen wie revolvierende Zahlung, Zahlung war möglich und nicht möglich, während es numerische Werte mit fortlaufenden Werten wie 1 Monat, 2 Monate, 3 Monate usw. gibt.

Ich möchte diese Daten fest verarbeiten.

Kategoriedaten

Es gibt verschiedene Methoden für das Feature-Quantity-Engineering kategorialer Variablen, es wird jedoch die typische One-Hot-Codierung verwendet.

In der Erklärung dieser Daten gibt es keine "0" -Daten in BILDUNG und EHE, aber sie befinden sich in diesem Datensatz. EDUCATION

5 und 6 sind unbekannt. Ursprünglich scheinen diese beiden bedeutungslos unbekannt zu sein. In geschäftlichen Situationen (ich weiß es nicht wirklich, weil ich Student bin ...) kann ich die für die Eingabe zuständige Person, den Fragebogenersteller und den Datensatzersteller fragen, aber diesmal weiß ich es nicht, daher füge ich Unbekanntes und "0" hinzu. Und mit anderen übereinstimmen (weil es nur 14 "0" -Daten gibt)

MARRIGE

Dieser Artikel hat auch 3 wie andere, was eine Frage ist, die Implikationen beinhalten kann. Normalerweise ist dies auch bei der verantwortlichen Person zu überprüfen, aber leider ist dies nicht möglich, sodass "0" in anderen enthalten ist.

Verarbeiten Sie den Datensatz basierend auf den oben genannten.

↓ Datensatzbeschreibung image.png

python


#Datenextraktion
category=dataset.loc[:,["SEX","MARRIAGE","EDUCATION"]]

#Zählen der Anzahl der Auftritte von SEX
#print("SEX value count")
#print(category["SEX"].value_counts())
#print("")

#Zählen der Anzahl der Auftritte von EHE
#print("MARRIAGE value count")
#print(category["MARRIAGE"].value_counts())
#print("")

#Zählen der Anzahl der Auftritte von EDUCATION
#print("EDUCATION")
#print(category["EDUCATION"].value_counts())

#EHE"0" -unknown-Zu"3" -others-Umstellung auf
category["MARRIAGE"] = category["MARRIAGE"].replace(0,3)

#BILDUNG"0" -unknown- ,"5" -unknown- ,"6" -unknown-Zu"3" -others-Umstellung auf
category["EDUCATION"] = category["EDUCATION"].replace(0,4)
category["EDUCATION"] = category["EDUCATION"].replace(5,4)
category["EDUCATION"] = category["EDUCATION"].replace(6,4)

#Bestätigung der Kategorie
category

Klicken Sie hier für das konvertierte Ergebnis ↓ image.png

onehot_category Konvertieren Sie diese kategoriale Variable mit onehot_category in Daten.

python


from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(categories="auto", sparse=False, dtype=np.float32)
onehot_X = enc.fit_transform(category)
onehot_category= pd.DataFrame(data = onehot_X,columns = ["male","female","graduate school","university", "high school", "EDU-others","married", "single","MARR-others"])
onehot_category

Umbau abgeschlossen! image.png

Numerische Daten

Numerische Daten sollten unberührt bleiben. Numerische Daten werden ebenfalls konvertiert, aber es gibt Modelle mit höherer Genauigkeit, wenn dies nicht der Fall ist. Lassen Sie es also vorerst.

PAY

Kategorie

--Revo count (Revo)

Kontinuierlicher Wert

Erstellen Sie Variablen für die Anzahl der Revos (Revo), die Häufigkeit, mit der Sie erfolgreich bezahlt haben (Could), die Häufigkeit, mit der Sie nicht bezahlen konnten (Could nicht) und die Häufigkeit, mit der Sie nicht bezahlt haben (nicht). Beim fortlaufenden Wert wird 0 ersetzt, vorausgesetzt, es gibt keine Verzögerung in dem Monat, in dem die revolvierende Zahlung und die Zahlung ohne Zahlung geleistet wurden. Entworfen, so dass der verbleibende Wert die Anzahl der verspäteten Monate ist.

python


l = []
for i in range(1,7):
    l.append("PAY_" + str(i))

PAY=dataset.loc[:,l]

PAY["Revo"] = PAY[PAY == 0].count(1)
PAY["Could"] = PAY[PAY == -1].count(1)
PAY["Not"] = PAY[PAY == -2].count(1)
PAY["Could not"] =6-PAY["Not"]-PAY["Could"]-PAY["Revo"]


for i in l:
    PAY[i] = PAY[i].replace(-1,0)
    PAY[i] = PAY[i].replace(-2,0)

image.png

Komplett!

Datensatzzusammenführung

Die erstellte Variable. Angepasste Variablen zusammenführen

python


#Numerische Daten
l = []
l.append("AGE")
l.append("LIMIT_BAL")
for i in range(1,7):
    l.append("PAY_AMT" + str(i))
for i in range(1,7):
    l.append("BILL_AMT" + str(i))

merge_data = dataset.loc[:,l]

#Kategoriedaten
merge_data = merge_data.join(onehot_category)
#PAY
merge_data = merge_data.join(PAY)

merge_data

Bisher haben wir Feature Quantity Engineering durchgeführt. Das nächste Mal möchte ich es in ein Modell für maschinelles Lernen einfügen!

Recommended Posts

Vorhersage des Kreditkartenfehlers Feature Quantity Engineering
Hinweis "Features Engineering" von HJvanVeen