# 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++等) - 显示迭代历史和收敛曲线 - 支持导入更多格式的数据文件