我需要计算训练集的均值和方差以进行异常检测,但会不断出现尺寸失配误差。
mean_train = 1/(num_train )* sum(Xtrain);
var_train = 1/(num_train )* sum(Xtrain - mean_train).^2;
首先显示所有数据,因为我们无法重现您的错误。我建议您这样做是由于以下错误:mean_train
或num_train
是向量,因此我们不能简单地将其乘以或减去Xtrain
。
但是您的答案:只需使用内置的Matlab函数mean和var。这使您可以通过这种方式使用它:
mean(Xtrain)
避免使用诸如num_train
之类的辅助变量。
我检查了您的代码,发现错误:Xtrain
是一个100x2的数组。并在其上使用sum
返回1x2数组!您可以在帮助中阅读此内容:
如果A是矩阵,则sum(A)返回包含和的行向量每列的内容。
因此,您的下一个动作:
mean_train = 1/(num_train )* sum(Xtrain);
返回1x2数组,matlab无法做到这一点:Xtrain - mean_train
。
答案很简单:像这样两次使用sum
:sum(sum(Xtrain))