Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何查看R中的最近邻?_R_Kaggle - Fatal编程技术网

如何查看R中的最近邻?

如何查看R中的最近邻?,r,kaggle,R,Kaggle,首先,我要说的是,我没有R、KNN或数据科学方面的经验。我最近发现并一直在玩竞赛/教程 在本教程中,他们提供了一些示例代码,帮助您开始基本提交: # makes the KNN submission library(FNN) train <- read.csv("c:/Development/data/digits/train.csv", header=TRUE) test <- read.csv("c:/Development/data/digits/test.csv", he

首先,我要说的是,我没有R、KNN或数据科学方面的经验。我最近发现并一直在玩竞赛/教程

在本教程中,他们提供了一些示例代码,帮助您开始基本提交:

# makes the KNN submission

library(FNN)

train <- read.csv("c:/Development/data/digits/train.csv", header=TRUE)
test <- read.csv("c:/Development/data/digits/test.csv", header=TRUE)

labels <- train[,1]
train <- train[,-1]

results <- (0:9)[knn(train, test, labels, k = 10, algorithm="cover_tree")]

write(results, file="knn_benchmark.csv", ncolumns=1) 
#提交KNN
图书馆(FNN)
训练1)您可以获得给定行的最近邻,如下所示:

k <- knn(train, test, labels, k = 10, algorithm="cover_tree")
indices <- attr(k, "nn.index")
(您将获得10个最近的邻居,因为您选择了
k=10
)。例如,如果仅使用训练和测试集的前1000行运行(以使计算更容易):

然后,您可以看到距离第20个训练点最近的10个点的标签,如下所示:

closest.labels = apply(indices, 2, function(col) labels[col])
closest.labels[20, ]
# [1] 0 0 0 0 0 0 0 0 0 0
dists = attr(k, "nn.dist")
dists[20, ]
# output:
# [1] 1238.777 1243.581 1323.538 1398.060 1503.371 1529.660 1538.128 1609.730
# [9] 1630.910 1667.014
这表示与第20行最近的所有10个点都在标记为0的组中
knn
只需通过多数票选择标签(随机打破平局),但如果您愿意,您可以选择某种加权方案

ETA:如果您有兴趣在投票方案中对更接近的元素进行更重的加权,请注意,您还可以通过以下方式获得到每个k邻居的距离:

closest.labels = apply(indices, 2, function(col) labels[col])
closest.labels[20, ]
# [1] 0 0 0 0 0 0 0 0 0 0
dists = attr(k, "nn.dist")
dists[20, ]
# output:
# [1] 1238.777 1243.581 1323.538 1398.060 1503.371 1529.660 1538.128 1609.730
# [9] 1630.910 1667.014

非常好的回应,谢谢!我有几个问题。任何时候我试图打印
索引
时,它都返回null,我应该做与您的示例不同的事情吗?你能推荐一些资源来研究更多关于创建自定义权重方案的信息吗?或者有人创造了一个我可以看到的例子?这很奇怪。如果您执行
打印(k)
,您会得到什么?至于其他的加权方案——你会像我在谷歌上搜索“KNN加权”一样幸运。但是我在我的答案中写了更多关于权重的内容。好吧,为了澄清我实际上使用的是
结果
,而不是
k
。我想这没什么区别,但我想我应该把它扔出去。当我打印(结果)
时,它会打印出最终写入csv文件的1000个元素。看起来我做错了什么。我准确地复制/粘贴了您的代码,并且成功了。很抱歉造成混淆。对-您所做的只是一行
结果