Life sucks, but you're gonna love it.

0%

Notes | Kmeans 和 KNN

KNN(k-Nearest Neighbor)

字面意思可以理解为是K个最近的近邻点。

这个方法主要用于有监督学习的分类算法,即给定一个点不知道它属于哪个类的时候,根据这个点和周围k个最近已分类的点进行判断。相当于一个投票机制下的分类器,需要看这个新的引入点周围的k个临近点,占哪个分类的比较多,则这个新的引入点就被称作是分类较多的那一类。

K means

字面意思可以理解为是k个平均,也就是k个平均中心。

这个方法主要用于无监督学习的聚类算法,即对一堆未分类的数据,根据已知的类的数目K(即,已知这堆点可以被分为K类),进行分类。

主要流程

已知:一堆未分类点,K值

随意在这堆点中选择 K 个点,每个点为K个分类个子的中心,然后对于这堆点中其他的点进行分类。分类的方法是,对于任意一个点,计算它和之前随机选定的K个点之间的距离,该点离哪个中心点最近,这个点就属于那一类。在对所有的点进行分类之后,可以根据每一类已有的点计算他们每一类的中心点(即均值中心点),然后进行中心点的更新,中心点更新之后,对该点集中所有的点重新进行分类计算,然后计算个点新的类别。重复这个步骤直到更新后的中心点与上次计算的中心点之间的差距小于一个阈值。这样就得到了K类。

如果我不知道K怎么办

可以通过手肘法轮廓间距法对K值进行估计

  • 手肘法
  • 轮廓间距法