利用tkinterpython建立一个成人收入预测系统利用决策树模型可实现机器学习生成预测准确度。1数据集导入功能设置csv等格式文件导入按钮按后可导入相关数据集数据集属性包含age workclass fnlwgt education education-num marital-status occupation relationship race sex capital-gain capit
。
7.设置预测功能按钮,可输入相关特征值,进行预测,并显示结果。
以下是示例代码:
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.preprocessing import StandardScaler, LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import tkinter as tk
from tkinter import filedialog, messagebox
class AdultIncomePrediction:
def __init__(self, root):
self.root = root
self.root.title("成人收入预测系统")
self.root.geometry("800x600")
# 设置导入数据集按钮
self.load_data_btn = tk.Button(self.root, text="导入数据集", command=self.load_data)
self.load_data_btn.pack()
# 设置数据预处理选项按钮
self.data_preprocess_btn = tk.Button(self.root, text="数据预处理", command=self.data_preprocess)
self.data_preprocess_btn.pack()
# 设置训练集测试集划分功能
self.train_test_split_btn = tk.Button(self.root, text="训练集测试集划分", command=self.train_test_split)
self.train_test_split_btn.pack()
# 设置模型选择下拉菜单
self.model_choice_label = tk.Label(self.root, text="模型选择")
self.model_choice_label.pack()
self.model_choice_var = tk.StringVar()
self.model_choice_var.set("决策树")
self.model_choice_menu = tk.OptionMenu(self.root, self.model_choice_var, "决策树", "随机森林", "逻辑回归")
self.model_choice_menu.pack()
# 设置散点图等图像选择及显示按钮
self.plot_btn = tk.Button(self.root, text="显示散点图", command=self.show_plot)
self.plot_btn.pack()
# 设置模型评估下拉菜单
self.evaluation_choice_label = tk.Label(self.root, text="模型评估")
self.evaluation_choice_label.pack()
self.evaluation_choice_var = tk.StringVar()
self.evaluation_choice_var.set("准确率")
self.evaluation_choice_menu = tk.OptionMenu(self.root, self.evaluation_choice_var, "准确率", "精确率", "召回率", "F1值")
self.evaluation_choice_menu.pack()
# 设置预测功能按钮
self.predict_btn = tk.Button(self.root, text="预测", command=self.predict)
self.predict_btn.pack()
def load_data(self):
file_path = filedialog.askopenfilename(filetypes=[("CSV Files", "*.csv")])
if file_path:
try:
self.data = pd.read_csv(file_path)
messagebox.showinfo("提示", "数据集导入成功!")
except:
messagebox.showerror("错误", "数据集导入失败!")
def data_preprocess(self):
# 处理缺失值
self.data.dropna(inplace=True)
# 处理数值型数据标准化
numeric_cols = ["age", "fnlwgt", "education-num", "capital-gain", "capital-loss", "hours-per-week"]
scaler = StandardScaler()
self.data[numeric_cols] = scaler.fit_transform(self.data[numeric_cols])
# 处理类别型数据编码
categorical_cols = ["workclass", "education", "marital-status", "occupation", "relationship", "race", "sex", "native-country", "salary"]
le = LabelEncoder()
for col in categorical_cols:
self.data[col] = le.fit_transform(self.data[col])
messagebox.showinfo("提示", "数据预处理完成!")
def train_test_split(self):
train_size = float(input("请输入训练集比例(0-1之间的小数):"))
self.train_data, self.test_data = train_test_split(self.data, train_size=train_size)
messagebox.showinfo("提示", "训练集测试集划分完成!")
def show_plot(self):
# 显示散点图
pass
def predict(self):
# 进行预测
pass
if __name__ == "__main__":
root = tk.Tk()
app = AdultIncomePrediction(root)
root.mainloop()
``
原文地址: https://www.cveoy.top/t/topic/gtI1 著作权归作者所有。请勿转载和采集!