如何解决使用训练后的回归模型查询使用用户输入值预测输出
我是机器学习和回归模型的新手。我已经创建了回归模型以及图形用户界面,供用户键入所需的输入值以预测输出。但是,我不断收到错误:“ IndexError:列表索引超出范围”。我认为问题出在此:
x1 = float(entry1.get())
y2 = model.predict(x1)
下面是完整的代码:
# imports
import tensorflow as tf
import numpy as np
from tensorflow import keras
from keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Dropout
from sklearn.metrics import r2_score
import matplotlib.pyplot as plt
import numpy
from keras.optimizers import Adam
import keras
from matplotlib import pyplot
from tensorflow.keras.callbacks import EarlyStopping
import pandas as pd
from sklearn.preprocessing import LabelEncoder
import cv2
import os
from tensorflow.keras.layers import Input,Dens
from tensorflow.keras.models import Model
# Read data from csv file for training and validation data
data = pd.read_csv('C:/Users/binis/OneDrive/Desktop/Internship forms and deliverables/raw data/Tool wear analysis/Tool wear multivariate regression data.csv',comment='#')
# Split into input (X) and output (Y) variables
X = data['NO:']
y = data['Wear']
from numpy import array
X = array(X)
print(X.shape)
X = X.reshape((X.shape[0],1))
print(X.shape)
y = array(y)
print(y.shape)
y = y.reshape((y.shape[0],1))
print(y.shape)
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=0)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
input_layer = Input(shape=(X.shape[1],))
dense_layer_1 = Dense(100,activation='relu')(input_layer)
dense_layer_2 = Dense(50,activation='relu')(dense_layer_1)
dense_layer_3 = Dense(25,activation='relu')(dense_layer_2)
output = Dense(1)(dense_layer_3)
model = Model(inputs=input_layer,outputs=output)
model.compile(loss="mean_squared_error",optimizer="adam",metrics=["mean_squared_error"])
history = model.fit(X_train,batch_size=5,epochs=1000,verbose=1,validation_split=0.2)
from sklearn.metrics import mean_squared_error
from math import sqrt
from sklearn import metrics
pred_train = model.predict(X_train)
print('Mean Absolute Error:',metrics.mean_absolute_error(y_train,pred_train))
print('Mean Squared Error:',metrics.mean_squared_error(y_train,pred_train))
print('Root Mean Squared Error:',np.sqrt(metrics.mean_squared_error(y_train,pred_train)))
print("\n")
pred = model.predict(X_test)
print('Mean Absolute Error:',metrics.mean_absolute_error(y_test,pred))
print('Mean Squared Error:',metrics.mean_squared_error(y_test,pred))
print('Root Mean Squared Error:',np.sqrt(metrics.mean_squared_error(y_test,pred)))
def plot_loss(history):
plt.plot(history.history['loss'],label='Train')
plt.plot(history.history['val_loss'],label='val_loss')
plt.ylim([0,700])
plt.xlabel('Epoch')
plt.ylabel('Error [MPG]')
plt.legend()
plt.grid(True)
plot_loss(history)
pred_train = model.predict(X_train[:10])
print(pred_train)
print("\n")
pred = model.predict(X_test[:10])
print(pred)
import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
from tkinter import Tk,Label,Entry,StringVar
root= tk.Tk()
canvas1 = tk.Canvas(root,width = 800,height = 300)
canvas1.pack()
label1 = tk.Label(root,text='Graphical User Interface for finding tool wear')
label1.config(font=('Arial',20))
canvas1.create_window(400,50,window=label1)
label2 = tk.Label(root,text='Measurement No:')
label2.config(font=('Arial',10))
canvas1.create_window(250,100,window=label2)
entry1 = tk.Entry (root)
canvas1.create_window(400,window=entry1)
def calculate_wear():
global x1
global y2
x1 = float(entry1.get())
y2 = model.predict(x1)
print (y2)
def Clear_inputs():
entry1.delete(0,'end')
entry1.insert(0,"")
button1 = tk.Button (root,text=' Calculate tool wear ',command=calculate_wear,bg='palegreen2',font=('Arial',11,'bold'))
canvas1.create_window(400,180,window=button1)
button2 = tk.Button (root,text=' Clear inputs ',command=Clear_inputs,bg='lightskyblue2','bold'))
canvas1.create_window(400,220,window=button2)
button3 = tk.Button (root,text='Exit Application',command=root.destroy,bg='lightsteelblue2',260,window=button3)
root.mainloop()
让我知道图形用户界面有什么问题。非常感谢:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。