在R

时间:2016-10-07 15:03:45

标签: python r machine-learning distance knn

我想用自定义距离函数应用k最近邻居。我还没有找到使用FNN或类等包传递此函数的方法。有没有办法将函数或距离矩阵传递给某个R包中的现有knn算法,还是必须从头开始编写?

背景

详细说明我的问题:我的数据包括

  • start latitude
  • 启动经度
  • 开始国家
  • 结束纬度
  • 结束经度
  • 结束国家
  • 开始+结束国家
  • 交通工具
  • 距离

我想根据其他因素估算价格。距离函数需要包括半径距离来测量起点和终点的纬度和经度的相似性,所以我不能使用像欧几里德或闵可夫斯基这样的内置距离。

打开Python建议

如果有人认为由于某种原因,使用一些奇特的软件包在Python中更容易做(在两种语言中提供相同的编程技能),我也非常愿意接受有关此内容的其他信息。

1 个答案:

答案 0 :(得分:1)

在搜索了一下之后,我找到了一个名为KODAMA的软件包确实交叉验证 10倍,并且似乎有一个knn预测函数knn.predict使用距离矩阵单独计算knn.dist函数。

似乎knn.dist函数的输出只是具有对称值且对角线设置为零的标准距离矩阵,类为Matrix。 所以我们可以单独创建一个,这些代码行是等价的:

kdist <- KODAMA::knn.dist(x)
kdist <- dist(x, upper=T, diag=T) %>% as.matrix # it also works
knn.predict(train, test, y ,kdist, k=3, agg.meth="majority")

您可以使用自定义距离矩阵进行尝试。 希望能帮助到你。