Это первый раз, когда я задаю вопрос.
Я пытаюсь найти лучший K
при запуске Knn
, но код, полученный от профессора, похоже, не отображает результатиз лучших K
и Rmse
.
Пыльник - это то, что я набрал на консоли.Я ценю помощь!
#rm(list=ls())
gc()
#setwd('/******/Desktop/Applied/isds 574/R')
dat = read.csv('cleaned.csv', stringsAsFactors=T, head=T)
#dropping Longtitude and Latitude
dat$longitude = NULL
dat$latitude = NULL
dat$X = NULL
#Factors
dat$ocean_proxy_dummy = as.factor(dat$ocean_proxy_dummy)
# divide the data into 2 sets: training and validation
set.seed(1)
id.train = sample(1:nrow(dat), nrow(dat)*.6)
id.test = setdiff(1:nrow(dat), id.train)
#KNN2
library(FNN)
Knn.reg.bestK = function(xtrain, xtest, ytrain, ytest, Kmax = 10) {
vec.rmse = rep(NA, Kmax)
for (K in 1:Kmax) {
yhat.test = Knn.reg(xtrain, xtest, ytrain, k)$pred
vec.rmse[K] = rmse(yhat.test, ytest)
}
list(K.opt = which.min(vec.rmse), rmse.min = min(vec.rmse), vec.rmse)
}