2013-10-17 34 views
1

我想爲KNN方法中的距離度量標識一組權重。我通過MATLAB的幫助閱讀,我發現有對反函數或平方倒數(WRT的距離)的權重然而用戶定義的權重必須是形式的函數:@ FNC 其中在matlab中定義KNN的權重

FCN是函數接受非負距離矩陣,並返回包含非負距離權重的相同大小的矩陣。例如,'逆向'相當於@(d)d。^( - 2)。

我已經定義的函數提供一組隨機權重:

function WGT=gene 
weights=round(rand(a,b)) 
WGT=T 
end 

然而,當我申請KNN的權重不會改變,均勻分佈。 任何人都可以幫助解決這個問題。 預先感謝您

回答

0

您的裝修代碼看起來像ClassificationKNN.fit(x, y, 'DistanceWeight', gene_weights)?舉例來說,我覺得你的意思以上就是

function w = gene_weights(x) 
    w = round(rand(size(x))); 
end 

或者更緊湊,你可以指定gene_weights = @(x) round(rand(size(x)));

+0

嗨馬克斯,謝謝您的回覆。我的擬合代碼是(fitness = ClassificationKNN.fit(train_attribute,train_class,'Numneighbors',4,'distanceweight',@ gene_weights)),它產生一組相同的權重。我刪除了「@」並將函數添加到主程序中,但權重仍然相同,就好像它沒有輸入函數一樣。 – IRIS

+0

你好。我有分類數據集,我可以使用我的分類數據集的代碼?謝謝 –