我正在开发比类库提供的更全面的 KNN 版本。我希望添加一些小内容,例如:
现在,函数的输入几乎总是数据帧,但经过一些操作(即制作假人)后,它们将完全是数字。在继续计算距离等之前将中间输出转换为矩阵,然后将其转换回数据帧并将预测添加到其中是否值得?
KNN_pred = function(train,test,target){
distance = test%>%
rbind(train)%>%
**as.matrix()%>%**
dist()%>%
as.matrix()%>%
**as_tibble()%>%**
select(-seq(1,nrow(test)))%>%
slice_head(n = nrow(test))%>%
raise_to_power(-2)
}
这是我正在尝试做的一小部分摘录。最有争议的部分用星号包围。我可以计算距离,而无需先将其转换为矩阵。在计算距离后将其转换为 tibble 也是可选的,但我更喜欢 dplyr 而不是基本 R 子集,但它可以保留为矩阵。
顺便提一下,您能否推荐一些数据集来测试其准确性和速度?到目前为止,我一直在使用 Iris 数据集,但在这方面取得好的结果似乎并不那么具有挑战性。