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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录