2013-10-17 4 views
1

KNN 방법에서 거리 측정에 대한 가중치 세트를 식별하고 싶습니다. 나는 MATLAB의 도움을 통해 읽고 나는 그러나 역에 대한 기능이나 제곱 역 (거리를 WRT) 무게 사용자 정의 무게 형태의 함수해야 있다는 것을 발견 : FNC @matlab에 KNN에 대한 가중치를 정의

FCN은 어디 함수는 음수가 아닌 거리의 행렬을 받아들이고 음수가 아닌 거리 가중치를 포함하는 동일한 크기의 행렬을 반환합니다. 예를 들어 'inversesquared'는 @ (d) d.^(- 2)와 같습니다.

나는 무게의 임의의 집합을 제공하는 기능을 정의했다 : 나는 KNN를 적용 할 때

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

, 가중치가 변경되지 않습니다를 동등하게 분배됩니다. 아무도이 문제를 도와 드릴 수 있습니다. 미리 감사합니다.

답변

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

안녕하세요. 나는 범주 형 데이터 집합을 가지고 있는데, 그 범주 형 데이터 집합에 해당 코드를 사용할 수 있습니까? 감사 –