二十二、评价聚类效果的指标
![Python AI 入门 day03](http://p2.ttnews.xyz/loading.gif)
度量聚类算法优劣的方法就是观察集群被分离的离散程度。这些集群是不是被分离的合理,就取决于每个集群内部样本是否足够紧密。
轮廓系数得分:
a: 一个样本与其所在同一个聚类中其它样本的平均距离。
b: 一个样本与其距离最近的一个聚类中样本的平均距离。
一个样本的轮廓系数:s = (b - a) / max(a, b)
数据集中所有样本的轮廓系数的平均值就是该数据集的轮廓系数。该值应当介于-1到1之间,-1表示完全错误的聚类,1表示完美的聚类,0表示聚类重叠。
对于无法通过业务逻辑和经验判断聚类个数的场景,若要使用kmeans或者凝聚层次算法实现聚类,可以通过轮廓系数得分的比较获得一定程度上的参考。
代码:score.py
二十三、DBSCAN聚类算法
DBSCAN聚类算法将数据样本看做是紧密集群的若干组,如果某个样本隶属于一个集群,那么那些和它具有足够相似性(足够近)的样本就也应该隶属于同一个集群,至于衡量相似性是否足够的指标,可以认为设定一个阈值epsilon,距离小于该阈值的就被认为足够接近,进而被划分到一个聚类中,大于该阈值的则不能同处同一个聚类。DBSCAN聚类算法可以样本划分为核心、外周和孤立三种。
代码:dbscan.py
二十四、推荐引擎
1.流水管线
代码:map.py、red.py、cc1.py、cc2.py、pipe.py
2.寻找最近邻
对于一个给定的输入,在所有训练样本中,计算和该输入距离最近的k个样本,即为寻找最近邻。
样本1: [a b c]
样本2: [A B C]
欧几里得距离(欧氏距离):sqrt((a-A)^2+(b-B)^2+(c-C)^2)
代码:fnn.py
3.knn(k近邻)分类及回归
在已知输出的训练样本中,寻找与未知输出的数据样本最近的k个邻居,根据投票(分类)或者均值(回归)决定未知样本的输出。如果票数相等,根据距离的远近决定,越近的邻居权重越高。
代码:knnc.py、knnr.py
4.欧氏距离分数
两个样本对应特征差的平方和的平方根。
A(x1, y1) B(x2, y2)
|AB| = sqrt((x1-x2)^2+(y1-y2)^2)
代码:es.py
閱讀更多 小悅 的文章