如何在新数据集上评分
Posted
技术标签:
【中文标题】如何在新数据集上评分【英文标题】:How to Score on a new Data Set 【发布时间】:2015-07-13 10:06:49 【问题描述】:我们已经在 R 中构建了用于聚类的模型。我们现在希望为我们想要集群的新客户部署模型方程。在 SAS 中,集群节点用于提供集群 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
谢谢, 马尼什
【问题讨论】:
你在 R 中使用了哪些函数来聚类数据? reproducible example 会很好。 您的更新示例不起作用。您定义了irisnew
,然后在newiris
上运行kmeans。我假设您打算过滤掉分类变量。另外,为了重现性,指定lib.loc=
也无济于事,因为这可能因操作系统和 R 版本而异。假设您可以使示例正常工作,我确实投票重新开放(但重新开放确实需要更多的投票)。
更正了irisnew
和newiris
的错字。我从基础数据中制作了几个数据集。我的问题很简单——我说过 X 组花是根据一些算法聚集在一起的。我想对一朵新花应用相同的聚类规则。(在现实生活中,他们是现有客户和新客户)。我可以使用上面描述的 SAS 中的聚类代码和系数来实现这一点,如果然后,我只是想在 R 中做到这一点。在 SAS 中,“评分”意味着我们在新的原始数据上应用构建模型。我想在 R 中获取并执行 Score 代码
该示例真的适合您吗?我收到一个错误:“do_one(nmeth) 中的错误:外部函数调用中的 NA/NaN/Inf (arg 1)”。如果你在做kmeans聚类,你只需要提取聚类中心(kc$centers
),然后比较每个新点到每个中心的距离,选择最近的聚类中心。
评分部分.. x = a1 * Sepal.Length......
在 SAS 中工作。无论是聚类、回归、逻辑回归等。这就是我们让现有模型在新数据集上运行并获取集群名称/回归概率等的方式。
【参考方案1】:
用于通用模型 - predict.glm(glm.model, newdata = newdf))
用于集群使用 - Simple approach to assigning clusters for new data after k-means clustering
【讨论】:
以上是关于如何在新数据集上评分的主要内容,如果未能解决你的问题,请参考以下文章
在 R 中的新数据集上使用已经创建的 kmeans kluster 模型