0
我已經用下面的代碼使用FNN Package:如何修改R中knn返回的距離?
k <- knn(train, test, labels, k = 10, algorithm="cover_tree")
我能看一下由調用返回的數據使用下面的代碼來KNN:
> attr(k, "nn.dist")[1,]
[1] 1385.398 1687.901 1722.884 1846.694 1978.250 1998.157 2003.518 2004.494 2054.382 2059.128
> attr(k, "nn.index")[1,]
[1] 983 362 170 303 914 843 480 489 474 355
我想do是根據nn.index
中的值修改nn.dist
中的值。
我知道這可能沒有意義,但爲了辯論的緣故,我該如何去設置nn.dist
到nn.dist * nn.index/1000
的每個值?
所以attr(k, "nn.dist")[1,1]
將從1385.398
去1385.398*983/1000
(1361.846)
和 attr(k, "nn.dist")[1,2]
將從1687.901
去1687.901*362/1000
(611.02)等
我可以用下面做一次這個代碼:
attr(k, "nn.dist")[1,1] = attr(k, "nn.dist")[1,1]*attr(k, "nn.index")[1,1]/1000
但我需要一種方法來做到這一點,每一個元素,而不必每次寫...