[PYTHON] Tipps und Vorsichtsmaßnahmen bei der Datenanalyse

Einführung

Zum Aufschreiben von Punkten, die Sie beachten müssen, wenn Sie die Datenanalyse selbst durchführen


Vorherige Informationen
Dieses Mal werde ich die Verwendung der im Kaggle-Wettbewerb verwendeten Daten erläutern. Kaggle House Prices DataSet Kaggle House Prices Kernel Machen Sie sich eine Notiz mit.

Bitte beachten Sie, dass wir uns nicht um die Modellgenauigkeit usw. kümmern, da wir diese für Memo aufbewahren


Inhalt der Daten
Insgesamt gibt es 81 Funktionen, von denen SalePrices als Zielvariable (Ziel) für die Analyse verwendet wird. Die erklärenden Variablen sind andere als SalePrices.

Tips Zunächst ist es besser, dies für die Daten zu tun

Vorverarbeitung

Lesen Sie zunächst die Daten (DataFrame-> df) und führen Sie "EDA (Exploratory Data Analysis)" durch.

-. head (): Am Anfang der Daten anzeigen, 5 Zeilen extrahieren, wenn (5), der Defalt-Wert 5 ist --.info (): Datenübersicht (Anzahl der Zeilen, Anzahl der Spalten, Spaltenname jeder Spalte, Art der in jeder Spalte gespeicherten Daten usw.) -. beschreiben (): Grundlegende Datenstatistik (min, max, 25% usw. .....) -. shape [0], .shape [1]: Überprüfen Sie die Anzahl der Zeilen und Spalten der Daten -. Spalten: Abrufen der Spaltennamen von Daten -. isnull (). Sum (): Überprüfen Sie die Anzahl der fehlenden Bereiche in jeder Spalte


# import
import pandas as pd
import matplotlib.pyplot as plt    ## for drawing graph 

## load Data
df = pd.read~~~~(csv , json etc...)   

#Top Anzeige der Daten
df.head() 

#Zusammenfassende Anzeige von Daten
df.info()

#Anzahl der Dimensionen von Daten (wie viele Zeilen und Spalten)
print('There are {} rows and {} columns in df'.format(df.shape[0], df.shape[1]))

#Datenspalte abrufen
df.columns

#Zählen Sie die Anzahl der fehlenden Werte in den einzelnen Spaltendaten
df.isnull().sum()

#Typtypbestätigung für jede Spaltendaten
df.dtypes

Sie können die Spaltennamen mit df.columns abrufen. Wenn Sie jedoch eine Liste mit Spaltennamen nach Typtyp führen, können Sie diese möglicherweise verwenden, wenn Sie später darüber nachdenken. Beschreiben Sie den Code. Es ist auch möglich, "include" in "type type (float64 etc ...)" zu ändern.


obj_columns = df.select_dtypes(include=['object']).columns
numb_columns = df.select_dtypes(include=['number']).columns

Handlungsbeispiel

Histogramm jeder Spalte (Merkmalsmenge)

Die Merkmalsmenge jeder Spalte wird in ein Histogramm umgewandelt. Dies kann jedoch nur "numerische Daten" verarbeiten. Da es nicht auf "Zeichenkettendaten" angewendet werden kann, wird es später beschrieben.

Bins ist die Einstellung der Feinheit des Klassenwerts für die Analyse der Frequenz, und figsize ist die Einstellung der Größe der Figur. Sie können viele andere Argumente vorbringen. Bitte beziehen Sie sich auf Folgendes. official pyplot.hist document


df.hist(bins=50, figsize=(20,15))
plt.show()

スクリーンショット 2020-08-22 15.28.00.png

Korrelationsmatrix-Wärmekarte

Beim maschinellen Lernen ist es wichtig, die Korrelationsmatrix für jede Merkmalsgröße zu finden. Visualisieren Sie es mit einer Heatmap, um die Korrelationsmatrix zu visualisieren.

corr ist die Korrelationsmatrix, annot legt den Wert in der Zelle fest, cmap gibt die Farbe der Figur an Sie können viele andere Argumente vorbringen. Bitte beziehen Sie sich auf Folgendes. official seaborn.heatmap document

import seaborn as sns  ## for drawing graph 
corr = train_df.corr()
corr[np.abs(corr) < 0.1] = 0  ## corr<0.1  =>  corr=0 
sns.heatmap(corr, annot=True, cmap='YlGnBu')
plt.show()

スクリーンショット 2020-08-22 15.47.09.png

Einschätzung der Wichtigkeit von Merkmalen

Random Forest wird verwendet, um zu berechnen, welche Funktionen für die Zielverkaufspreise wichtig sind. Um RandomForest ausführen zu können, muss es zunächst in "erklärende Variable und objektive Variable" unterteilt werden. ** Dieses Mal werden alle Variablen außer target (SalePsices) als erklärende Variablen verwendet. ** ** **

-. drop ("***", Achse = (0 oder 1)): Geben Sie eine Spalte an, die nicht für *** verwendet wird, Zeile, wenn Achse = 0, Spalte, wenn 1. --RandomForestRegressor (n_estimators = **): n_estimators ist die Anzahl der Lernvorgänge


from sklearn.ensemble import RandomForestRegressor
X_train = df.drop("SalePrices", axis=1)
y_train = df[["SalePrices"]]
rf = RandomForestRegressor(n_estimators=80, max_features='auto')
rf.fit(X_train, y_train)

ranking = np.argsort(-rf.feature_importances_)  ##In absteigender Reihenfolge der Wichtigkeit zeichnen
sns.barplot(x=rf.feature_importances_[ranking], y=X_train.columns.values[ranking], orient='h')
plt.show()

スクリーンショット 2020-08-22 16.08.50.png

Verteilung der einzelnen Funktionen (zur Überprüfung von Ausreißern usw.)

Es wird gesagt, dass wenn Merkmalsgrößen bei der Durchführung einer Regressionsanalyse Ausreißer enthalten, dies wahrscheinlich die Genauigkeit des Modells beeinflusst. Daher wird davon ausgegangen, dass die Verarbeitung von Ausreißern für die Verbesserung der Genauigkeit des Modells unverzichtbar ist. Daher ist es einfach zu visualisieren und zu bestätigen, wie viele Abweichungswerte in jeder Merkmalsmenge enthalten sind.

Hier werden Diagramme der 30 wichtigsten Merkmale ausgeführt.

-. iloc [:,:]: Extrahieren Sie den Wert durch Angabe einer Zeile oder Spalte --sns.regplot: Zeichnen durch Überlagern von 2D-Daten und Ergebnissen des linearen Regressionsmodells


X_train = X_train.iloc[:,ranking[:30]]

fig = plt.figure(figsize=(12,7))
for i in np.arange(30):
    ax = fig.add_subplot(5,6,i+1)
    sns.regplot(x=X_train.iloc[:,i], y=y_train)

plt.tight_layout()
plt.show()

wichtiger Punkt

Überprüfen Sie, ob das Ziel (Zielvariable) einer Normalverteilung folgt

In diesen Daten ist das Ziel SalePrices. Beim maschinellen Lernen ist es wichtig, ob die Zielvariable einer Normalverteilung folgt, da dies das Modell beeinflusst. Schauen wir uns also die Verteilung der SalePrices an. In dieser Abbildung zeigt die vertikale Achse das Verhältnis und die horizontale Achse die SalePrices.


sns.distplot(y_train, color="red", label="real_value")
plt.legend()
plt.show()

スクリーンショット 2020-08-22 16.19.37.png

Aus der obigen Abbildung ist ersichtlich, dass die Verteilung leicht nach links vorgespannt ist. Es handelt sich nicht um eine Normalverteilung (Daten, bei denen die meisten numerischen Werte in der Mitte konzentriert sind, wenn sie grafisch dargestellt und in einer symmetrischen Glockenform "verteilt" werden). Daher sind die üblicherweise verwendeten ** logarithmischen und differentiellen Transformationen ** unten gezeigt, so dass die Zielvariable einer Normalverteilung folgt.


y_train2 = np.log(y_train)
y_train2 = y_train2.replace([np.inf, -np.inf], np.nan)
y_train2 = y_train2.fillna(0)
sns.distplot(y_train2, color="blue", label="log_value")
plt.legend()
plt.show()

スクリーンショット 2020-08-22 16.19.43.png

Durch die logarithmische Umwandlung kommt die Zahl einer Normalverteilung nahe.


y_train3 = y_train.diff(periods = 1)
y_train3 = y_train3.fillna(0)
sns.distplot(y_train3, color="green", label="diff_value")
plt.legend()
plt.show()

スクリーンショット 2020-08-22 16.19.49.png

