首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分类模型基准准确度

分类模型基准准确度
EN

Stack Overflow用户
提问于 2021-04-27 00:42:15
回答 1查看 21关注 0票数 0

我有一个任务,我需要为我的训练数据集创建一个基准模型。我需要在编码方面的帮助,以了解我将如何处理这项任务。这5种分类模型分别是KNN、核支持向量机、决策树、Logistic回归和k近邻。

任何有良好解释的例子都会有所帮助。

EN

回答 1

Stack Overflow用户

发布于 2021-04-27 15:28:40

我不知道比较模型是什么,但是使用caret包可以很容易地创建许多不同的模型,使用交叉验证进行参数调整,并比较结果。仅供参考,k近邻和k近邻是一回事。在下面的示例中,我只是在准确性方面比较模型,而不是在速度方面。我使用caret包中提供的内置数据集,该数据集具有二元结果(本例中的列Class,值为GoodBad)。该过程如下:

数据加载和拆分

代码语言:javascript
复制
library(caret)

data("GermanCredit")
str(GermanCredit[,1:10])
index <- createDataPartition(GermanCredit$Class,p=0.7,list=F)
training <- GermanCredit[index,1:10]
test <- GermanCredit[-index,1:10]

设置重采样方法:10次交叉验证重复5次

代码语言:javascript
复制
# run multiple algorithms once, with 5 repeated 10 fold cv
trainControl <- trainControl(method="repeatedcv", 
                             number=10, 
                             repeats=5,
                             savePrediction="final"
)

调整模型和比较重采样统计信息

下面是支持向量机的列表,因为您没有指定要使用哪种决策树算法或哪种内核,因此我选择C5.0作为决策树,并选择具有径向基函数核的all models available in caret

代码语言:javascript
复制
#list of model to tune
algorithmList <- c('rpart', 'knn', 'glm','svmRadial')

#model tuning
set.seed(5)
models <- lapply(algorithmList,function(x){
  train(
    Class ~ .,
    data = training,
    method = x,
    trControl = trainControl
  )
})

交叉验证中的重采样统计数据

代码语言:javascript
复制
results <- resamples(models)#results from cv
summary(results)
bwplot(results)

在测试集上测试模型的准确性

代码语言:javascript
复制
predicted <-
  list(
    c5.0 = predict(models[[1]], test[,-10]),
    knn = predict(models[[2]], test[,-10]),
    glm = predict(models[[3]], test[,-10]),
    svm = predict(models[[4]], test[,-10])
  )

cm <- lapply(predicted,confusionMatrix,reference=test$Class,positive="Good")
acc <- lapply(cm,function(x){
  o <- x$overall[1:2]
  b <- x$byClass[5:7]
  df <- c(o,b)
})
df <- round(do.call(rbind,acc),3)

df对象如下所示:

代码语言:javascript
复制
    > df
     Accuracy Kappa Precision Recall    F1
c5.0    0.697 0.019     0.703  0.981 0.819
knn     0.660 0.008     0.701  0.895 0.787
glm     0.717 0.143     0.726  0.957 0.825
svm     0.723 0.157     0.728  0.967 0.830

查看here了解函数confusionMatrix是如何计算这些统计数据的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67270585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档