【发布时间】:2012-01-03 08:45:08
【问题描述】:
我正在尝试在 R 中使用 knn(使用了几个包(knnflex,class))来预测基于 8 个变量的默认概率。数据集大约有 8 列的 100k 行,但我的机器似乎很难处理 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 行上使用模型的方法。
【问题讨论】:
-
只是想知道,就训练集大小而言,您最终将其推进了多远?
-
@ktdrv:我相信我设法完成了完整的数据集。我会推荐在 'caret' 包中实现 knn 有两个原因。首先,它允许调整“k”参数。其次,它是我用过的最快的 knn 模型,它允许并行化(尽管我没有看到 knn 的东西有很大的提升)。这里有一套很好的解释和例子来启动和运行:jstatsoft.org/v28/i05/paper