计算平方不一致的总和
Calculate Total Sum of Square Inconsistency
我正在尝试在 R Studio 中为我自己的 k-means 实现编写自己的总平方和、总平方和和介于平方和之间的函数。
我已经成功地编写了平方和内的函数,但是我在总平方和(以及 bss)方面遇到了困难。我得到的结果明显大于 R 自己的 kmeans 函数计算的结果。我很困惑,因为我完全遵循公式提供的内容。这是我的数据:
A =
36 3
73 3
30 3
49 3
47 11
47 11
0 7
46 5
16 3
52 4
0 8
21 3
0 4
57 6
31 5
0 6
40 3
31 5
38 4
0 5
59 4
61 6
48 7
29 2
0 4
19 4
19 3
48 9
48 4
21 5
其中每一列都是一个特征。这是我迄今为止为 tss 创建的函数:
tot_sumoSq <- function(data){
avg = mean( as.matrix(data) )
r = matrix(avg, nrow(data), ncol(data))
tot_sumoSq = sum( (data - r)^2 )
}
我收到结果24342.4,但是R给出13244.8。我完全错过了什么吗?
可能你的程序有问题。您从数据框中减去矩阵。使用以下 -
tot_sumoSq <- function(data){
data = as.matrix(data)
x = sum((data - mean(data))^2)
return(x)
}
我这边给出了正确答案。
后一个值是使用列平均值计算的。如果你用它来计算均值,你会得到相同的答案。
avg = colMeans(data)
r = matrix(avg, nrow(data), ncol(data), byrow=T)
[1] 13244.8
结合前两位评论员提供的解决方案,我找到了解决问题的方法。我知道我之前的错误是什么,并希望为未来的科学家们消除任何困惑。
tot_sumoSq <- function(data){
avg = colMeans(data)
r = matrix(avg, nrow(data), ncol(data), byrow = T)
data = as.matrix(data)
return( sum( (data - r)^2 ) )
}
每一列都是不同特征的整个样本,所以当我们计算每一列的均值时,它是一个特征的整个样本的均值。我之前的概念错误是结合这两个特征来计算总体平均值。
我正在尝试在 R Studio 中为我自己的 k-means 实现编写自己的总平方和、总平方和和介于平方和之间的函数。
我已经成功地编写了平方和内的函数,但是我在总平方和(以及 bss)方面遇到了困难。我得到的结果明显大于 R 自己的 kmeans 函数计算的结果。我很困惑,因为我完全遵循公式提供的内容。这是我的数据:
A =
36 3
73 3
30 3
49 3
47 11
47 11
0 7
46 5
16 3
52 4
0 8
21 3
0 4
57 6
31 5
0 6
40 3
31 5
38 4
0 5
59 4
61 6
48 7
29 2
0 4
19 4
19 3
48 9
48 4
21 5
其中每一列都是一个特征。这是我迄今为止为 tss 创建的函数:
tot_sumoSq <- function(data){
avg = mean( as.matrix(data) )
r = matrix(avg, nrow(data), ncol(data))
tot_sumoSq = sum( (data - r)^2 )
}
我收到结果24342.4,但是R给出13244.8。我完全错过了什么吗?
可能你的程序有问题。您从数据框中减去矩阵。使用以下 -
tot_sumoSq <- function(data){
data = as.matrix(data)
x = sum((data - mean(data))^2)
return(x)
}
我这边给出了正确答案。
后一个值是使用列平均值计算的。如果你用它来计算均值,你会得到相同的答案。
avg = colMeans(data)
r = matrix(avg, nrow(data), ncol(data), byrow=T)
[1] 13244.8
结合前两位评论员提供的解决方案,我找到了解决问题的方法。我知道我之前的错误是什么,并希望为未来的科学家们消除任何困惑。
tot_sumoSq <- function(data){
avg = colMeans(data)
r = matrix(avg, nrow(data), ncol(data), byrow = T)
data = as.matrix(data)
return( sum( (data - r)^2 ) )
}
每一列都是不同特征的整个样本,所以当我们计算每一列的均值时,它是一个特征的整个样本的均值。我之前的概念错误是结合这两个特征来计算总体平均值。