基于 Python + Tkinter 的综合性空间数据分析桌面应用,集成回归、分类、聚类三类机器学习任务,支持 Shapefile / CSV / Excel / 图像多格式数据,覆盖「数据加载 → 模型训练 → 精度评估 → 可视化」完整链路。
面向空间信息分析课程的综合工具,把回归、分类、聚类三类机器学习任务整合进一个 GUI,降低空间数据分析的使用门槛。
- 多格式数据接入:Shapefile(矢量,自动提取要素顶点坐标均值)、CSV、Excel、图像
- 四大算法:
- 线性回归(LinearRegression)
- 逻辑回归(LogisticRegression)
- K-Means 聚类(含轮廓系数 silhouette_score 评估)
- 支持向量机 SVM(SVC)
- 评估指标:回归输出 MSE / RMSE / R2 / 斜率 / 截距 / 相关系数;分类输出准确率 / 精确率 / 召回率 / F1 与混淆矩阵;聚类输出轮廓系数
- 交互式可视化:Matplotlib 嵌入 Tkinter,训练结果与图表实时渲染
数据文件 (.shp / .csv / .xlsx / 图像)
│ 后台线程 → DataManager.load_data(按扩展名分发,_infer_dtypes 类型推断)
▼
字段信息刷新 → 变量下拉框(单变量特征选择)
│
分析设置页(单选:回归 / 分类 / 聚类)
▼
后台线程训练(界面不卡顿)
├─ 回归: LinearRegression + linregress
├─ 分类: LogisticRegression / SVM(StandardScaler + LabelEncoder + stratify 划分)
└─ 聚类: KMeans(StandardScaler + 轮廓系数评估)
▼
指标计算(文本 + Treeview 表格)
▼
Matplotlib 图表(散点 / 直方 / 箱线 / 混淆矩阵热图 / 聚类分布)
- 数据管理器(DataManager):统一管理多格式数据的加载、类型推断、几何信息提取
- 几何坐标提取:Shapefile 加载时自动提取面状要素的顶点坐标均值(centroid_x / centroid_y)作为特征
- 标准化与编码:StandardScaler 标准化 + LabelEncoder 标签编码,自动适配模型输入
- 多线程处理:数据加载与耗时训练都在后台线程执行,界面不卡顿
- 模型评估面板:一键输出混淆矩阵、回归指标、分类指标
pip install -r requirements.txt python spatial_analysis_gui.py
启动后:
- 加载数据:点击浏览选择
.shp/.csv/.xlsx/ 图像文件 - 选择算法:在「分析设置」页切换 回归 / 分类 / 聚类
- 选择特征:从下拉框选择特征列(单变量分析,每次选一列)
- 训练:点击开始分析,后台执行并返回指标
- 可视化:查看散点图、混淆矩阵、聚类分布等图表
仓库附
population.csv作为演示数据,可直接加载体验。做分类演示时,请将分类标签选为「发展等级」列(演示数据有多个城市各一行,默认选中的「城市」列每个类别只有 1 个样本,不满足分类要求)。
- 单变量分析:回归 / 分类 / 聚类均只支持选择一个特征列,不支持多特征组合
- 图像数据仅可查看:图像加载后只展示提取的宽高、像素统计等特征,因样本数不足无法参与模型训练
- 分类约束:要求至少 2 个类别且每个类别 ≥ 2 个样本(自动分层划分),小样本数据可能失败
- 中文字体:图表中文依赖 SimHei / Microsoft YaHei 字体,无中文字体的系统上会显示方框
spatial-analysis-gui/
├── spatial_analysis_gui.py # 主程序(GUI + 数据管理 + 训练评估)
├── population.csv # 演示数据
├── requirements.txt
├── LICENSE
└── README.md
| 模块 | 技术 |
|---|---|
| 机器学习 | scikit-learn(LinearRegression / LogisticRegression / KMeans / SVC) |
| 空间数据 | pyshp(Shapefile 读取)、NumPy、SciPy |
| 可视化 | Matplotlib(TkAgg 后端嵌入 Tkinter) |
| GUI | Tkinter |
MIT