我是使用R语言的数据科学初学者,无法解决这个错误,我使用的是前列腺癌数据集。错误出现在prc_test_pred处,显示错误信息为:在 knn(train = prc_train, test = prc_test, cl = prc_train_labels, : 不允许有缺失值。
stringsAsFactors = FALSE str(prc) prc <- prc[-1] #从数据集中移除第一个变量(id)table(prc$diagnosis_result) #帮助我们获取患者数量prc$diagnosis <- factor(prc$diagnosis_result, levels = c("B", "M"), labels = c("良性", "恶性")) #重命名round(prop.table(table(prc$diagnosis)) * 100, digits = 1) #以百分比形式给出结果,保留一位小数normalize <- function(x) { return ((x - min(x)) / (max(x) - min(x))) } #非常重要的步骤(归一化为共同尺度)prc_n <- as.data.frame(lapply(prc[2:9], normalize))summary(prc_n$radius)prc_train <- prc_n[1:65,]prc_test <- prc_n[66:100,]prc_train_labels <- prc[1:65, 1]prc_test_labels <- prc[66:100, 1] library(class)prc_test_pred <- knn(train = prc_train, test = prc_test, cl = prc_train_labels,k=10)library(gmodels)CrossTable(x=prc_test_labels, y=prc_test_pred, prop.chisq=FALSE) ```
回答:
我不确定你遇到了什么问题。可能是你读取csv
文件的第一行出了问题。为了让你能够重现,这里是一个简单的使用KNN
的分类器,使用了你代码中除第一行之外的所有代码。
#prc <- read.csv("https://raw.githubusercontent.com/duttashi/learnr/master/data/misc/Prostate_Cancer.csv", header = TRUE, stringsAsFactors = FALSE)prc <- prc[-1] prc$diagnosis <- factor(prc$diagnosis_result, levels = c("B", "M"), labels = c("良性", "恶性"))normalize <- function(x) { return ((x - min(x)) / (max(x) - min(x))) } prc_n <- as.data.frame(lapply(prc[2:9], normalize))prc_train <- prc_n[1:65,]prc_test <- prc_n[66:100,]prc_train_labels <- prc[1:65, 1]prc_test_labels <- prc[66:100, 1] library(class)prc_test_pred <- knn(train = prc_train, test = prc_test, cl = prc_train_labels,k=10)library(gmodels)CrossTable(x=prc_test_labels, y=prc_test_pred, prop.chisq=FALSE) # -------------------------------------------------------------------------# Cell Contents# |-------------------------|# | N |# | N / Row Total |# | N / Col Total |# | N / Table Total |# |-------------------------|# # # Total Observations in Table: 35 # # # | prc_test_pred # prc_test_labels | B | M | Row Total | # ----------------|-----------|-----------|-----------|# B | 6 | 13 | 19 | # | 0.316 | 0.684 | 0.543 | # | 0.857 | 0.464 | | # | 0.171 | 0.371 | | # ----------------|-----------|-----------|-----------|# M | 1 | 15 | 16 | # | 0.062 | 0.938 | 0.457 | # | 0.143 | 0.536 | | # | 0.029 | 0.429 | | # ----------------|-----------|-----------|-----------|# Column Total | 7 | 28 | 35 | # | 0.200 | 0.800 | | # ----------------|-----------|-----------|-----------|
希望你能重现相同的结果。