k-NN、SVM和RF模型使用R中的插入符号包花费的时间太长
我有一个数据框架,在五列上有大约120万次观察,样本如下:k-NN、SVM和RF模型使用R中的插入符号包花费的时间太长,r,model,r-caret,R,Model,R Caret,我有一个数据框架,在五列上有大约120万次观察,样本如下: plate_x plate_z release_speed release_spin_rate Whiff 1 0.16 3.92 91.7 2195 0 2 0.21 3.37 91.2 2161 0 3 -1.25 3.26 94.0 223
plate_x plate_z release_speed release_spin_rate Whiff
1 0.16 3.92 91.7 2195 0
2 0.21 3.37 91.2 2161 0
3 -1.25 3.26 94.0 2233 0
4 -0.86 2.17 94.2 2220 0
5 -0.07 1.89 93.4 2217 0
6 -0.47 3.42 91.3 2215 0
7 0.50 4.25 92.5 2276 0
8 -0.65 3.01 91.3 2256 0
9 -0.27 3.26 91.5 2179 0
10 0.63 3.89 92.2 2175 0
11 0.35 2.90 95.3 2412 0
12 -0.60 3.84 85.8 2097 0
13 -0.68 2.18 95.7 2493 0
14 -0.24 3.79 94.4 2058 1
15 0.26 4.50 95.6 2533 0
16 -0.62 2.68 95.1 2006 0
17 0.60 3.34 94.2 2026 0
18 -0.69 1.83 95.0 2671 0
19 -0.84 1.81 94.0 2475 0
20 -1.23 3.91 86.9 2211 0
当我运行LDA时,大约需要5分钟,而推车大约需要10-15分钟。
使用80%的列车/20%的测试,使用以下代码:
validation_index <- createDataPartition(dataset$Whiff, p=0.80, list=FALSE)
validation <- dataset[-validation_index,]
dataset <- dataset[validation_index,]
validation\u index您可以在caret
包中并行处理,这可以大大加快速度,具体取决于您有多少内核
例如,在开始训练之前,首先设置核心数
注:|>
是从R 4.1.0开始作为基础管道新增的。如果没有此版本,则只需嵌套makePSOCKcluster(detectCores())
或使用magrittr
中的%%
管道操作符即可
library(doParallel)
cl <- parallel::detectCores() |>
parallel::makePSOCKcluster()
# this will use all cores, consider doing length(cl) - some number
doParallel::registerDoParallel(cl, cores = length(cl))
库(双并行)
氯
parallel::makePSOCKcluster()
这将使用所有的核,考虑长度(CL)-一些数字。
双平行::寄存器双平行(cl,芯=长度(cl))
您将在caret::trainControl
的文档中看到,参数allowParallel
默认为TRUE
,所以我运行这个,然后以与前面相同的方式运行模型?或者我是否需要调整先前的代码以考虑并行。设置此设置后,作为一个测试运行一个序列。当它运行时,检查您的计算机的CPU使用情况,它应该会出现峰值,因为许多内核都在朝着这个方向发展。您每次为knn、svm和rf安装大约100个模型。。所以第一个问题是,这是卡里吗?
library(doParallel)
cl <- parallel::detectCores() |>
parallel::makePSOCKcluster()
# this will use all cores, consider doing length(cl) - some number
doParallel::registerDoParallel(cl, cores = length(cl))