Migrate project from typing_practiceweb
This commit is contained in:
114
KMEANS_README.md
Normal file
114
KMEANS_README.md
Normal file
@@ -0,0 +1,114 @@
|
||||
# K-Means 聚类算法演示页面使用说明
|
||||
|
||||
## 功能概述
|
||||
|
||||
本页面提供了一个可视化的 K-Means 聚类算法演示工具,帮助用户理解和学习 K-Means 算法的工作原理。
|
||||
|
||||
## 访问地址
|
||||
|
||||
- 开发环境: http://localhost:3001/kmeans
|
||||
- 生产环境: https://your-domain.com/kmeans
|
||||
|
||||
## 主要功能
|
||||
|
||||
### 1. 画布操作
|
||||
|
||||
- **随机生成点**: 点击"生成随机点"按钮,可以根据设置的数量自动生成随机分布的数据点
|
||||
- **手动添加点**:
|
||||
- 设置好K个质心后,左键点击画布可以添加新的数据点
|
||||
- 右键点击画布清空所有内容
|
||||
- **设置质心**: 在设置K值后,前K次左键点击会设置质心点(每个质心用不同颜色标识)
|
||||
|
||||
### 2. 参数控制
|
||||
|
||||
- **点的数量**: 控制随机生成时的点数(1-200)
|
||||
- **K值**: 设置聚类的簇数量(1-10)
|
||||
- **显示坐标**: 勾选复选框可以显示每个点和质心的坐标值
|
||||
|
||||
### 3. 算法演示
|
||||
|
||||
点击"执行一步"按钮,系统会逐步演示 K-Means 算法:
|
||||
|
||||
**步骤说明**:
|
||||
1. **距离计算阶段**:
|
||||
- 对每个数据点,依次计算到各个质心的距离
|
||||
- 用线段连接点和质心,并在线段中央显示距离值
|
||||
- 所有距离计算完成后,高亮显示最短距离的线段(绿色)
|
||||
- 其他线段逐一消除
|
||||
|
||||
2. **簇分配**:
|
||||
- 将点分配给距离最近的质心
|
||||
- 点的颜色会变成所属质心的颜色
|
||||
|
||||
3. **质心更新**:
|
||||
- 所有点处理完后,重新计算每个簇的质心位置
|
||||
- 质心移动到该簇所有点的几何中心
|
||||
|
||||
4. **迭代收敛**:
|
||||
- 重复步骤1-3,直到各簇成员不再变化
|
||||
- 显示"K-Means算法收敛,聚类完成!"提示
|
||||
|
||||
### 4. 数据导入导出
|
||||
|
||||
- **导出到Excel**: 点击"导出Excel"按钮,将当前所有点和质心的坐标保存到Excel文件
|
||||
- **从Excel导入**: 点击"导入Excel"按钮,从Excel文件读取点的坐标,导入后会清空原有内容
|
||||
|
||||
Excel 文件格式:
|
||||
```
|
||||
类型 | 索引 | X坐标 | Y坐标 | 所属簇/颜色
|
||||
数据点 | 1 | 123.45 | 234.56 | 簇1
|
||||
质心 | 1 | 400.00 | 300.00 | #FF6B6B
|
||||
```
|
||||
|
||||
### 5. 其他操作
|
||||
|
||||
- **清空画布**: 清除所有数据点和质心
|
||||
- **暂停/继续**: 在算法运行过程中可以逐步查看每一步的效果
|
||||
|
||||
## 使用流程示例
|
||||
|
||||
1. 设置 K=3(想要分成3个簇)
|
||||
2. 点击"生成随机点"生成50个随机点
|
||||
3. 在画布上点击3次,设置3个质心位置
|
||||
4. 勾选"显示坐标"查看坐标信息(可选)
|
||||
5. 点击"执行一步"开始算法演示
|
||||
6. 持续点击"执行一步"观察算法过程
|
||||
7. 算法完成后,可以点击"导出Excel"保存结果
|
||||
|
||||
## 技术实现
|
||||
|
||||
- **前端框架**: React 18.2.0 + TypeScript 4.9.5
|
||||
- **UI组件**: Ant Design 5.21.6
|
||||
- **绘图**: HTML5 Canvas API
|
||||
- **数据处理**: xlsx 库用于 Excel 导入导出
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 质心数量K必须设置完成后才能开始算法演示
|
||||
2. 算法运行过程中无法修改参数或添加点
|
||||
3. 右键清空操作会清除所有内容,请谨慎使用
|
||||
4. Excel 导入时会覆盖当前画布内容
|
||||
5. 建议K值不要设置过大(推荐2-5),以便更好地观察效果
|
||||
|
||||
## 常见问题
|
||||
|
||||
**Q: 为什么点击"执行一步"没有反应?**
|
||||
A: 请确保已经设置了K个质心点,质心数量必须等于设置的K值。
|
||||
|
||||
**Q: 如何重新开始演示?**
|
||||
A: 点击"清空画布"按钮,然后重新设置质心和数据点。
|
||||
|
||||
**Q: 算法什么时候会结束?**
|
||||
A: 当各个簇的成员不再变化时,算法自动停止并提示"聚类完成"。
|
||||
|
||||
**Q: 可以手动设置质心位置吗?**
|
||||
A: 可以,在设置K值后,前K次点击画布会设置质心位置,您可以选择任意位置。
|
||||
|
||||
## 扩展功能建议
|
||||
|
||||
未来可以考虑添加:
|
||||
- 自动运行模式(不需要手动点击每一步)
|
||||
- 调整动画速度
|
||||
- 多种初始化质心的方法(K-Means++等)
|
||||
- 显示迭代历史和收敛曲线
|
||||
- 支持导入更多格式的数据文件
|
||||
Reference in New Issue
Block a user