Korrelationen
Korrelationen sind hilfreich, bevor wir Machine-Learning-Modelle bauen, weil wir sehen können, welche Features am stärksten mit dem Target korrelieren. Häufig wird Pearsons Korrelationskoeffizient verwendet, der nur lineare Zusammenhänge erkennt. Oft nimmt man an, dass unsere Daten normalverteilt sind; das können wir per „Augenmaß" in Histogrammen prüfen. Stark korrelierte Variablen haben einen Pearson-Korrelationskoeffizienten nahe 1 (positiv korreliert) oder -1 (negativ korreliert). Ein Wert nahe 0 bedeutet, dass die beiden Variablen nicht linear korreliert sind.
Wenn wir für vergangene und zukünftige Kursänderungen die gleichen Zeiträume verwenden, können wir sehen, ob der Aktienkurs mittelfristig zum Mittelwert zurückkehrt (schwankt hin und her) oder einem Trend folgt (steigt weiter, wenn er zuletzt gestiegen ist).
Diese Übung ist Teil des Kurses
<Kurs>Maschinelles Lernen für Finanzen in Python</Kurs>Übungsanweisungen
Verwende das DataFrame lng_df und dessen Adj_Close:
- Erzeuge den zukünftigen 5-Tage-Schlusskurs (als
5d_future_close) mit.shift(-5)von pandas. - Verwende
pct_change(5)auf5d_future_closeundAdj_Close, um die zukünftige prozentuale 5-Tage-Kursänderung (5d_close_future_pct) und die aktuelle prozentuale 5-Tage-Kursänderung (5d_close_pct) zu erstellen. - Untersuche die Korrelationen zwischen den beiden Spalten der prozentualen 5-Tage-Kursänderung mit
.corr()auflng_df. - Erstelle mit
plt.scatter()ein Streudiagramm von5d_close_pctgegen5d_close_future_pct.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Create 5-day % changes of Adj_Close for the current day, and 5 days in the future
lng_df['5d_future_close'] = lng_df['Adj_Close'].shift(____)
lng_df['5d_close_future_pct'] = lng_df['5d_future_close'].pct_change(5)
lng_df['5d_close_pct'] = lng_df['Adj_Close'].pct_change(____)
# Calculate the correlation matrix between the 5d close pecentage changes (current and future)
corr = lng_df[['5d_close_pct', '5d_close_future_pct']].____
print(corr)
# Scatter the current 5-day percent change vs the future 5-day percent change
plt.scatter(lng_df['5d_close_pct'], lng_df[____])
plt.show()