Files
d1kt/KMEANS_QUICKSTART.md

272 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# K-Means 算法演示页面 - 快速开始
## 🎯 功能概览
这是一个完整的 K-Means 聚类算法可视化演示工具,集成在您的打字练习网站中。
### ✨ 核心功能
| 功能 | 说明 |
|------|------|
| 🎨 **可视化画布** | 800x600 像素的交互式画布 |
| 🎲 **随机生成点** | 可生成 1-200 个随机数据点 |
| 🖱️ **交互操作** | 左键添加点/质心,右键清空 |
| 🎯 **K值调节** | 支持 1-10 个聚类中心 |
| 📊 **算法演示** | 逐步展示 K-Means 算法过程 |
| 📏 **距离可视化** | 实时显示点到质心的距离 |
| 📑 **坐标显示** | 可选显示所有点的坐标 |
| 💾 **Excel支持** | 导入/导出数据到 Excel 文件 |
## 🚀 快速开始
### 步骤 1: 访问页面
- **开发环境**: http://localhost:3001/kmeans
- **导航入口**: 点击网站顶部导航栏的 "K-Means演示"
### 步骤 2: 基础操作
1. **设置参数**
```
K值: 3 (想要分成几个簇)
点的数量: 50
```
2. **生成数据**
- 点击 "生成随机点" 按钮
3. **设置质心**
- 在画布上点击 3 次与K值相同
- 每个质心会用不同颜色标识
4. **运行算法**
- 点击 "执行一步" 按钮
- 观察算法逐步执行过程
5. **保存结果**
- 点击 "导出Excel" 保存数据
## 📖 使用示例
### 示例 1: 基础聚类
```
目标: 将 50 个点分成 3 个簇
操作:
1. K值 = 3
2. 点的数量 = 50
3. 生成随机点
4. 点击画布 3 次设置质心
5. 持续点击"执行一步"直到完成
```
### 示例 2: 手动创建数据
```
目标: 手动创建特定分布的数据
操作:
1. K值 = 2
2. 在画布左侧点击 2 次设置质心
3. 在画布不同区域手动点击添加数据点
4. 勾选"显示坐标"查看具体位置
5. 执行算法查看聚类结果
```
### 示例 3: 导入已有数据
```
目标: 使用之前保存的数据
操作:
1. 点击"导入Excel"
2. 选择之前导出的 Excel 文件
3. 数据自动加载到画布
4. 继续执行算法或修改数据
```
## 🎨 界面说明
```
┌─────────────────────────────────────────────────┐
│ 控制面板 │
│ [点数] [生成] [K值] [☑显示坐标] [执行] [清空] │
│ [导出Excel] [导入Excel] │
├─────────────────────────────────────────────────┤
│ │
│ 画布区域 │
│ (800 x 600 像素) │
│ │
│ ● 灰色点 = 未分配的数据点 │
│ ● 彩色点 = 已分配到簇的点 │
│ ◉ 大圆圈 = 质心点 (标记为 C1, C2, ...) │
│ ─── 线段 = 距离连线(显示数值) │
│ │
├─────────────────────────────────────────────────┤
│ 操作说明 │
│ • 左键: 添加点/质心 │
│ • 右键: 清空画布 │
│ • 当前迭代: 0 │
│ • 状态: 等待开始 │
└─────────────────────────────────────────────────┘
```
## 🔍 算法过程详解
### 阶段 1: 初始化
- 设置 K 个质心点
- 生成或添加数据点
### 阶段 2: 分配簇(点击"执行一步"
```
对于每个数据点:
1. 计算到所有质心的距离 (显示线段和数值)
2. 找出最短距离 (高亮显示为绿色)
3. 将点分配给最近的质心 (点变成质心颜色)
4. 清除距离线,处理下一个点
```
### 阶段 3: 更新质心
```
当所有点处理完毕:
1. 计算每个簇的几何中心
2. 移动质心到新的位置
3. 检查是否收敛
```
### 阶段 4: 迭代或结束
```
如果质心位置改变:
→ 返回阶段 2继续下一轮迭代
如果质心位置不变:
→ 算法收敛,显示"聚类完成"
```
## 📁 Excel 文件格式
导出的 Excel 文件包含以下列:
| 列名 | 说明 | 示例 |
|------|------|------|
| 类型 | 数据点或质心 | 数据点 / 质心 |
| 索引 | 编号 | 1, 2, 3... |
| X坐标 | 横坐标值 | 123.45 |
| Y坐标 | 纵坐标值 | 234.56 |
| 所属簇/颜色 | 簇编号或颜色代码 | 簇1 / #FF6B6B |
## ⌨️ 键盘快捷键
| 操作 | 快捷键 |
|------|--------|
| 清空画布 | 右键点击画布 |
| 添加点 | 左键点击画布 |
## 💡 使用技巧
### 技巧 1: 观察收敛过程
- 每次点击"执行一步"只处理一个点
- 可以清楚看到每个点如何选择最近的质心
- 适合教学演示
### 技巧 2: 测试不同 K 值
```
相同数据不同K值的效果:
K=2: 粗分类
K=3: 中等细分
K=5: 细分类
```
### 技巧 3: 保存实验数据
- 每次实验后导出 Excel
- 可以在不同场景下重复使用相同数据
- 便于比较不同参数的效果
### 技巧 4: 质心初始化的影响
- 尝试在不同位置设置初始质心
- 观察对最终聚类结果的影响
- 理解 K-Means++ 的重要性
## ⚠️ 注意事项
1. **质心数量**: 必须设置完整的 K 个质心才能开始算法
2. **算法运行中**: 无法修改参数或添加新点
3. **右键操作**: 会清空整个画布,请谨慎使用
4. **浏览器兼容**: 需要支持 Canvas API 的现代浏览器
5. **性能考虑**: 建议点的数量不超过 200 个
## 🐛 常见问题
**Q: 为什么点击"执行一步"没反应?**
```
检查清单:
☐ 是否已设置了 K 个质心?
☐ 质心数量是否等于设置的 K 值?
☐ 是否有数据点?
```
**Q: 如何重新开始?**
```
方法 1: 点击"清空画布"按钮
方法 2: 右键点击画布
然后重新设置质心和数据点
```
**Q: Excel 导入失败?**
```
检查文件格式:
☐ 文件扩展名是 .xlsx 或 .xls
☐ 包含必需的列类型、X坐标、Y坐标
☐ 数值格式正确
```
**Q: 算法什么时候停止?**
```
停止条件:
• 各簇成员不再变化
• 质心位置稳定
• 显示"聚类完成"提示
```
## 🎓 教学场景
### 场景 1: 课堂演示
```
时间: 15-20分钟
内容:
1. 介绍 K-Means 基本概念 (5分钟)
2. 现场演示算法过程 (10分钟)
3. 讨论初始化和收敛 (5分钟)
```
### 场景 2: 实验课
```
时间: 45-60分钟
任务:
1. 不同 K 值的效果对比
2. 初始质心位置的影响
3. 记录迭代次数和结果
4. 提交实验报告导出Excel
```
### 场景 3: 自学练习
```
学习路径:
1. 阅读 KMEANS_README.md
2. 完成基础示例操作
3. 尝试不同参数组合
4. 理解算法原理
```
## 📚 相关文档
- **KMEANS_README.md** - 详细使用说明
- **KMEANS_DEPLOYMENT.md** - 部署和配置指南
## 🔗 访问链接
开发环境: http://localhost:3001/kmeans
立即体验 K-Means 算法的魅力! 🚀