--- title: 聚类算法k-均值 列表搜索算法 线性搜索 二分搜索 url: 'https://yayi.site/archives/聚类算法k-均值列表搜索算法线性搜索二分搜索' categories: 算法与设计 cover: \>- https://cdn.jsdelivr.net/gh/tangxingithub/picbed/img/20210311125432-warteergirls.png tags: '聚类,算法,列表搜索算法,k-均值算法' abbrlink: 20b77bb9 date: 2020-09-21 12:17:44 updated: 2021-05-14 22:04:45 ---  ## 聚类算法 ### K-均值算法 聚类是给定一组数据,将相似的分组。每一个组称为群集 相似性根据算法而变化 ,取决于数据点之间的距离,坐标等。 ![image-20200921112151807](https://img.vim-cn.com/bf/f2cef5b20c61972a1b3396941952b98bf25be0.png) 如每一圈就是一个群集。 1. 首先有数据。然后确定群集的数量,这个算法 的特点就是要先确定群集的数量。 这次使用3个群集。 ==随机== 设置三个点作为群集的中心点。 !\[image-20200921115417353\](http://img.yayi.site/csdn/803ee02b5f270912023195a3acacc7ca.png-watermaskStyle) 2. 根据每个数据计算并确定最接近的集群的 中心点。 也就是循环第个数据点,计算离 A B C 哪个 点最近 。就归为哪个点的群集中。 !\[image-20200921115812905\](http://img.yayi.site/csdn/d73407611705ec632b03d7470b4aadd8.png-watermaskStyle) 直到所有数据分类。 !\[image-20200921115939713\](http://img.yayi.site/csdn/089898f1e3169605ffdbca342d1ed264.png-watermaskStyle) 3. 计算每个圆圈的重心(每个集群数据的重心),并将集群的中心点(ABC)移动到那里。 !\[image-20200921120301369\](http://img.yayi.site/csdn/757f941ef2bc6a3fa56ce21db3d9f0a7.png-watermaskStyle) 4. 重新计算 二步骤 ,哪些点离ABC近,分类。再进行移动 5. 直到中心点收敛。收敛的意思就是无限接近于某一个值 。 6. 数学证明过了,重复操作时,中心点将在某个地方收敛。 7. 完成。 注意。:当我们选择 群集数量 为两个的时候。这个算法的效果可就没有那么的肉眼看到的好了。肉眼看起来有三个嘛。 解决办法有:预先分析办法。多次改变 集群数量来尝试K-means算法 ## 列表搜索 ### 线性搜索 就是 一个一个的比较 直到相等为止。没什么好解析的。名字这个高大上。 ### 二分搜索 你心中想定一个范围(N-M)内一个数字,我说出一个数字,你只需要说你心中的数字比我说的大还是小,我最多(M-N-1)/2次可以说出你心中想的数字。 1. 每次划分一半,判断大于还是小于还是等于,然后从剩下的一半找。 2. 等于则完成 。 没什么好说的。