我有一个 200k 行 X 50 列的数据集。我正在尝试在其上使用knn模型,但性能存在巨大差异,具体取决于使用的变量(即,rsqd范围从 0.01(使用所有变量)到 0.98(仅使用 5 个变量))。
这种复合我的问题,因为现在我需要确定k 和使用哪些变量。
R 中是否有一个包可以帮助knn在调整时为模型选择变量k?我已经看过了rfe(),caret但它似乎只是为线性回归randomforest、、朴素贝叶斯等而构建的,但没有knn。
顺便说一句,我尝试手动构建一个循环来使用插入符号训练函数,如下所示:
for(i in 2:50){
knnFit <- train(x[,i],y,...) ## trains model using single variable
}
我的问题是knnFit$results打印所有结果并且knnFit$bestTune只打印k.
> data1 <- data.frame(col1=runif(20), col2=runif(20), col3=runif(20), col4=runif(20), col5=runif(20))
> bootControl <- trainControl(number = 1)
> knnGrid <- expand.grid(.k=c(2:5))
> set.seed(2)
> knnFit1 <- train(data1[,-c(1)], data1[,1]
+ , method = "knn", trControl = bootControl, verbose = FALSE,
+ tuneGrid = knnGrid )
> knnFit1
20 samples
4 predictors
No pre-processing
Resampling: Bootstrap (1 reps)
Summary of sample sizes: 20
Resampling results across tuning parameters:
k RMSE Rsquared
2 0.485 0.124
3 0.54 0.369
4 0.52 0.241
5 0.528 0.232
RMSE was used to select the optimal model using the smallest value.
The final value used for the model was k = 2.
> knnFit1$results
k RMSE Rsquared RMSESD RsquaredSD
1 2 0.4845428 0.1241031 NA NA
2 3 0.5401009 0.3690569 NA NA
3 4 0.5197262 0.2410814 NA NA
4 5 0.5277939 0.2317607 NA NA
> knnFit1$bestTune
.k
1 2
我需要一些方法来打印最佳单一性能模型的 RMSE/rsqd/其他指标(即,只是“R-Squared: .91”)。
有什么建议么?