Random Forest in Python

Random Forest Regressor.

Random Forest Classifier.

Here is an example of using a Random Forest Classifier with a dataset consisting of one feature (lagged MACD histogram value) and nominal target (positive or negative return) encoded as 1/0.

import numpy as np
import pandas as pd
import talib.abstract as ta
from datetime import datetime
from sklearn.ensemble import RandomForestClassifier

data = pd.read_csv('data/BTCUSDT.csv', index_col = 0, parse_dates=True)
data['return'] = data['close'].pct_change()
data['good'] = np.where(data['return'] > 0, 1, 0)

data_values = pd.DataFrame(data['good'].values)

macd = ta.MACD(data)
macd_values = pd.DataFrame(macd.macdhist.values)

df = pd.concat([macd_values.shift(1), data_values], axis=1)
df.columns = ['macd', 'target']
df.dropna(inplace=True)
df.reset_index(drop=True, inplace=True)

# df.to_csv('data/macd.csv', index=False)

X = df.values

# train, test, etc. are numpy arrays
test_start = datetime(2023,1,1,0,0,0)
test_size = data.index.get_loc(test_start)

train, test = X[0:test_size], X[test_size:]

train_X, train_y = train[:,0], train[:,1]
test_X, test_y = test[:,0], test[:,1]

train_X = train_X.reshape(-1, 1)
test_X = test_X.reshape(-1, 1)

clf=RandomForestClassifier()
clf.fit(train_X, train_y)

predictions = clf.predict(test_X)

print (clf.score(train_X, train_y))
print(clf.score(test_X, test_y))

Leave a Reply

Your email address will not be published. Required fields are marked *