我的编程空间,编程开发者的网络收藏夹
学习永远不晚

在R语言中实现Logistic逻辑回归的操作

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

在R语言中实现Logistic逻辑回归的操作

逻辑回归是拟合回归曲线的方法,当y是分类变量时,y = f(x)。典型的使用这种模式被预测Ÿ给定一组预测的X。预测因子可以是连续的,分类的或两者的混合。

R中的逻辑回归实现

R可以很容易地拟合逻辑回归模型。要调用的函数是glm(),拟合过程与线性回归中使用的过程没有太大差别。在这篇文章中,我将拟合一个二元逻辑回归模型并解释每一步。

数据集

我们将研究泰坦尼克号数据集。这个数据集有不同版本可以在线免费获得,但我建议使用Kaggle提供的数据集。

目标是预测生存(如果乘客幸存,则为1,否则为0)基于某些诸如服务等级,性别,年龄等特征。

我们将使用分类变量和连续变量。

数据清理过程

在处理真实数据集时,我们需要考虑到一些数据可能丢失的情况,因此我们需要为我们的分析准备数据集。

作为第一步,我们使用该函数加载csv数据read.csv()。

使每个缺失值编码为NA。


training.data.raw < - read.csv('train.csv',header = T,na.strings = c(“”))

现在我们需要检查缺失的值,查看每个变量的唯一值,使用sapply()函数将函数作为参数传递给数据框的每一列。


 
PassengerId    Survived      Pclass        Name         Sex 
          0           0           0           0           0 
        Age       SibSp       Parch      Ticket        Fare 
        177           0           0           0           0 
      Cabin    Embarked 
        687           2 
 
length(unique(x)))
 
PassengerId    Survived      Pclass        Name         Sex 
        891           2           3         891           2 
        Age       SibSp       Parch      Ticket        Fare 
         89           7           7         681         248 
      Cabin    Embarked 
        148           4

对缺失值进行可视化处理可能会有所帮助:可以绘制数据集并显示缺失值:

机舱有太多的缺失值,我们不使用它。

使用subset()函数我们对原始数据集进行子集化,只选择相关列。


data < - subset(training.data.raw,select = c(2,3,5,6,7,8,10,12))

现在我们需要解释其他缺失的值。通过在拟合函数内设置参数来拟合广义线性模型时,R可以很容易地处理它们。

有不同的方法可以做到这一点,一种典型的方法是用现有的平均值,中位数或模式代替缺失值。我将使用平均值。


data$ Age [is.na(data $ Age)] < - mean(data$ Age,na.rm = T)
 

就分类变量而言,使用read.table()或read.csv()默认会将分类变量编码为因子。

为了更好地理解R如何处理分类变量,我们可以使用contrasts()函数。

在进行拟合过程之前,先清洁和格式化数据。这个预处理步骤对于获得模型的良好拟合和更好的预测能力通常是至关重要的。

模型拟合

我们将数据分成两部分:训练和测试集。训练集将用于拟合我们的模型。


model <- glm(Survived ~.,family=binomial(link='logit'),data=train)

通过使用函数,summary()我们获得了我们模型的结果:


 
Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.6064  -0.5954  -0.4254   0.6220   2.4165  
Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept)  5.137627   0.594998   8.635  < 2e-16 ***
Pclass      -1.087156   0.151168  -7.192 6.40e-13 ***
Sexmale     -2.756819   0.212026 -13.002  < 2e-16 ***
Age         -0.037267   0.008195  -4.547 5.43e-06 ***
SibSp       -0.292920   0.114642  -2.555   0.0106 *  
Parch       -0.116576   0.128127  -0.910   0.3629    
Fare         0.001528   0.002353   0.649   0.5160    
EmbarkedQ   -0.002656   0.400882  -0.007   0.9947    
EmbarkedS   -0.318786   0.252960  -1.260   0.2076    
---
Signif. codes:  0 ‘***' 0.001 ‘**' 0.01 ‘*' 0.05 ‘.' 0.1 ‘ ' 1

解释我们的逻辑回归模型的结果

现在我们可以分析拟合并解释模型告诉我们什么。

首先,我们可以看到SibSp,Fare和Embarked没有统计意义。至于统计上显着的变量,性别具有最低的p值,这表明乘客的性别与存活的可能性有很强的关联。

预测因子的负系数表明所有其他变量相同,男性乘客不太可能存活下来。

由于男性是虚拟变量,因此男性将对数概率降低2.75,而单位年龄增加则将对数概率降低0.037。

