Я новый пользователь Tkinter.
У меня есть кнопки для (импорта CSV и прогнозов). Мне нужен CSV-файл, который я только что импортировал, для обработки (прогнозирования) с помощью кнопки прогнозирования. Это мой код:
import tkinter as tk
import tkinter.ttk as ttk
from tkinter import filedialog
import pandas as pd
import numpy as np
from statsmodels.tsa.arima_model import ARIMA
from sklearn.metrics import mean_squared_error
class NewprojectApp:
def __init__(self, master=None):
# build ui
main_window = ttk.Frame(master)
label_1 = ttk.Label(main_window)
label_1.config(font='{sans } 12 {bold}', justify='center', padding='100', text='PREDIKSI IHSG BBCA.JK')
label_1.pack(side='top')
button_1 = ttk.Button(main_window)
button_1.config(text='Import CSV', command = self.getCSV)
button_1.place(anchor='nw', relx='0.14', rely='0.66', x='0', y='0')
button_2 = ttk.Button(main_window)
button_2.config(text='Prediksi', command = self.prediksi)
button_2.place(anchor='nw', relwidth='0.31', relx='0.55', rely='0.66', x='0', y='0')
main_window.config(height='200', width='200')
main_window.pack(side='top')
# Main widget
self.mainwindow = main_window
def run(self):
self.mainwindow.mainloop()
def getCSV(self):
global df
import_file_path = filedialog.askopenfilename()
df = pd.read_csv(import_file_path, usecols=['Date','Open'])
df.timestamp = pd.to_datetime(df.Date , format = '%Y-%m-%d')
df.index = df.timestamp
df.drop('Date',axis = 1, inplace = True)
df.fillna(df.mean(),inplace=True)
df_transform = np.log(df)
def prediksi(self):
split_point = round(len(df_transform)* 90/100)
data_train, data_validation = df_transform[0:split_point], df_transform[split_point:]
history = [x for x in data_train['Open']]
predictions = list()
for t in range(len(data_validation)):
model = ARIMA(history, order=(1,1,1))
model_fit = model.fit(trend='c', disp=0)
output = model_fit.forecast()
yhat = output[0]
predictions.append(yhat)
obs = data_validation['Open'][t]
history.append(obs)
print('predicted=%.4f, expected=%.4f' % (np.exp(yhat), np.exp(obs)))
error = mean_squared_error(np.exp(data_validation['Open']),np.exp(predictions))
print('Test MSE: %.3f' % error)
if __name__ == '__main__':
root = tk.Tk()
app = NewprojectApp(root)
app.run()
ERROR Я получаю сообщение о том, что мои данные не определены. Предоставьте некоторую информацию об этом. Выше полный код.