gpt4 book ai didi

R knn 大型数据集

转载 作者:行者123 更新时间:2023-12-04 17:56:27 27 4
gpt4 key购买 nike

我试图在 R 中使用 knn(使用了几个包( knnflexclass ))来预测基于 8 个变量的违约概率。数据集大约有 100k 行 8 列,但我的机器似乎很难处理 10k 行的样本。在数据集 > 50 行(即 iris)上执行 knn 的任何建议?

编辑:

澄清有几个问题。

1) class中的例子和 knnflex包有点不清楚,我很好奇是否有一些类似于 randomForest 包的实现,你给它你想要预测的变量和你想要用来训练模型的数据:

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

然后转过身,用模型用测试数据集预测数据:
pred <- predict(RF, testData)

2) 我不太明白为什么 knn想要用于构建模型的训练和测试数据。据我所知,该包创建了一个矩阵 ~ 到 nrows(trainingData)^2这似乎也是预测数据大小的上限。我使用 5000 行创建了一个模型(在此之上 # 我遇到了内存分配错误)并且无法预测 > 5000 行的测试集。因此我需要:

a) 找到一种在训练集中使用 > 5000 行的方法

或者

b) 找到一种在完整的 100k 行上使用模型的方法。

最佳答案

原因knn (在 类(class) 中)要求训练和测试数据是,如果没有,它会返回的“模型”只是训练数据本身。

训练数据就是模型。

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

ipred package 提供了如您所描述的那样结构化的功能,但是如果您查看它们,您会发现“训练”功能中基本上没有发生任何事情。所有的工作都在“预测”功能中。这些实际上是用作包装器,用于使用交叉验证进行错误估计。

至于案例数量的限制,这将取决于您拥有多少物理内存。如果您遇到内存分配错误,那么您要么需要减少其他地方的 RAM 使用量(关闭应用程序等),购买更多 RAM,购买新计算机等。
knn函数在 类(class)尽管我有 8GB 的​​ RAM,但对于 10k 行或更多行的训练和测试数据集对我来说运行良好。另外,我怀疑 knn类(class)将比 更快knnflex ,但我还没有做过广泛的测试。

关于R knn 大型数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8218804/

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