Performance 在预测KNN插补时,如何提高计算时间?

Performance 在预测KNN插补时,如何提高计算时间?,performance,r-caret,knn,imputation,Performance,R Caret,Knn,Imputation,我觉得我的数据集的运行时间非常慢,代码如下: library(caret) library(data.table) knnImputeValues <- preProcess(mainData[trainingRows, imputeColumns], method = c("zv", "knnImpute")) knnTransformed <- predict(knnImputeValues, mainData[ 1:1000, imputeCol

我觉得我的数据集的运行时间非常慢,代码如下:

    library(caret)
    library(data.table)
    knnImputeValues <- preProcess(mainData[trainingRows, imputeColumns], method = c("zv", "knnImpute"))
    knnTransformed <- predict(knnImputeValues, mainData[ 1:1000, imputeColumns])
那么,是我做错了什么,还是这是运行此程序所需时间的典型情况?如果你从信封背面推断(我知道这并不完全准确),你会得到什么样的33天

而且看起来系统时间很短,用户时间很长,这正常吗

我的电脑是一台笔记本电脑,采用Intel(R)Core(TM)i5-6300U CPU@2.40Ghz处理器

此外,这会提高predict函数的运行时间吗

cl <- makeCluster(4)
registerDoParallel()

cl您可以通过
插补
软件包和使用可从以下位置安装的檐篷来加快速度:

檐篷使用廉价的距离度量——在本例中是距离数据平均向量的距离——来获得近似的邻居。一般来说,我们希望每个檐篷的尺寸小于100k,因此对于1.8M的行,我们将使用20个檐篷:

library("imputation")
to_impute <- mainData[trainingRows, imputeColumns] ## OP undefined
imputed <- kNN_impute(to_impute, k= 10, q= 2, verbose= TRUE, 
                      parallel= TRUE, n_canopies= 20)

欢迎来到SO。请提供您在帖子中使用的软件包。kNN依赖于O(n^2)的距离计算。你有180万行。。。您可以使用多种方法,例如近似kNN和檐篷。你需要澄清你的问题,以获得更具体的答案。我补充了我希望更清楚的问题,谢谢你的回答。近似knn或檐篷是否可用于插入符号预处理?另外,1000秒完成15000行对您来说似乎是正确的吗?提高KNN性能的一个标准方法是将参考点嵌入到搜索树中(我建议使用VPS树数据结构,因为它不太容易出现维度诅咒问题),从而降低最佳邻域搜索的复杂性。也就是说,我建议KNN不要进行缺失数据插补。你最好训练一个去噪自动编码器或RBM。你需要花一天的时间把这件事训练到一个像样的水平。插补本身将很快起作用。
cl <- makeCluster(4)
registerDoParallel()
Sys.setenv("PKG_CXXFLAGS"="-std=c++0x")
devtools::install_github("alexwhitworth/imputation")
library("imputation")
to_impute <- mainData[trainingRows, imputeColumns] ## OP undefined
imputed <- kNN_impute(to_impute, k= 10, q= 2, verbose= TRUE, 
                      parallel= TRUE, n_canopies= 20)
# note this example data is too small for canopies to be useful
# meant solely to illustrate
set.seed(2143L)
x1 <- matrix(rnorm(1000), 100, 10)
x1[sample(1:1000, size= 50, replace= FALSE)] <- NA
x_imp <- kNN_impute(x1, k=5, q=2, n_canopies= 10)
sum(is.na(x_imp[[1]])) # 0

# with fully missing rows
x2 <- x1; x2[5,] <- NA
x_imp <- kNN_impute(x2, k=5, q=2, n_canopies= 10)
[1] "Computing canopies kNN solution provided within canopies"
[1] "Canopies complete... calculating kNN."
row(s) 1 are entirely missing. 
                     These row(s)' values will be imputed to column means.
Warning message:
In FUN(X[[i]], ...) :
  Rows with entirely missing values imputed to column means.