R语言:逻辑回归算法的实现——glm函数

R语言:逻辑回归算法的实现——glm函数在前文中 我们已经介绍过了逻辑回归算法的原理以及其 python 实现 具体请见逻辑回归算法及其 python 实现 本文将主要介绍逻辑回归算法的 R 语言实现 数据简介本文数据选择了红酒质量分类数据集 这是一个很经典的数据集 原数据集中 质量 这一变量取值有 3 4 5 6 7 8 为了实现二分类问题 我们添加一个变量 等级 并将 质量 为 3 4 5 的观测划分在等级 0 中 质量 为 6 7

在前文中,我们已经介绍过了逻辑回归算法的原理以及其python实现,具体请见逻辑回归算法及其python实现。

本文将主要介绍逻辑回归算法的R语言实现。

数据简介

本文数据选择了红酒质量分类数据集,这是一个很经典的数据集,原数据集中“质量”这一变量取值有{3,4,5,6,7,8}。为了实现二分类问题,我们添加一个变量“等级”,并将“质量”为{3,4,5}的观测划分在等级0中,“质量”为{6,7,8}的观测划分在等级1中。

数据下载戳我

因变量:等级

自变量:非挥发性酸性、挥发性酸性、柠檬酸、剩余糖分、氯化物、游离二氧化硫、二氧化硫总量、浓度、pH、硫酸盐、酒精

library(openxlsx) wine = read.xlsx("C:/Users/Mr.Reliable/Desktop/classification/winequality-red.xlsx") #将数据集分为训练集和测试集,比例为7:3 train_sub = sample(nrow(wine),7/10*nrow(wine)) train_data = wine[train_sub,] test_data = wine[-train_sub,] 

逻辑回归的实现

逻辑回归算法使用glm函数,family参数选择binomial即可,不需要额外下载R包。

实现逻辑回归

wine_logistic <- glm(等级 ~ 非挥发性酸性+挥发性酸性+柠檬酸+剩余糖分 +氯化物+游离二氧化硫+二氧化硫总量+浓度 +pH+硫酸盐+酒精, data = train_data, family = "binomial") #对逻辑回归结果进行汇总 summary(wine_logistic) 

我们要根据汇总的结果提出变量,将那些p值小于0.05的变量剔除,重新运行逻辑回归算法,直到模型中的变量都是显著的。

wine_logistic <- glm(等级 ~ 挥发性酸性+氯化物+游离二氧化硫+二氧化硫总量 +硫酸盐+酒精, data = train_data, family = "binomial") summary(wine_logistic) 

ROC曲线和AUC值

#对测试集进行预测 pre_logistic<-as.numeric(predict(wine_logistic,newdata=test_data,type="response")>0.5) #将测试集计算所得概率与观测本身取值整合到一起 obs_p_logistic = data.frame(prob=pre_logistic,obs=test_data$等级) #输出混淆矩阵 table(test_data$等级,pre_logistic,dnn=c("真实值","预测值")) #绘制ROC曲线 logistic_roc <- roc(test_data$等级,pre_logistic) plot(logistic_roc, print.auc=TRUE, auc.polygon=TRUE, grid=c(0.1, 0.2),grid.col=c("green", "red"), max.auc.polygon=TRUE,auc.polygon.col="skyblue", print.thres=TRUE,main='逻辑回归ROC曲线') 

roc




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213915.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午5:21
下一篇 2026年3月18日 下午5:22


相关推荐

  • mysql 查看 udf_MySQL的UDF

    mysql 查看 udf_MySQL的UDF最近用到 MySQL 的 UDF 查了一下相关文献 对用户用户实现 function 和 Aggregatefun 的方法做个介绍 快速编写一个 MySQLUDF 为了能够快速了解 UDF user definedfunct 是什么 我们首先构建一个最简单的 UDF 然后再介绍更细节的内容 本文在 Ubuntu16 04 下测试 开始之前需要先安装 MySQL 以及相关的库 在 Ubuntu 下

    2026年3月16日
    2
  • 26Region_awing

    26Region_awing给出 n 个点的一棵树,多次询问两点之间的最短距离。注意:边是无向的。所有节点的编号是 1,2,…,n。输入格式第一行为两个整数 n 和 m。n 表示点数,m 表示询问次数;下来 n−1 行,每行三个整数 x,y,k,表示点 x 和点 y 之间存在一条边长度为 k;再接下来 m 行,每行两个整数 x,y,表示询问点 x 到点 y 的最短距离。树中结点编号从 1 到 n。输出格式共 m 行,对于每次询问,输出一行询问结果。数据范围2≤n≤104,1≤m≤2×104,0<k≤1

    2022年8月9日
    6
  • 视频录制软件哪个好,推荐几款简单实用的视频课件录制软件「建议收藏」

    视频录制软件哪个好,推荐几款简单实用的视频课件录制软件「建议收藏」  日常生活中,我们有时候会因为工作或学习的原因,会使用到一些视频录制软件,通过视频录制软件,我们可以记录一些错过的细节,提高学习或工作效率。当然,现在网上的视频录制软件那么多,到底视频录制软件哪个好用?下面,小编给大家几款视频录制软件,感兴趣的朋友就一起来看看吧。   一、微软录屏软件(MicrosoftSnip)  1、软件介绍:  MicrosoftSnip是微软最新…

    2022年6月16日
    38
  • 135首经典欧美歌曲 —附下载地址

    135首经典欧美歌曲 —附下载地址135首经典欧美歌曲—附下载地址(2011-03-1212:52:14)转载▼标签:杂谈分类:转载精选源自张海峡新浪博客:http://blog.sina.com.cn/zhanghaixiaf

    2022年7月2日
    42
  • 怎么倍速看百度云视频(火狐浏览器百度云倍速)

    控制台调控videojs.getPlayers(“video-player”).html5player.tech_.setPlaybackRate(2)

    2022年4月16日
    96
  • JAVA生成uuid_oracle uuid生成

    JAVA生成uuid_oracle uuid生成packagetest.demo1;importjava.util.UUID;publicclassUUIDUtil{ publicstaticStringcreatUUID(){ returnUUID.randomUUID().toString().replace(“-“,””); } publicstaticvoidmain(String[]

    2025年12月5日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号