我需要計算異常檢測訓練集的均值和方差,但不斷收到維度不匹配誤差。平均值和方差維度不匹配
mean_train = 1/(num_train)* sum(Xtrain);
var_train = 1/(num_train)* sum(Xtrain - mean_train).^2;
我需要計算異常檢測訓練集的均值和方差,但不斷收到維度不匹配誤差。平均值和方差維度不匹配
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是一個矩陣,則總和(A)返回一個包含每個列的總和 行向量。
所以,你的下一個動作:
mean_train = 1/(num_train)* sum(Xtrain);
回報1x2的陣列和MATLAB不能讓這樣的:Xtrain - mean_train
。
答案很簡單: 使用sum
兩次這樣的:sum(sum(Xtrain))
完整的代碼可以在這裏找到: http://cornelis.website/code/Anomaly.m 代碼測試可以在這裏找到: http://cornelis.website/code/test.m –
@JeandeToit我檢查了你的代碼,發現錯誤。看看我編輯的答案! –
嘗試看變量的大小和調試 – dnit13