Untitled

 avatar
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...