R knn大数据集

时间:2011-11-21 21:30:51

标签: r knn

我正在尝试使用kn中的kn(使用多个包(knnflexclass))来预测基于8个变量的默认概率。数据集大约是100k行的8列,但是我的机器似乎很难处理10k行的样本。有关在数据集上执行操作的任何建议> 50行(即iris)?

编辑:

澄清有几个问题。

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

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

然后转身并使用模型使用测试数据集预测数据:

pred <- predict(RF, testData)

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

a)找到一种使用方法&gt;训练集中的5000行

b)找到在完整的100k线上使用该模型的方法。

1 个答案:

答案 0 :(得分:8)

knn(在中)询问培训和测试数据的原因是,如果没有,那么它返回的“模型”将只是培训数据本身。

训练数据 模型。

为了进行预测,knn计算测试观察与每次训练观察之间的距离(尽管我认为有些奇特的版本适用于无法检查每个的大型数据集距离)。因此,在您进行测试观察之前,实际上并没有建立模型。

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

就案件数量的限制而言,这将取决于您拥有多少物理内存。如果您遇到内存分配错误,那么您需要减少其他地方的RAM使用率(关闭应用程序等),购买更多内存,购买新计算机等。

中的knn函数运行正常,训练和测试数据集为10k行或更多,尽管我有8GB的RAM。此外,我怀疑中的knn将比 knnflex 更快,但我还没有进行过广泛的测试。