均值和方差维度不匹配
Mean and variance dimension mismatch
我需要计算训练集的均值和方差以进行异常检测,但一直出现维度不匹配错误。
mean_train = 1/(num_train )* sum(Xtrain);
var_train = 1/(num_train )* sum(Xtrain - mean_train).^2;
首先显示所有数据,因为我们无法重现你的错误。
我建议你因为这个而犯这个错误:
mean_train
或 num_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))
我需要计算训练集的均值和方差以进行异常检测,但一直出现维度不匹配错误。
mean_train = 1/(num_train )* sum(Xtrain);
var_train = 1/(num_train )* sum(Xtrain - mean_train).^2;
首先显示所有数据,因为我们无法重现你的错误。
我建议你因为这个而犯这个错误:
mean_train
或 num_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))