Untitled
unknown
plain_text
2 years ago
2.9 kB
4
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...