我需要计算异常检测训练集的均值和方差,但不断得到尺寸不匹配误差。
mean_train = 1/(num_train )* sum(Xtrain);
var_train = 1/(num_train )* sum(Xtrain - mean_train).^2;
答案 0 :(得分:0)
首先显示所有数据,因为我们无法重现您的错误。
我建议你因为这个错误:
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))