ÎncepețiÎncepe gratuit

Ingineria caracteristicilor din date de volum

Vom folosi modele neliniare pentru a obține predicții mai precise. În cazul modelelor liniare, caracteristicile trebuie să fie corelate liniar cu variabila țintă. Alte modele de învățare automată pot combina caracteristicile în moduri neliniare. De exemplu, ce se întâmplă dacă prețul crește atunci când media mobilă a prețului este în creștere, iar media mobilă a volumului este în scădere? Singura modalitate de a surprinde aceste interacțiuni este fie să înmulțești caracteristicile, fie să folosești un algoritm de învățare automată care gestionează neliniaritatatea (de exemplu, păduri aleatoare).

Pentru a include mai multe informații care pot interacționa cu alte caracteristici, putem adăuga caracteristici slab corelate. Mai întâi vom adăuga date de volum, pe care le avem în lng_df ca și coloana Adj_Volume.

Înainte de a începe, reține că funcțiile din TA-Lib (precum SMA()) necesită array-uri NumPy, nu obiecte pandas. Poți folosi atributul .values al unui obiect de tip Series sau DataFrame din pandas pentru a-l converti într-un array NumPy.

Acest exercițiu face parte din cursul

Machine Learning pentru finanțe în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Calculează variația procentuală zilnică (pe 1 zi) a volumului (folosește pct_change() din pandas) și atribuie rezultatul coloanei Adj_Volume_1d_change din lng_df.
  • Calculează media mobilă pe 5 zile a variației procentuale zilnice a volumului și atribuie rezultatul coloanei Adj_Volume_1d_change_SMA din lng_df.
  • Trasează histogramele celor două noi caracteristici create, folosind lista new_features.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# Create 2 new volume features, 1-day % change and 5-day SMA of the % change
new_features = ['Adj_Volume_1d_change', 'Adj_Volume_1d_change_SMA']
feature_names.extend(new_features)
lng_df[____] = lng_df['Adj_Volume'].____
lng_df[____] = talib.SMA(____[____].____,
                        timeperiod=____)

# Plot histogram of volume % change data
lng_df[____].plot(kind='hist', sharex=False, bins=50)
plt.show()
Editează și rulează codul