gpt4 book ai didi

python - R 中具有自定义距离函数的 knn

转载 作者:行者123 更新时间:2023-11-30 09:10:38 24 4
gpt4 key购买 nike

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

背景

详细说明我的问题:我的数据包含以下列

  • 起始纬度
  • 起始经度
  • 起始国家/地区
  • 结束纬度
  • 结束经度
  • 最终国家/地区
  • 开始+结束国家/地区
  • 交通工具
  • 距离
  • 价格

我想根据其他因素估算价格。距离函数需要包含半正矢距离来衡量起点和终点经纬度的相似度,因此我无法使用欧几里得或明可夫斯基等内置距离。

开放 Python 建议

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

最佳答案

经过一番搜索,我发现了一个名为 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")

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

关于python - R 中具有自定义距离函数的 knn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39920387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com