聚类(无监督学习)
目标
簇内相似度高,簇间相似度低
聚类性能度量
- 外部指标:将聚类结果与某个“参考模型”进行比较。
- 内部指标:直接考察聚类结果,不利用任何参考模型。
聚类方法
一、KMeans
给定k个聚类的数量固定,将观察值分配给这些聚类,以使各个聚类(对于所有变量)的均值尽可能彼此不同。
KMeans(n_clusters = 8,*,init ='k-means ++',n_init = 10,max_iter = 300,tol = 0.0001,precompute_distances ='deprecated',verbose = 0,random_state = None,copy_x = True,n_jobs ='deprecated ',algorithm ='auto' )
参数解释
n_clusters——聚类的个数
二、层次聚类
AgglomerativeClustering(n_clusters=2, *, affinity='euclidean', memory=None, connectivity=None, compute_full_tree='auto', linkage='ward', distance_threshold=None)
参数解释
n_clusters——聚类的个数
linkage——连接方法。ward(方差最小化)complete(两组中所有观测值间的最大距离)average(平均距离)single(最小距离)
affinity——用于计算linkage的度量。“euclidean”:欧几里得距离(如果linkage 是 “ward”, 则affinity只可选为此选项) ,“l1”,“l2”
1)先计算样本之间的距离。每次将距离最近的点合并到同一个类。然后,再计算类与类之间的距离,将距离最近的类合并为一个大类。不停的合并,直到合成了一个类。其中类与类的距离的计算方法有:最短距离法,最长距离法,中间距离法,类平均法等。比如最短距离法,将类与类的距离定义为类与类之间样本的最短距离。
2)层次聚类算法根据层次分解的顺序分为:自下底向上和自上向下,即凝聚的层次聚类算法和分裂的层次聚类算法(agglomerative和divisive),也可以理解为自下而上法(bottom-up)和自上而下法(top-down)。自下而上法就是一开始每个个体(object)都是一个类,然后根据linkage寻找同类,最后形成一个“类”。自上而下法就是反过来,一开始所有个体都属于一个“类”,然后根据linkage排除异己,最后每个个体都成为一个“类”。这两种路方法没有孰优孰劣之分,只是在实际应用的时候要根据数据特点以及你想要的“类”的个数,来考虑是自上而下更快还是自下而上更快。至于根据Linkage判断“类”的方法就是最短距离法、最长距离法、中间距离法、类平均法等等(其中类平均法往往被认为是最常用也最好用的方法,一方面因为其良好的单调性,另一方面因为其空间扩张/浓缩的程度适中)。为弥补分解与合并的不足,层次合并经常要与其它聚类方法相结合,如循环定位。
AGNES是一种采用自底向上聚合策略的层次聚类算法。AGNES算法也被称为“单链接”(single)、“全链接”(complete)、“均链接”(average)算法。
三、DBSCAN
根据半径eps和半径内的最小样本数min_samples,以半径内的每一个样本为原点,不停“生长”,当该样本半径内的最小样本数小于min_samples时,停止“生长”。
DBSCAN(eps=0.5, *, min_samples=5, metric='euclidean', metric_params=None, algorithm=