Es ist eine Zahl, die durch Ausführen einer Differenzumwandlung als Normalverteilung bezeichnet werden kann. Mit anderen Worten, es kann gefolgert werden, dass die Zielvariable, die die Genauigkeit des Modells nicht leicht beeinflusst, SalePrices ist, die einer differenziellen Konvertierung unterzogen wurden. Auf diese Weise ** ist es beim Umgang mit Daten besser zu prüfen, ob die Werte verzerrt sind. ** ** ** Ich möchte einen zukünftigen Artikel schreiben, in dem die Genauigkeit des Modells verglichen wird, wenn es tatsächlich der Normalverteilung folgt und wenn dies nicht der Fall ist.

Zusammenfassung

Das Obige ist eine Zusammenfassung dessen, was bei der Datenanalyse zuerst zu tun ist. In Zukunft möchte ich Artikel über den Umgang mit Zeichenkettendaten und den Umgang mit Zeitreihendaten schreiben, die ich bereits bei der Datenanalyse erwähnt habe.

Recommended Posts

Tipps und Vorsichtsmaßnahmen bei der Datenanalyse
Python für die Datenanalyse Kapitel 4
[Python] Hinweise zur Datenanalyse
Lernnotizen zur Python-Datenanalyse
Python für die Datenanalyse Kapitel 3
Hinweise für herausfordernde Basketball-Videoanalysen
Vorverarbeitungsvorlage für die Datenanalyse (Python)
Datenanalyse zur Verbesserung von POG 3 ~ Regressionsanalyse ~
Datenanalyse Titanic 2
Datenanalyse Python
Datenanalyse Titanic 1
Datenanalyse Titanic 3
JupyterLab Grundeinstellung 2 für die Datenanalyse (pip)
JupyterLab Basic Setup für die Datenanalyse (pip)
Bereiten Sie eine Programmiersprachenumgebung für die Datenanalyse vor
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: Laden von Daten
Datenanalyse mit Python 2
Datenanalyse mit xarray
Ordnerstruktur zur Analyse
Datenanalyse Übersicht Python
Quellenanalyse für Django - INSTALLED_APPS
Python-Datenanalysevorlage
Datenanalyse mit Python
Datenanalyse zur Verbesserung von POG 1 ~ Web Scraping mit Python ~
[Für Anfänger] So studieren Sie den Python3-Datenanalysetest
Organisation grundlegender Verfahren zur Datenanalyse und statistischen Verarbeitung (2)
Analyse der Messdaten ①-Memorandum of Scipy Fitting-
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: SIR-F-Modell
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: S-R-Trendanalyse
LightGBM, der erste Schritt, um das Denken in Datenanalyse-Wettbewerben zu beenden
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: SIR-Modell
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: Parameterschätzung
Datensatz für maschinelles Lernen
Mein Python-Datenanalyse-Container
Mehrdimensionale Datenanalysebibliothek xarray
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: Szenarioanalyse (Parametervergleich)
Installationshinweise für TensorFlow für Windows
[In kürzester Zeit verstehen] Python-Grundlagen für die Datenanalyse
Welches sollte ich für die Datenanalyse studieren, R oder Python?
Lesen von Notizen (in Python und Stan) zur Einführung in die statistische Modellierung für die Datenanalyse (Midorimoto)
<Python> Erstellen Sie einen Server für die Datenanalyse mit Jupyter Notebook
Wrap-Analyse Teil1 (Datenaufbereitung)
[PyTorch] Datenerweiterung zur Segmentierung
[Python + Selen] Tipps zum Scraping
Tipps zur Erfassung von Aktienkursdaten
~ Tipps für Python-Anfänger mit Liebe von Pythonista ③ ~
Datenanalyse mit Python-Pandas
Einführung in die statistische Modellierung für die Datenanalyse GLM-Modellauswahl
Hinweise zum HHKB-Programmierwettbewerb 2020
Twitter-Daten analysieren | Trendanalyse
Einführung in die statistische Modellierung für die Datenanalyse Generalized Linear Model (GLM)
Erstellen Sie ein USB-Boot-Ubuntu mit einer Python-Umgebung für die Datenanalyse
Starten Sie Notizen für vorhandene Django-Anwendungen
Pandas / DataFrame-Tipps für den praktischen Gebrauch
Grundlegende Syntaxhinweise für Shell-Skripte
Python: Zeitreihenanalyse: Vorverarbeitung von Zeitreihendaten
3 Monate Schichtdaten n Monate Schichtdaten