Я знаком с r
пакетом caret
, но, исходя из другого языка программирования, это меня смутило.Поезд тестовый раскол в пакете `t`` `` t``
То, что я хочу сделать сейчас, это довольно простой рабочий машинного обучения, которая:
- Возьмите тренировочный набор, в моем случае радужной оболочки DataSet
- разделить его на обучения и тестового набора (80-20 раскол)
- Для каждого
k
из1
в20
, обучатьk
ближайший сосед классификатор обучения на набор - проверить его на тест набор
Я понимаю, как сделать первую часть, так как iris
уже загружен. Затем, вторая часть делается вызовом
a <- createDataPartition(iris$Species, list=FALSE)
training <- iris[a,]
test <- iris[-a,]
Теперь, я знаю, что я могу тренировать модель по телефону
library(caret)
knnFit <- train()
knnFit <- train(Species~., data=training, method="knn")
Однако, это приведет к r
уже выполняет некоторую оптимизацию параметров k
. Конечно, я могу ограничить то, что значения k
метод должен попробовать, с чем-то вроде
knnFit <- train(Species~., data=training, method="knn", tuneGrid=data.frame(k=1:20))
, который работает просто отлично, но он все еще не точно, что я хочу, чтобы это сделать. Этот код теперь будет делать для каждого k
:
- взять загрузочный образец из
test
. - ослов производительность методы
k
-nn с использованием данного образца
То, что я хочу, чтобы это сделать:
- Для каждого
k
, обучение модели на тот же набор поезда, который я построенный ранее - Устанавливает производительность ** на тот же набор тестов, который я создал ранее.
Так что мне нужно что-то вроде
knnFit <- train(Species~., training_data=training, test_data=test, method="knn", tuneGrid=data.frame(k=1:20))
, но это, конечно, не работает.
Я понимаю, что я должен сделать что-то с параметром trainControl
, но я вижу его возможные методы:
"boot", "boot632", "cv", "repeatedcv", "LOOCV", "LGOCV", "none"
и ни один из них не кажется, делать то, что я хочу.
Похоже, это то, что я хотел, да. Спасибо! – 5xum