Untitled
unknown
plain_text
2 years ago
2.6 kB
5
Indexable
import tkinter as tk import numpy as np import pandas as pd import time import pickle import talib import os 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 path = "C:\\Users\\Public\\Test_machine\\Data\\" filename = "SQQQ_stock_data.csv" data = pd.read_csv(os.path.join(path, filename)) 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 grid_search = GradientBoostingRegressor(random_state=0) grid_search.fit(train_data, train_labels) # Make predictions on the test data predictions = grid_search.predict(test_data) r2 = r2_score(test_labels, predictions) mae = mean_absolute_error(test_labels, predictions) print("R2:", r2) print("MAE:", mae) # Save the model path = "C:\\Users\\Public\\Test_machine\\" model_filename = "SQQQ_model.pkl" with open(os.path.join(path, model_filename), "wb") as file: pickle.dump(grid_search, file) 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() root.mainloop()
Editor is loading...