Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Spatial Analysis GUI — 空间信息智能分析工具

基于 Python + Tkinter 的综合性空间数据分析桌面应用,集成回归、分类、聚类三类机器学习任务,支持 Shapefile / CSV / Excel / 图像多格式数据,覆盖「数据加载 → 模型训练 → 精度评估 → 可视化」完整链路。

Python scikit-learn GIS

项目概述

面向空间信息分析课程的综合工具,把回归、分类、聚类三类机器学习任务整合进一个 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

启动后:

  1. 加载数据:点击浏览选择 .shp / .csv / .xlsx / 图像文件
  2. 选择算法:在「分析设置」页切换 回归 / 分类 / 聚类
  3. 选择特征:从下拉框选择特征列(单变量分析,每次选一列)
  4. 训练:点击开始分析,后台执行并返回指标
  5. 可视化:查看散点图、混淆矩阵、聚类分布等图表

仓库附 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

License

MIT

About

Python + Tkinter 空间数据分析桌面工具:线性回归/逻辑回归/KMeans/SVM 四算法 + 多格式数据 + 评估指标

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /