07-PyQt6桌面应用开发:鸢尾花分类器

基于PyQt6 + Scikit-learn开发的桌面应用程序,一键识别鸢尾花品种。

类别 技术
UI框架 PyQt6
机器学习 scikit-learn (RandomForest)
打包 PyInstaller
依赖管理 requirements.txt

二、项目结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
iris-classifier/
├── main.py # 程序入口
├── main_window.py # 主窗口 (395行)
├── train_model.py # 模型训练
├── requirements.txt # 依赖
├── iris_classifier.spec # PyInstaller配置
├── build.bat / build.sh # 打包脚本
├── models/
│ ├── iris_rf_model.joblib # 模型文件
│ └── model_metadata.json # 元数据
├── utils/
│ ├── model_utils.py # 模型工具类
│ └── style_utils.py # 主题样式
└── components/
├── result_chart.py # 饼图+柱状图
├── history_panel.py # 历史记录
└── about_dialog.py # 关于对话框

三、核心功能

界面布局

快捷键

功能
F5 智能预测
F9 随机测试
Ctrl+L 清空输入
Ctrl+T 切换主题
Ctrl+E 导出CSV

四、核心代码

1. 主窗口入口

1
2
3
4
5
6
7
8
9
# main.py
import sys
from PyQt6.QtWidgets import QApplication

app = QApplication(sys.argv)
from main_window import IrisClassifierApp
window = IrisClassifierApp(app)
window.show()
sys.exit(app.exec())

2. 预测逻辑

1
2
3
4
5
6
7
# 主窗口调用模型
classifier = IrisClassifier()
classifier.load_model()

features = [SL.value, SW.value, PL.value PW.value]
result = classifier.predict(features)
# 返回: {'predicted_species', 'confidence', 'probabilities', 'target_names'}

3. 多线程预测

1
2
3
4
5
6
class PredictionThread(QThread):
prediction_ready = pyqtSignal(dict)

def run(self):
result = self.classifier.predict(self.features)
self.prediction_ready.emit(result)

4. 模型训练

1
2
3
4
5
6
# train_model.py
from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(n_estimators=100, max_depth=5, n_jobs=-1)
model.fit(X_train, y_train)
joblib.dump(model, 'models/iris_rf_model.joblib')

5. 可视化组件

1
2
3
4
5
# result_chart.py - 饼图 + 特征重要性柱状图
class ResultChartWidget(QWidget):
def update(self, probs, imp=None):
self.pie.set_probs(probs) # 概率饼图
self.bar.set_imp(imp) # 特征柱状图

五、特色功能

功能 说明
双主题 浅色/深色一键切换
快速预设 Setosa/Versicolor/Virginica一键加载
随机测试 随机抽取样本测试
历史记录 保存最近100条预测
CSV导出 导出预测历史
特征重要性 显示各特征贡献度

六、打包发布

1
2
3
4
5
6
7
8
# Windows
build.bat

# Linux
chmod +x build.sh && ./build.sh

# 手动
pyinstaller iris_classifier.spec --windowed

七、运行

1
2
3
4
5
6
7
8
# 1. 安装依赖
pip install -r requirements.txt

# 2. 训练模型
python train_model.py

# 3. 运行程序
python main.py

#AI学习 #Python #PyQt6 #桌面开发 #机器学习


07-PyQt6桌面应用开发:鸢尾花分类器
https://yourname.github.io/2026/02/04/07-PyQt6桌面应用开发/
作者
JA
发布于
2026年2月4日
许可协议