Python AI 入门 day03

二十二、评价聚类效果的指标

Python AI 入门 day03

度量聚类算法优劣的方法就是观察集群被分离的离散程度。这些集群是不是被分离的合理,就取决于每个集群内部样本是否足够紧密。

轮廓系数得分:

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


分享到:


相關文章: