Untitled
Anonymous
plain_text
02/15/2023 3:38 PM
3.7 KB
27
Indexable
import tkinter as tk
import numpy as np
import pandas as pd
import time
import pickle
import talib
from sklearn.ensemble import RandomForestRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.feature_selection import SelectFromModel
from sklearn.metrics import r2_score, mean_absolute_error
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.model_selection import train_test_split
from sklearn.model_selection import KFold
# Load the stock data
def load_data():
global data, features, labels, features_scaled, features_selected, scaler, model, sfm
data = pd.read_csv("stock_data.csv")
data["macd"], data["macd_signal"], data["macd_hist"] = talib.MACD(data["Close"], fastperiod=12, slowperiod=26, signalperiod=9)
data["rsi"] = talib.RSI(data["Close"], timeperiod=14)
data["upper"], data["middle"], data["lower"] = talib.BBANDS(data["Close"], timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)
features = data.iloc[:, :-1].values
labels = data.iloc[:, -1].values
scaler = StandardScaler()
features_scaled = scaler.fit_transform(features)
model = RandomForestRegressor(n_estimators=100)
model.fit(features_scaled, labels)
sfm = SelectFromModel(model, threshold=0.05)
features_selected = sfm.fit_transform(features_scaled, labels)
# Train the machine learning model
def train_model():
global train_data, test_data, train_labels, test_labels, regressor, grid_search
train_data, test_data, train_labels, test_labels = train_test_split(features_selected, labels, test_size=0.2, random_state=0)
kfold = KFold(n_splits=10, random_state=0)
regressor = GradientBoostingRegressor(random_state=0)
param_grid = {'n_estimators': [100, 200, 300],
'max_depth': [1, 5, 10]}
grid_search = GridSearchCV(regressor, param_grid, cv=kfold, scoring='neg_mean_absolute_error')
grid_search.fit(train_data, train_labels)
# Make predictions on the test data
def make_predictions():
global predictions
predictions = grid_search.predict(test_data)
# Display the accuracy of the predictions
def display_results():
r2 = r2_score(test_labels, predictions)
mae = mean_absolute_error(test_labels, predictions)
results_label.config(text="R^2 Score: {}\nMean Absolute Error: {}".format(r2, mae))
root = tk.Tk()
load_data_button = tk.Button(root, text="Load Data", command=load_data)
load_data_button.pack()
train_model_button = tk.Button(root, text="Train Model", command=train_model)
train_model_button.pack()
make_predictions_button = tk.Button(root, text="Make Predictions", command=make_predictions)
make_predictions_button.pack()
results_label = tk.Label(root, text="")
results_label.pack()
display_results_button = tk.Button(root, text="Display Results", command=display_results)
display_results_button.pack()
root.mainloop()Editor is loading...