a,x两个矩阵
[,1] [,2]
[1,] 1 1
[2,] 0 1
[3,] 0 0
[4,] 5 6
[5,] 6 5
[6,] 5 5
[7,] 10 2
[8,] 10 2
[9,] 11 3
for(j in 1:nrow(a)){
for(i in 1:nrow(x)){
w[i]<-dist(rbind(a[j,],x[i,]),method="euclidean")
}
write.table(w,append=TRUE, sep =",",file="E:/w1.txt",row.names =FALSE, col.names =FALSE, quote =FALSE)
}
k-means的原理是:
1)选择k个点作为初始质心,即需要分为k个簇
2)遍历数组,依次将点分配到最近的质心,加入新点后,质心需要重新计算更新
3)重复点的分配和质心的更新动作,直至簇不再发生变化或者质心的变动的范围在接受范围内
存在的问题:
在聚类前,簇的个数是不可知的,初始质心的随机的选择会对聚类的生成造成很大的影响,为降低初始质心的选择丢后期的影响
a)先使用层次聚类的方法得到特定的k个簇及质心,(样本较小的情况)
b)随机选择第一个质心,对于后续的每一质心,选择离已经选取的初始质心最远的点
聚类优劣的判断
常用的判断值是误差的平方和(sum of the squared error ,sse),以其作为度量聚类质量的目标函数。
即计算簇内每个点到簇质心的距离的平方和。
SSE=dist(c-x)^2, dist(c-x)^2=(Cx-x)^2+(Cy-y)^2
cluster~聚类的结果,也就是每个对象所属的类
tot.withinss~聚类的总的类内平方和,用来衡量类内差异
between~聚类的类间平方和,用来衡量类间差异
简单的评估聚类效果的算法可以用betweenss/(tot.withinss+betweenss)来评价,如果该值越接近于1,聚类的效果就越好些,表示最终的聚类类间差异比较大,类内差异比较小。其他的评价聚类效果的方法还有:
Rand Index, Adjusted randindex
Silhouette Coefficient(轮廓系数)
[,1] [,2]
[1,] 1 1
[2,] 0 1
[3,] 0 0
[4,] 5 6
[5,] 6 5
[6,] 5 5
[7,] 10 2
[8,] 10 2
[9,] 11 3
for(j in 1:nrow(a)){
for(i in 1:nrow(x)){
w[i]<-dist(rbind(a[j,],x[i,]),method="euclidean")
}
write.table(w,append=TRUE, sep =",",file="E:/w1.txt",row.names =FALSE, col.names =FALSE, quote =FALSE)
}
k-means的原理是:
1)选择k个点作为初始质心,即需要分为k个簇
2)遍历数组,依次将点分配到最近的质心,加入新点后,质心需要重新计算更新
3)重复点的分配和质心的更新动作,直至簇不再发生变化或者质心的变动的范围在接受范围内
存在的问题:
在聚类前,簇的个数是不可知的,初始质心的随机的选择会对聚类的生成造成很大的影响,为降低初始质心的选择丢后期的影响
a)先使用层次聚类的方法得到特定的k个簇及质心,(样本较小的情况)
b)随机选择第一个质心,对于后续的每一质心,选择离已经选取的初始质心最远的点
聚类优劣的判断
常用的判断值是误差的平方和(sum of the squared error ,sse),以其作为度量聚类质量的目标函数。
即计算簇内每个点到簇质心的距离的平方和。
SSE=dist(c-x)^2, dist(c-x)^2=(Cx-x)^2+(Cy-y)^2
cluster~聚类的结果,也就是每个对象所属的类
tot.withinss~聚类的总的类内平方和,用来衡量类内差异
between~聚类的类间平方和,用来衡量类间差异
简单的评估聚类效果的算法可以用betweenss/(tot.withinss+betweenss)来评价,如果该值越接近于1,聚类的效果就越好些,表示最终的聚类类间差异比较大,类内差异比较小。其他的评价聚类效果的方法还有:
Rand Index, Adjusted randindex
Silhouette Coefficient(轮廓系数)
Dunn Index
canopy
1、向量序列化(自定义VectorTo.java)
2、执行canopy
./mahout canopy -i /bs/xx -o /output -dm org.apache.mahout.common.distance.EculideanDistanceMeasure -t1 3.0 -t2 1.5 --clustering
簇的集合列表
./mahout seqdumper -i /bs/can/clusteredPoints/part-m-00000
Key: 0: Value: wt: 1.0 distance: 0.74535599249993 vec: [1:1.000]
Key: 0: Value: wt: 1.0 distance: 0.74535599249993 vec: [0:1.000]
Key: 0: Value: wt: 1.0 distance: 0.4714045207910317 vec: []
Key: 1: Value: wt: 1.0 distance: 0.745355992499931 vec: [5.000, 6.000]
Key: 1: Value: wt: 1.0 distance: 0.745355992499931 vec: [6.000, 5.000]
Key: 1: Value: wt: 1.0 distance: 0.4714045207910384 vec: [5.000, 5.000]
Key: 2: Value: wt: 1.0 distance: 0.9428090415820768 vec: [10.000, 2.000]
Key: 2: Value: wt: 1.0 distance: 0.4714045207910322 vec: [11.000, 3.000]
Key: 2: Value: wt: 1.0 distance: 0.4714045207910322 vec: [11.000, 3.000]
簇的中心点
./mahout seqdumper -i /bs/can/clusters-0-final/part-r-00000
Key: C-0: Value: org.apache.mahout.clustering.iterator.ClusterWritable@200957cd
Key: C-1: Value: org.apache.mahout.clustering.iterator.ClusterWritable@200957cd
Key: C-2: Value: org.apache.mahout.clustering.iterator.ClusterWritable@200957cd
自定义类VectorParse解析part-r-00000
C-0 {0:0.3333333333333333,1:0.3333333333333333}
C-1 {0:5.333333333333333,1:5.333333333333333}
C-2 {0:10.666666666666666,1:2.6666666666666665}