Я использую модель KNN для классификации набора данных pendigits, набора данных координат, которые указывают нарисованное число.Я довольно уверен, что правильно построил модель, но застрял на перекрестной проверке.
Посмотрел много примеров, но обнаружил, что они похожи на то, что у меня есть, или классифицируют целые числа вместо целых чисел.
set.seed(2)
labels = pendigits.train$Number_Drawn
initial_model <- knn(
train=pendigits.train, test=pendigits.test, cl=labels, k=10
)
table(pendigits.test$Number_Drawn, initial_model)
knnFit_model <- train(
pendigits.train, labels,
method = "knn",
preProcess = c("center", "scale"),
tuneLength = 10,
trControl = trainControl(method = "cv")
)
cross_validation_prediction <- predict(
knnFit_model,
newdata = pendigits.test
)
table(cross_validation_prediction)
0 1 1,2 1,4 1,5 1,6 1,8 2 2,2 2,4 2,6 33.4 3.8 4 4.2 4.6 4.8 5 5.2 5.4 5.8 6 6.4 7 7.2 7.4 7.8 8 9 354 329 17 14 1 3 8 360 1 3 1 335 2 1 353 2 7 2 331 1 1 2 336 2 351 8 6 3 332 332
Я ожидаю, что таблица (cross_validation_prediction) выдаст мне что-то вроде вывода с таблицей (pendigits.test $ Number_Drawn, initial_model)
0 1 2 3 4 5 6 7 8 9
0 351 0 0 0 0 0 9 0 2 1
1 0 344 19 0 1 0 0 0 0 0
2 0 1 363 0 0 0 0 0 0 0
3 0 1 0 334 0 0 0 0 0 1
4 0 0 0 0 353 10 1 0 0 0
5 0 0 0 7 0 327 0 0 0 1
6 0 0 0 0 0 0 336 0 0 0
7 0 14 1 0 0 0 0 349 0 0
8 1 0 0 0 0 1 0 0 334 0
9 0 2 0 8 0 0 0 4 1 321
, но я получу вывод
0 1 1.2 1.4 1.5 1.6 1.8 2 2.2 2.4 2.6 3 3.4 3.8 4 4.2 4.6 4.8
5 5.2 5.4 5.8 6 6.4 7 7.2 7.4 7.8 8 9
354 329 17 14 1 3 8 360 1 3 1 335 2 1 353 2 7 2
331 1 1 2 336 2 351 8 6 3 332 332
Я не очень понимаю, почему я получаю разные результаты.