Särdragskonstruktion från volymdata
Nu ska vi använda icke-linjära modeller för att göra mer exakta förutsägelser. Med linjära modeller måste särdragen vara linjärt korrelerade med målet. Andra maskininlärningsmodeller kan kombinera särdrag på icke-linjära sätt. Tänk dig till exempel att priset stiger när det glidande medelvärdet för priset ökar, men det glidande medelvärdet för volymen minskar. Det enda sättet att fånga sådana samband är att antingen multiplicera särdragen med varandra, eller att använda en maskininlärningsalgoritm som hanterar icke-linjäritet – till exempel random forests.
För att lägga till mer information som kan samverka med andra särdrag kan vi inkludera svagt korrelerade särdrag. Först lägger vi till volymdata, som finns i lng_df i kolumnen Adj_Volume.
Innan du börjar: TA-Lib-funktioner (som SMA()) kräver NumPy-arrayer, inte pandas-objekt. Använd attributet .values på en pandas Series eller DataFrame för att konvertera den till en NumPy-array.
Den här övningen är en del av kursen
Maskininlärning för finans i Python
Övningsinstruktioner
- Skapa en 1-dagars procentuell förändring i volym (använd
pct_change()från pandas) och tilldela resultatet till kolumnenAdj_Volume_1d_changeilng_df. - Skapa ett 5-dagars glidande medelvärde av den 1-dagars procentuella förändringen i volym och tilldela det till kolumnen
Adj_Volume_1d_change_SMAilng_df. - Rita histogram över de två nya särdrag du skapat med hjälp av listan
new_features.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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()