【问题标题】:Apply glm to iris dataset in caret R将 glm 应用于插入符号 R 中的 iris 数据集
【发布时间】:2020-06-22 08:38:50
【问题描述】:

我尝试在 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    

也许我遗漏了什么,请您的帮助将不胜感激。

【问题讨论】:

    标签: r r-caret


    【解决方案1】:

    您正在尝试针对具有超过 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 的二项式分类的一个很好的例子。

    【讨论】:

    • 您好@Maurits Evers,首先感谢您抽出宝贵时间给出答案,我不知道glm 无法处理多类结果。
    • @Alexis 不客气。在示例中,您正在(试图)将一个简单的二项式模型拟合到具有glm 的数据,沿着glm(class_with_two_outcomes ~ ., data = df, family = "binomial") 的行。要允许 >2 个类,您需要一个多项式模型。例如,您可以使用model_multinom &lt;- train(Species ~., data = train_set, method = "multinom") 来拟合惩罚多项式回归模型。
    • 这是一个很好的解释@Maurits Evers!,我应用了multinom 方法,瞧,它收敛到了 95% 的准确度。现在我必须研究如何摆脱所有显示迭代的文本。非常感谢!
    • @Alexis。再次,非常欢迎您,很高兴它很有用。关于其他输出消息,您可能需要查看suppressMessages 和/或suppressWarnings。或者,如果您正在编译 RMarkdown 文档,您可能想在代码块选项中使用 message=FALSE 和/或 warning=FALSE
    猜你喜欢
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    相关资源
    最近更新 更多