R中的C5.0机器学习,测试数据的准确性为100%

时间:2019-12-09 06:06:54

标签: r machine-learning decision-tree

我正在做一个机器学习项目,并使用C5.0决策树查看乳腺癌数据,以尝试并预测诊断为恶性或良性。该数据集是UCI机器学习数据集之一,并发布在以下链接上:https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29

我认为我的代码对于该模型是正确的,但是每当我为测试数据运行它时,它对于该数据的准确性就达到100%。我以为这意味着我做错了什么,但不确定什么:

#Load Library
library(C50)
library(gmodels)
library(tidyverse)
library(dplyr)

#Import Data
setwd("C:\\Users\\Grant\\Downloads")
wdbc<-read.delim("C:\\Users\\Grant\\Downloads\\wdbc.txt", header=TRUE, sep=",")

#Need to convert it to factor
wdbc2=mutate(wdbc, Diagnosis=as.factor(diagnosis))

#Randomize Sequence
set.seed(12345)
wdbc_rand<-wdbc2[order(runif(569)), ]

#Split into training vs. test data
wdbc_train<-wdbc_rand[1:512, ]
wdbc_test<-wdbc_rand[512:569, ]


#Create Model
wdbc_model<-C5.0(x=wdbc_train[-2], y=wdbc_train$Diagnosis)

#Evaluate Performance
wdbc_pred <- predict(wdbc_model, wdbc_test)
CrossTable(wdbc_test$Diagnosis, wdbc_pred, prop.chisq = FALSE,
           prop.c = FALSE, prop.r = FALSE, dnn= c('actual diagnosis', 'predicted diagnosis'))

在此我可能做错的任何帮助或潜在的事情将不胜感激

2 个答案:

答案 0 :(得分:0)

还不能输入评论(需要50个声望点),所以我将在这里输入。代码似乎是正确的,但我认为准确性不是100%。在3种情况下,预测为B而诊断为M。您在训练模型时也将ID用作预测变量,我也将其删除。

答案 1 :(得分:0)

不是使用手动set.seed来拆分数据(对于随机出现的训练数据集和测试数据集,这样您就可以获得理想的数据形状并可以对其进行训练。您所做的是完全错误的方法来训练一个机器学习模型方法。

set.seed(123)
wdbc = wdbc.split(splitratio = 0.7) #(here it is 70% of training data and 20% of test data)
相关问题