НК, введенные путем принуждения с использованием набора данных биопсии - пример Кнна - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь запустить код, используя набор данных Biopsy из R. Идея заключается в создании машинного обучения Knn.

Я ценю вашу помощь.

Я пытался запустить код, но получил несколько предупреждений. например НС, введенные по принуждению.

cc = c(1:100)*0
for (i in 1:100) {

L<- sample(1:nrow(biopsy_sem_NA_nas_Linhas),round(nrow(biopsy_sem_NA_nas_Linhas)/3))

train_sem_NA_Linhas = biopsy_sem_NA_nas_Linhas[-L,2:11]
test_sem_NA_Linhas = biopsy_sem_NA_nas_Linhas[L,2:11]

cl = factor( biopsy_sem_NA_nas_Linhas[-L, 11])
fit = knn(train_sem_NA_Linhas, test_sem_NA_Linhas, cl, k = 5)

c_matrix = table(fit[1:length(L)], factor(biopsy_sem_NA_nas_Linhas[L, 11]))
acc[i] = cat('Accurancy:', sum(diag(c_matrix))/sum(c_matrix)*100, '%')
}
mean(acc)

Появились следующие ошибки:

Ошибка в knn (train_sem_NA_Linhas, test_sem_NA_Linhas, cl, k = 5): NA / NaN / Inf в вызове внешней функции (аргумент 6) Дополнительно: Предупреждающие сообщения: 1: в knn (train_sem_NA_Linhas, test_sem_NA_Linhas, cl, k = 5): НС введены по принуждению 2: В knn (train_sem_NA_Linhas, test_sem_NA_Linhas, cl, k = 5): НС, введенные по принуждению

1 Ответ

0 голосов
/ 23 мая 2019

Кадры данных train и test не должны иметь последний столбец коэффициентов. Коэффициент указан только в cl. Вы можете проверить это в документации по функции knn.

Я удалил часть cat, потому что вы не можете взять среднее значение для строки. Но если вам действительно нужен список с сообщениями, попробуйте вместо этого использовать paste.

library(MASS)
library(tidyverse)
library(class)

data("biopsy")

biopsy_sem_NA_nas_Linhas <-  biopsy %>% 
  na.omit() #creatind the biopsy data "sem NA"

acc = c(1:100)*0
for (i in 1:100) {

  L<- sample(1:nrow(biopsy_sem_NA_nas_Linhas),round(nrow(biopsy_sem_NA_nas_Linhas)/3))
  #without the last column, the one with the factors
  train_sem_NA_Linhas = biopsy_sem_NA_nas_Linhas[-L,2:10] 
  test_sem_NA_Linhas = biopsy_sem_NA_nas_Linhas[L,2:10]

  cl = factor( biopsy_sem_NA_nas_Linhas[-L, 11])
  fit = knn(train_sem_NA_Linhas, test_sem_NA_Linhas, cl = cl, k = 5)

  c_matrix = table(fit[1:length(L)], factor(biopsy_sem_NA_nas_Linhas[L, 11]))
  acc[i] = sum(diag(c_matrix))/sum(c_matrix)*100
}
mean(acc)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...