gpt4 book ai didi

r - 如何在 r 中用高尔距离对变量进行加权

转载 作者:行者123 更新时间:2023-12-02 15:32:08 25 4
gpt4 key购买 nike

我是 R 新手,正在处理一个数据集,包括名义数据、序数数据和度量数据。因此我使用高尔距离。在下一步中,我将这个距离与 hclust(x, method="complete") 结合使用,根据这个距离创建聚类。

现在我想知道如何对高尔距离中的变量赋予不同的权重。文档说:

daisy(x, metric = c("euclidean", "manhattan", "gower"), stand = FALSE, type = list(), weights = rep.int(1, p))

所以有一种方法,但我不确定语法(weights = ...)。weightsrep.int 的文档没有帮助。我也没有找到任何其他有用的解释。

如果有人能提供帮助,我将非常高兴。

最佳答案

不确定这是否是您的意思,但是...

假设您有 5 个变量,例如数据框或矩阵中有 5 列。那么 weights 将是一个 length=5 的向量,其中包含相应列的权重。

文档中的符号weights=rep.int(1,p)仅表示权重的默认值是长度为p且全为1的向量,例如。权重都等于 1。在文档的其他地方,它解释了 p 是列数。

另外,请注意 daisy(...) 生成相异矩阵。这就是您在 hclust(...) 中使用的内容。因此,如果 x 是一个包含五列变量的数据框或矩阵,那么:

d  <- daisy(x, metric="gower", weights=c(1,2,3,4,5))
hc <- hclust(d, method="complete")

编辑(回应OP的评论)

下面的代码显示了聚类如何取决于权重。

clust.anal <- function(df,w,h) {
require(cluster)
d <- daisy(df, metric="gower", weights=w)
hc <- hclust(d, method="complete")
clust <- cutree(hc,h=h)
plot(hc, sub=paste("weights=",paste(wts,collapse=",")))
rect.hclust(hc,h=0.8,border="red")

}

df <- read.table("ExampleClusterData.csv", sep=";",header=T)
df[1] <- factor(df[[1]])
df[2] <- factor(df[[2]])
# weights increase with col number...
wts=c(1,2,3,4,5,6,7)
clust.anal(df,wts,h=0.8)

# weights decrease with col number...
wts=c(7,6,5,4,3,2,1)
clust.anal(df,wts,h=0.8)

关于r - 如何在 r 中用高尔距离对变量进行加权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21334677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com