繁体   English   中英

将 glm 应用于插入符号 R 中的虹膜数据集

[英]Apply glm to iris dataset in caret R

我尝试使用以下代码在 Iris 数据集上应用 glm 算法:

library(tidyverse)
library(caret)

dataset <- iris
tt_index <- createDataPartition(dataset$Sepal.Length, times = 1, p = 0.9, list = FALSE)
train_set <- dataset[tt_index, ]
test_set <- dataset[-tt_index, ]

model_glm <- train(Species ~., 
                   data = train_set,
                   method = "glm")

但它给了我这个警报:

Something is wrong; all the Accuracy metric values are missing:
    Accuracy       Kappa    
 Min.   : NA   Min.   : NA  
 1st Qu.: NA   1st Qu.: NA  
 Median : NA   Median : NA  
 Mean   :NaN   Mean   :NaN  
 3rd Qu.: NA   3rd Qu.: NA  
 Max.   : NA   Max.   : NA  
 NA's   :1     NA's   :1    

也许我错过了一些东西,请您的帮助将不胜感激。

您正在尝试将二元(即二项式)分类 model 训练为具有超过 2 个级别的响应变量的数据。 您收到的警告以及您在输入warnings()时可以看到的警告会告诉您

glm 模型只能使用 2 类结果

所以这行不通。

一种选择是省略其中一个结果,例如做

dataset <- subset(iris, Species != "virginica")
dataset <- transform(dataset, Species = droplevels(Species))

tt_index <- createDataPartition(
    dataset$Sepal.Length, times = 1, p = 0.5, list = FALSE)
train_set <- dataset[tt_index, ]
test_set <- dataset[-tt_index, ]

model_glm <- train(
    Species ~.,
    data = train_set,
    method = "glm",
    family = "binomial")

这仍然会发出警告,但它们的来源不同。 底线是,这可能不是测试基于glm的二项式分类的一个很好的例子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM