计算从中心点到所有点的距离,并选择R中最远的点?

计算从中心点到所有点的距离,并选择R中最远的点?,r,machine-learning,k-means,fuzzy-c-means,R,Machine Learning,K Means,Fuzzy C Means,我是R新手,我想实现以下算法: 步骤1。随机选择一个数据集点作为第一个簇的中心 步骤2。对于下一个簇,找到距离上一个簇中心最大的点,该点尚未被选为中心 第3步。然后,选择该点作为下一簇的中心 步骤4。重复步骤2和3,直到初始化所有簇的中心 我试图编写这个算法。我得到了距离,但我无法将其与原始点匹配,也无法通过迭代获得下一个25点 有人能帮我吗 img_list=list.files() img_list img_mat_list <- as.matrix(lapply(img_li

我是R新手,我想实现以下算法:

  • 步骤1。随机选择一个数据集点作为第一个簇的中心

  • 步骤2。对于下一个簇,找到距离上一个簇中心最大的点,该点尚未被选为中心

  • 第3步。然后,选择该点作为下一簇的中心

  • 步骤4。重复步骤2和3,直到初始化所有簇的中心

我试图编写这个算法。我得到了距离,但我无法将其与原始点匹配,也无法通过迭代获得下一个25点

有人能帮我吗

img_list=list.files()
img_list


img_mat_list <- as.matrix(lapply(img_list,readJPEG))
img_mat_list

images = as.matrix(do.call(rbind,img_mat_list))
dim(images)
[1] 2184   12

means = as.matrix(lapply(img_mat_list, mean))



s1 = sample(images, 30)
> dput(s1)
c(0.141176470588235, 1, 1, 0.682352941176471, 1, 0.925490196078431, 
0.0274509803921569, 0.00784313725490196, 0.364705882352941,0.96078431372549, 
0, 0.16078431372549, 0.972549019607843, 0.0274509803921569, 1, 
0.929411764705882, 0.00392156862745098, 0.972549019607843, 1, 
1, 0.6, 0, 0.23921568627451, 0, 0.988235294117647, 0.0156862745098039, 
0, 0.945098039215686, 0, 0.996078431372549)
> s2 = sample(means, 30)
> dput(s2)
list(0.621813725490196, 0.666421568627451, 0.51797385620915, 
    0.53287037037037, 0.489297385620915, 0.678513071895425, 0.693845315904139, 
    0.618600217864924, 0.567892156862745, 0.64332788671024, 0.342565359477124, 
    0.568082788671024, 0.589351851851852, 0.602205882352941, 
    0.689025054466231, 0.460484749455338, 0.71266339869281, 0.479575163398693, 
    0.677941176470588, 0.602205882352941, 0.466530501089325, 
    0.516884531590414, 0.568082788671024, 0.604738562091503, 
    0.557080610021786, 0.544580610021786, 0.619226579520697, 
    0.515032679738562, 0.524754901960784, 0.516884531590414)

    centers = list()
    K = 26

    center = sample(means, 1) 
    distance = function(point, group) {
    return(dist(t(array(c(point, t(group)), dim=c(ncol(group),      1+nrow(group)))))[1:nrow(group)])}
for (i in 1 : length(K))
  for (j in 1 : length(means))
    distances = distance(center, means)
    centers[i] = which.max(distances)


distances
  [1] 0.027151416 0.035185185 0.018899782 0.027151416
  [5] 0.035185185 0.018899782 0.027151416 0.126633987
  [9] 0.126443355 0.126443355 0.075435730 0.126633987



 > centers
 [1] 60 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[17] NA NA NA NA NA NA NA NA NA 60
img\u list=list.files()
img_列表
img材料清单dput(s1)
c(0.141176470588235,1,1,0.682352941176471,1,0.925490196078431,,
0.0274509803921569, 0.00784313725490196, 0.364705882352941,0.96078431372549, 
0, 0.16078431372549, 0.972549019607843, 0.0274509803921569, 1, 
0.929411764705882, 0.00392156862745098, 0.972549019607843, 1, 
1, 0.6, 0, 0.23921568627451, 0, 0.988235294117647, 0.0156862745098039, 
0, 0.945098039215686, 0, 0.996078431372549)
>s2=样本(平均值30)
>dput(s2)
列表(0.621813725490196、0.666421568627451、0.51797385620915、,
0.53287037037037, 0.489297385620915, 0.678513071895425, 0.693845315904139, 
0.618600217864924, 0.567892156862745, 0.64332788671024, 0.342565359477124, 
0.568082788671024, 0.589351851851852, 0.602205882352941, 
0.689025054466231, 0.460484749455338, 0.71266339869281, 0.479575163398693, 
0.677941176470588, 0.602205882352941, 0.466530501089325, 
0.516884531590414, 0.568082788671024, 0.604738562091503, 
0.557080610021786, 0.544580610021786, 0.619226579520697, 
0.515032679738562, 0.524754901960784, 0.516884531590414)
中心=列表()
K=26
中心=样本(平均值,1)
距离=功能(点、组){
返回(dist(t(数组(c(点,t(组)),dim=c(ncol(组),1+nrow(组щщ))[1:nrow(组)])
对于(1中的i:长度(K))
对于(1中的j:长度(平均值))
距离=距离(中心,平均值)
中心[i]=哪个最大(距离)
距离
[1] 0.027151416 0.035185185 0.018899782 0.027151416
[5] 0.035185185 0.018899782 0.027151416 0.126633987
[9] 0.126443355 0.126443355 0.075435730 0.126633987
>中心
[1] 60钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠
[17] 娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜60
这些距离是182个距离的数组


中心应该是集群的中心

你能让它重现吗?您的代码似乎不完整(在
返回
之后,您有一个未配对的
}
…是否缺少函数的开头?)。一个小样本数据集将使这更有趣。只要5-10分就足够调试算法了。我做了一些编辑,你能再检查一下吗!这是一些图像的数据。182个字母图像,每个图像是12×12像素。我把它们都放到一个矩阵中,得到了每个图像的平均值,我试图在图像上实现模糊c均值算法。谢谢你,还是不可复制。您的目标应该是我可以复制/粘贴到R中以获得一些示例数据的代码。[以下是制作可复制示例的提示](stackoverflow.com/questions/5963269/how-to-make-a-great-r-repeatable-example),最好的方法是使用代码模拟数据(使用
set.seed
使随机绘图可复制)或使用
dput()
共享数据的一小部分,足以说明问题。我想我理解你的目标,我只是需要一些数据来帮助你。再次感谢你,我添加了一个方法和图像的样本,你能让这个重现吗?您的代码似乎不完整(在
返回
之后,您有一个未配对的
}
…是否缺少函数的开头?)。一个小样本数据集将使这更有趣。只要5-10分就足够调试算法了。我做了一些编辑,你能再检查一下吗!这是一些图像的数据。182个字母图像,每个图像是12×12像素。我把它们都放到一个矩阵中,得到了每个图像的平均值,我试图在图像上实现模糊c均值算法。谢谢你,还是不可复制。您的目标应该是我可以复制/粘贴到R中以获得一些示例数据的代码。[以下是制作可复制示例的提示](stackoverflow.com/questions/5963269/how-to-make-a-great-r-repeatable-example),最好的方法是使用代码模拟数据(使用
set.seed
使随机绘图可复制)或使用
dput()
共享数据的一小部分,足以说明问题。我想我理解你的目标,我只是需要一些数据来帮助你。再次感谢你,我添加了一个方法和图像的示例