均值和方差维度不匹配

Mean and variance dimension mismatch

我需要计算训练集的均值和方差以进行异常检测,但一直出现维度不匹配错误。

mean_train = 1/(num_train )* sum(Xtrain);
var_train =  1/(num_train )* sum(Xtrain - mean_train).^2;

首先显示所有数据,因为我们无法重现你的错误。 我建议你因为这个而犯这个错误: mean_trainnum_train 是一个向量,然后我们不能简单地将它与 Xtrain 相乘或相减。

但是给你的答案是: 只需使用 build-in Matlab 函数 mean and var。这让你可以这样使用它:

mean(Xtrain)

避免使用像 num_train.

这样的次要变量

我检查了你的代码,发现错误: Xtrain 是一个 100x2 的数组。并在其上使用 sum returns 1x2 数组!您可以在帮助中阅读相关内容:

If A is a matrix, then sum(A) returns a row vector containing the sum of each column.

所以你的下一步行动:

mean_train = 1/(num_train )* sum(Xtrain);

returns 1x2 数组和 matlab 无法做到这一点:Xtrain - mean_train.

答案很简单: 像这样使用 sum 两次:sum(sum(Xtrain))