Corelații
Este util să verifici corelațiile înainte de a construi modele de învățare automată, deoarece poți vedea care caracteristici corelează cel mai puternic cu ținta. Se folosește adesea coeficientul de corelație Pearson, care detectează doar relații liniare. Se presupune în mod obișnuit că datele sunt distribuite normal, lucru pe care îl poți „estima vizual" din histograme. Variabilele puternic corelate au un coeficient de corelație Pearson apropiat de 1 (corelație pozitivă) sau de -1 (corelație negativă). O valoare apropiată de 0 înseamnă că cele două variabile nu sunt corelate liniar.
Dacă folosim aceleași intervale de timp pentru variațiile anterioare și cele viitoare ale prețului, putem observa dacă prețul acțiunii revine la medie (oscilează) sau urmează un trend (crește dacă a crescut recent).
Acest exercițiu face parte din cursul
Machine Learning pentru finanțe în Python
Instrucțiuni pentru exercițiu
Folosind DataFrame-ul lng_df și coloana Adj_Close:
- Creează prețul viitor pe 5 zile (ca
5d_future_close) cu funcția.shift(-5)din pandas. - Aplică
pct_change(5)pe5d_future_closeșiAdj_Closepentru a crea variația procentuală viitoare a prețului pe 5 zile (5d_close_future_pct), respectiv variația procentuală curentă a prețului pe 5 zile (5d_close_pct). - Examinează corelațiile dintre cele două coloane de variație procentuală pe 5 zile folosind
.corr()pelng_df. - Folosind
plt.scatter(), creează un grafic de dispersie pentru5d_close_pctfață de5d_close_future_pct.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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()