【问题标题】:C5.0 Machine Learning in R with 100% accuracy for test dataR 中的 C5.0 机器学习,对测试数据具有 100% 的准确度
【发布时间】:2020-04-02 05:30:57
【问题描述】:

我正在做一个机器学习项目,并使用 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'))

非常感谢我在这里做错的任何帮助或潜在的事情

【问题讨论】:

    标签: r machine-learning decision-tree


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      还无法进入评论(需要50个声誉点),所以我将在此输入这一点。代码似乎是正确的,但准确性不是我认为的100%。在3例中,预测是B虽然诊断为M.您还使用ID作为预测器,同时培训您的模型,我也会删除。

      【讨论】:

      • 删除ID有意义。但是,由于某种原因,我没有看到你如何获得的准确性,而不是100%。每次我运行它时,它都会增加100%正确 span>
      猜你喜欢
      • 2019-08-24
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 2019-07-03
      • 1970-01-01
      • 2020-02-21
      • 2017-08-14
      相关资源
      最近更新 更多