如何在新数据集上评分

How to Score on a new Data Set

我们已经在 R 中构建了用于聚类的模型。我们现在希望为我们想要聚类的新客户部署模型方程。在 SAS 中,Cluster 节点用于提供 Clustering SAS 代码,我们只需插入新的输入变量即可。 有没有办法在 R 中做到这一点?我们如何导出聚类方程?

下面是使用标准鸢尾花数据集的示例。

irisnew <- iris
library("cluster", lib.loc="~/R/win-library/3.2")
(kc <- kmeans(irisnew, 3)) 

K-means clustering with 3 clusters of sizes 62, 38, 50

Cluster means:
  Sepal.Length Sepal.Width Petal.Length Petal.Width
1     5.901613    2.748387     4.393548    1.433871
2     6.850000    3.073684     5.742105    2.071053
3     5.006000    3.428000     1.462000    0.246000

Clustering vector:
  [1] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
 [39] 3 3 3 3 3 3 3 3 3 3 3 3 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 [77] 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 2 2 2 1 2 2 2 2 2 2 1
[115] 1 2 2 2 2 1 2 1 2 1 2 2 1 1 2 2 2 2 2 1 2 2 2 2 1 2 2 2 1 2 2 2 1 2 2 1

Within cluster sum of squares by cluster:
[1] 39.82097 23.87947 15.15100
 (between_SS / total_SS =  88.4 %)

既然定义了聚类,我就有了一个新的花瓣数据集,需要根据上述聚类规则对其进行分类。我的问题是我如何导出规则呢?通常规则定义为

x = a1 * Sepal.Length + a2 * Sepal.Width +a3 * Petal.Length + a4 * Petal.Width + b
Then if x between z1 and z2 then Cluster1
else if x between z3 and z4 then Cluster2
else if x between z5 and z6 then Cluster3
else Cluster4

谢谢, 马尼什

对于通用模型使用 - predict.glm(glm.model, newdata = newdf))

用于聚类 - Simple approach to assigning clusters for new data after k-means clustering