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