После запуска модели knn следующим образом: pred_norm <- knn(train_norm, test_norm, cl = train_norm$ef_scale, k = k)
Я пытаюсь создать таблицу результатов вывода, например, так: tab_norm <- table(pred_norm, 5*test_norm$ef_scale)
Я умножил 5 * test_norm, потому что перед нормализацией данные были нормализованы, а исходными данными для этого столбца были целые числа 0-5. Это произвело эту таблицу:
pred_norm 0 1 2 3 4 5
0 5249 0 0 0 0 0
0.2 38 3897 136 1 0 0
0.4 0 0 1523 257 1 0
0.6 0 0 0 211 72 0
0.8 0 0 0 0 5 6
1 0 0 0 0 0 0
Это преобразовало нормализованные 0, 0.2, ..., 1 обратно в исходные 0-5, но когда я попытался умножить pred_norm, используя 5 * таким же образом, Я получил это предупреждение:
В Ops.factor (5, pred_norm): '*' не имеет значения для факторов.
Я пытался использовать pred_norm <- as.numeric(pred_norm)
для преобразования это целое число, и оно позволило мне преобразовать числа, но оно опустило 0 и переместило все строки на одну, объединяя 4 и 5 в один ряд. То же самое произошло, когда я попытался использовать pred_norm <- as.integer(pred_norm)
Обе эти таблицы дали такие таблицы:
pred_norm 0 1 2 3 4 5
1 5249 0 0 0 0 0
2 38 3897 136 1 0 0
3 0 0 1523 257 1 0
4 0 0 0 211 72 0
5 0 0 0 0 5 6
У кого-нибудь есть предложения, как мне преобразовать pred_norm, чтобы он будет 0-5 вместо десятичных от 0-1 или целых от 1-5?