车辆价格预测系统 - 基于机器学习的汽车价格估算
class CarPricePrediction: def init(self, top): self.master = top self.master.title('车辆价格预测系统') self.master.geometry('400x300')
frame_input = tk.Frame(self.master)
frame_input.pack(pady=30)
label_year = tk.Label(frame_input, text='年份:')
label_year.grid(row=0,column=0, sticky='e')
label_kilometers_driven = tk.Label(frame_input, text='行驶里程:')
label_kilometers_driven.grid(row=1,column=0, sticky='e')
label_mileage = tk.Label(frame_input, text='油耗(km/l):')
label_mileage.grid(row=2,column=0, sticky='e')
label_engine = tk.Label(frame_input, text='发动机容量(C.C):')
label_engine.grid(row=3,column=0, sticky='e')
label_power = tk.Label(frame_input, text='发动机功率(bhp):')
label_power.grid(row=4,column=0, sticky='e')
label_seats = tk.Label(frame_input, text='座位数:')
label_seats.grid(row=5,column=0, sticky='e')
self.var_year = tk.StringVar()
entry_year = ttk.Entry(frame_input, width=20, textvariable=self.var_year)
entry_year.grid(row=0, column=1)
self.var_kilometers_driven = tk.StringVar()
entry_kilometers_driven = ttk.Entry(frame_input, width=20, textvariable=self.var_kilometers_driven)
entry_kilometers_driven.grid(row=1, column=1)
self.var_mileage = tk.StringVar()
entry_mileage = ttk.Entry(frame_input, width=20, textvariable=self.var_mileage)
entry_mileage.grid(row=2, column=1)
self.var_engine = tk.StringVar()
entry_engine = ttk.Entry(frame_input, width=20, textvariable=self.var_engine)
entry_engine.grid(row=3, column=1)
self.var_power = tk.StringVar()
entry_power = ttk.Entry(frame_input, width=20, textvariable=self.var_power)
entry_power.grid(row=4, column=1)
self.var_seats = tk.StringVar()
entry_seats = ttk.Entry(frame_input, width=20, textvariable=self.var_seats)
entry_seats.grid(row=5, column=1)
button_predict = tk.Button(self.master, text='预测价格', font=('Arial', 12), command=self.predict_price)
button_predict.pack(pady=30)
# 添加背景图片
self.background_image = tk.PhotoImage(file='abc.jpg')
background_label = tk.Label(self.master, image=self.background_image)
background_label.place(x=0, y=0, relwidth=1, relheight=1)
def predict_price(self):
# 加载数据集并进行预处理
data = pd.read_csv('hhh.csv')
data.drop(['Name', 'Location', 'Fuel_Type', 'Transmission', 'Owner_Type'], axis=1, inplace=True)
data['Year'] = 2023 - data['Year']
data = data[data['Year'] >= 0]
data = data.dropna() # 去除缺失值
data['Mileage'] = data['Mileage'].str.rstrip(' km/kgpl').astype(float) # 处理 Mileage 列
data['Engine'] = data['Engine'].str.rstrip(' CC').astype(int) # 处理 Engine 列
data['Power'] = data['Power'].str.rstrip(' bhp').replace('- ', '0').fillna(0).astype(float)
X_train, X_test, y_train, y_test = train_test_split(data.iloc[:,:-1], data.iloc[:,-1], test_size=0.2, random_state=42)
# 获取输入的特征值
year = float(self.var_year.get())
kilometers_driven = float(self.var_kilometers_driven.get())
mileage = float(self.var_mileage.get())
engine = float(self.var_engine.get())
power = float(self.var_power.get())
seats = int(self.var_seats.get())
# 将输入的特征值加入数据集中,然后对其进行预处理
input_data = [[year, kilometers_driven, mileage, engine, power, seats]]
input_data = pd.DataFrame(input_data, columns=X_train.columns)
input_data['Year'] = 2023 - input_data['Year']
# 加载训练好的模型并进行预测
model = RandomForestRegressor()
model.fit(X_train, y_train)
prediction = model.predict(input_data)
# 计算 r2 分数和均方误差
y_pred = model.predict(X_test)
r2 = r2_score(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
# 输出预测结果和评估指标
messagebox.showinfo('预测结果', '预测价格为 {:.2f} 万元\nr2 分数为 {:.2f}\n均方误差为 {:.2f}'.format(prediction[0], r2, mse)) 给该页面增加一个名为abc.jpg的背景图片
原文地址: https://www.cveoy.top/t/topic/oxUz 著作权归作者所有。请勿转载和采集!