现在我们可以运行anova()模型上的函数来分析偏差表


Analysis of Deviance Table
Model: binomial, link: logit
Response: Survived
Terms added sequentially (first to last)
         Df Deviance Resid. Df Resid. Dev  Pr(>Chi)    
NULL                       799    1065.39              
Pclass    1   83.607       798     981.79 < 2.2e-16 ***
Sex       1  240.014       797     741.77 < 2.2e-16 ***
Age       1   17.495       796     724.28 2.881e-05 ***
SibSp     1   10.842       795     713.43  0.000992 ***
Parch     1    0.863       794     712.57  0.352873    
Fare      1    0.994       793     711.58  0.318717    
Embarked  2    2.187       791     709.39  0.334990    

零偏差和剩余偏差之间的差异越大越好。通过分析表格,我们可以看到每次添加一个变量时出现偏差的情况。

同样,增加Pclass,Sex and Age可以显着减少残余偏差。

这里的大p值表示没有变量的模型或多或少地解释了相同的变化量。最终你想看到的是一个显着的下降和偏差AIC。

评估模型的预测能力

在上面的步骤,我们简要评价模型的拟合。通过设置参数type='response',R将以P(y = 1 | X)的形式输出概率。我们的决策边界将是0.5。如果P(y = 1 | X)> 0.5,则y = 1,否则y = 0。请注意,对于某些应用场景,不同的阈值可能是更好的选择。


 fitting.results < - ifelse(fitted.results> 0.5,1,0)
misClasificError < - mean(fitted.results!= test $ Survived

测试集上的0.84精度是相当不错的结果。但是,如果您希望得到更精确的分数,最好运行交叉验证,如k折交叉验证验证。

作为最后一步,我们将绘制ROC曲线并计算二元分类器典型性能测量的AUC(曲线下面积)。

ROC是通过在各种阈值设置下将真阳性率(TPR)与假阳性率(FPR)作图而产生的曲线,而AUC是ROC曲线下的面积。作为一个经验法则,具有良好预测能力的模型应该接近于1。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。如有错误或未考虑完全的地方,望不吝赐教。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

在R语言中实现Logistic逻辑回归的操作

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

在R语言中如何实现Logistic逻辑回归的操作

这篇文章主要介绍了在R语言中如何实现Logistic逻辑回归的操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是R语言R语言是用于统计分析、绘图的语言和操作环境,属于G
2023-06-14

怎么在R语言中实现逻辑回归

怎么在R语言中实现逻辑回归?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么是R语言R语言是用于统计分析、绘图的语言和操作环境,属于GNU系统的一个自由、免费、源代码开放的
2023-06-14

R语言逻辑回归、ROC曲线与十折如何实现交叉验证

本篇内容主要讲解“R语言逻辑回归、ROC曲线与十折如何实现交叉验证”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“R语言逻辑回归、ROC曲线与十折如何实现交叉验证”吧!1. 测试集和训练集3、7分
2023-06-08

怎么在R语言中实现线性回归

本篇文章为大家展示了怎么在R语言中实现线性回归,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个
2023-06-15

如何在R语言项目中实现多元线性回归

这期内容当中小编将会给大家带来有关如何在R语言项目中实现多元线性回归,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。输入数据先把数据用excel保存为csv格式放在”我的文档”文件夹打开R软件,不用新建,直
2023-06-08

如何在 Java 中实现类似于 C 语言中 strcmp 的逻辑?(如何在java中实现strcmp逻辑)

在Java编程中,实现类似于C语言中strcmp的逻辑是一个常见的需求。strcmp函数用于比较两个字符串,并返回一个整数值,表示它们的比较结果。在Java中,虽然没有直接的strcmp函数,但
如何在 Java 中实现类似于 C 语言中 strcmp 的逻辑?(如何在java中实现strcmp逻辑)
Java2024-12-21

怎么在R语言中实现数据预处理操作

本篇文章给大家分享的是有关怎么在R语言中实现数据预处理操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、项目环境开发工具:RStudioR:3.5.2相关包:infothe
2023-06-08

如何在R语言中实现数据预处理操作

如何在R语言中实现数据预处理操作?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、项目环境开发工具:RStudioR:3.5.2相关包:infotheo,dis
2023-06-15

如何在go语言中实现数据库操作的功能

在Go语言中可以使用database/sql包来实现数据库操作的功能。以下是一个简单的示例代码,演示如何连接数据库、插入数据、查询数据和更新数据。首先,需要导入database/sql和相应的数据库驱动包:```goimport ("dat
2023-10-12

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录