Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.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 knn大型数据集_R_Knn - Fatal编程技术网

R knn大型数据集

R knn大型数据集,r,knn,R,Knn,我试图在R中使用knn(使用了几个包(knnflex,class)来预测基于8个变量的违约概率。数据集大约是8列的100k行,但我的机器似乎难以处理10k行的样本。对数据集>50行(即iris)进行knn有什么建议吗 编辑: 澄清一下有几个问题 1) 类和knnflex包中的示例有点不清楚,我很好奇是否有类似于randomForest包的实现,在该实现中,您为其提供了要预测的变量和要用于训练模型的数据: RF <- randomForest(x, y, ntree, type,...)

我试图在R中使用knn(使用了几个包(
knnflex
class
)来预测基于8个变量的违约概率。数据集大约是8列的100k行,但我的机器似乎难以处理10k行的样本。对数据集>50行(即
iris
)进行knn有什么建议吗

编辑:

澄清一下有几个问题

1)
knnflex
包中的示例有点不清楚,我很好奇是否有类似于randomForest包的实现,在该实现中,您为其提供了要预测的变量和要用于训练模型的数据:

RF <- randomForest(x, y, ntree, type,...) 

RF之所以
knn
(在类中)要求提供训练和测试数据,是因为如果没有,它将返回的“模型”将只是训练数据本身

训练数据就是模型

为了进行预测,
knn
计算测试观测值和每个训练观测值之间的距离(尽管我认为对于不检查每个距离的超大数据集,有一些奇特的版本)。因此,在您进行测试观察之前,并没有真正的模型可供构建

ipred软件包提供了与您描述的一样结构化的功能,但是如果您查看这些功能,您会发现“培训”功能基本上没有任何变化。所有的工作都在“预测”功能中。它们实际上是用来包装的,用于使用交叉验证进行误差估计

至于案例数量的限制,这将取决于您有多少物理内存。如果你的内存分配出现错误,那么你要么需要减少其他地方的内存使用(关闭应用程序等),要么购买更多的内存,要么购买一台新电脑,等等


类中的
knn
函数运行良好,训练和测试数据集为10k行或更多,尽管我有8gb的RAM。另外,我怀疑类中的
knn
将比knnflex中的knn更快,但我还没有做过广泛的测试

谢谢你的建议。像big.matrix或ff这样的东西是有效的解决方法吗?@acesnap可能;实际上,我对这些工具没有太多经验。如果我站在你的立场上,我会简单地将我的测试集分成最大的块,
knn
将处理这些块,并一次一块地进行预测。(并且买更多的RAM;它非常便宜!)你说的“类”版本更好是对的。只是需要对格式做一点修改。再次感谢您的帮助和解释。只是想知道,您最终在训练集大小方面将这项工作推进了多远?@ktdrv:我相信我已经完成了完整的数据集。出于两个原因,我建议在“caret”包中使用knn。首先,它允许调整“k”参数。其次,这是我使用过的最快的knn模型,它允许并行化(尽管我没有看到knn的东西有很大的提升)。下面是一组很好的解释和示例,可以帮助您启动并运行:
pred <- predict(RF, testData)