[置顶] 聚类算法

一、 原理
聚类算法的主要目的是发现一类相似的物与人,比如说从N多的博客中根据这些博客的关键字把这些博客分成几类,在电子商务中,从N多的产品数据发现那一类产品是最受欢迎的。聚类算法应用广泛。其核心算法点就是距离的确定。其具体的算法过程如下

[置顶] 聚类算法_第1张图片

二、 数据量化
聚类算法比较对数据进行量化。对数据量化的结果如下形式。

P1

P2

A

1

8

B

3

8

C

2

6

D

1.5

1

E

4

2


三、 皮尔逊相关系数
皮尔逊相关系数是一种度量两个变量间的相关程度的方法,它的值是介于1与-1之间。其中1表示变量完全正相关,0表示无关,-1表示完全负相关。
公式表示为
展开得

其中皮尔孙相关系数的python代码如下
def pearson(v1,v2):
# Simple sums
sum1=sum(v1)
sum2=sum(v2)

# Sums of the squares
sum1Sq=sum([pow(v,2) for v in v1])
sum2Sq=sum([pow(v,2) for v in v2])

# Sum of the products
pSum=sum([v1[i]*v2[i] for i in range(len(v1))])

# Calculate r (Pearson score)
num=pSum-(sum1*sum2/len(v1))
den=sqrt((sum1Sq-pow(sum1,2)/len(v1))*(sum2Sq-pow(sum2,2)/len(v1)))
if den==0: return 0

return 1.0-num/den
四、 聚类算法
聚类算法有分类算法与k-均值算法。
分类算法原理是连续不断的把两个两两相似的组进行合并,构成一个新的组,然后再两两合并,直到深最后一个。其中两两组的合并是用皮尔逊算法进行判断。

K-均值聚类
K-均值聚类跟分级聚类稍有不同。它是首先随机初始化N个中心点,然后把组分配给想来了的中心点,分配完后把中心点移动到组中的中心点,然后进行第二次分配。依次迭代。


五、 结论
分级聚类需要花费大量的迭代,所以运行很慢,效率很低,分级聚类还不适合打印分类图。而k-均值聚类效率会更高,而且打印分类图比较方便。

你可能感兴趣的:([置顶] 聚类算法)