Cold <- matrix(c(1.89,3.76,2.47,4.76),2,2,byrow=TRUE)
X <- matrix(c(0,2,2,4,3,6),3,2,byrow=TRUE)
y <- matrix(c(1,5,6))
m <- 2;
R <- 2;
Ec <- 0.001;
p <- 1/(m-1)
C <- mat.or.vec(R,R)
M <- length(X[,1])
mu <- mat.or.vec(M,R)
#mu=matrix(,M,R)
Q1=0;Q2=0;
pl <- 1/(m-1)
F=0;
it <- 0;
ph <- 1;
repeat
{
####################
for (i in 1:M)
{
for (j in 1:R)
{
Q1=0;Q2=0;F=0
Q1 <- sum((X[i,]-Cold[j,])^2)
for (k in 1:R)
{
Q2 <- sum((X[i,]-Cold[k,])^2)
F=Q1/Q2+F
}
mu[i,j] <- solve(F)
}
}
####################
##########centre Update
B=mat.or.vec(1,2);
for (j in 1:R)
{
A=mat.or.vec(1,2);
for (i in 1:M)
{
A=X[i,]*mu[i,j]^m+A
#C=(t(mu)*X)/colSums(mu)
}
B=colSums(mu^m)
C[j,] <- A/B[j];
}
#########centre update end
ph <- abs(sqrt(sum((C - Cold)^2)))
Cold <- C
##################
if(ph < Ec)
{
break;
}
it <- it+1
}
##################
X
plot(X[,1],X[,2],pch=5,lwd=6,col = "blue",cex = .6)
for(i in 1:length(C[,1]))
{
points(C[i,1],C[i,2],pch=4,lwd=4)
}
library(MASS)
w <- rep(1,nrow(X))
X <- cbind(w,X)
X <- as.matrix(X)
para <- mat.or.vec(3,R)
#i<-0
h <- mat.or.vec(3,3)
a <- mat.or.vec(3,3)
b <- mat.or.vec(3,3)
for(i in 1:R)
#while (i<3)
{
h <- t(X)*(diag(mu[,i]))^2*X
a <- solve(t(X)*(diag(mu[,i]))^2*X)
b <- (t(X)*diag(mu[,i])^2)
para[,i] <- a*b*y
}
这是用于聚类的代码,它对数据进行聚类,效果很好,但是在计算规则结果的最后部分给了我一个错误,最终使我付出了代价。它显示了错误“ *中的错误” b * y:不一致的数组”,有人可以帮助我吗?
短语“可整合数组”是线性代数术语,表示“可以明智地一起使用的数组”。
例如,如果要将两个数组加在一起,则它们的大小必须相同。
事实上,由于在标准的数学运算符,+
,-
,*
,/
,^
,等操作元件逐元素,总是需要的阵列(或矩阵)为相同的大小。
对于(内部)矩阵乘法,%*%
第一个矩阵中的列数必须与第二个矩阵中的行数相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句