使用R语言中的中心点(聚类中心)进行数据聚类

我有一个包含三个特征的数据框,如下所示:

library(cluster)df <- data.frame(f1=rnorm(480,30,1),                 f2=rnorm(480,40,0.5),                 f3=rnorm(480,50, 2))

现在,我想要使用K-medoids方法分两步进行聚类。第一步,使用df中的一些数据获取中心点(聚类中心),第二步,使用第一步获得的中心点对剩余数据进行聚类。具体步骤如下:

# 使用部分数据查找中心点sample_data <- df[1:240,]sample_data <- scale(sample_data) # 标准化特征clus_res1 <- pam(sample_data,k = 4,diss=FALSE)# 现在使用上述聚类得到的中心点进行聚类test_data <- df[241:480,]test_data <- scale(test_data)clus_res2 <- pam(test_data,k = 4,diss=FALSE,medoids=clus_res1$medoids)

使用这个脚本时,我得到了如下错误信息:

Error in pam(test_data, k = 4, diss = FALSE, medoids = clus_res1$medoids) :   'medoids' must be NULL or vector of 4 distinct indices in {1,2, .., n}, n=240

显然,这个错误信息是由于中心点矩阵的输入格式引起的。我如何将这个矩阵转换为错误信息中指定的向量格式呢?


回答:

初始中心点参数需要你数据集中点的索引号。例如,42,17表示使用对象42和17作为初始中心点。

根据中心点的定义,你只能使用数据集中的点作为中心点,不能使用其他向量!

聚类是无监督的学习。无需将数据分割成训练集和测试集,因为在无监督学习中没有标签需要拟合过度。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注