R语言glm logistic regression回归报错Warning messages: 1: glm.fit:算法没有聚合 2: glm.fit:拟合機率算出来是数值零或一的原因及解决方法

在R语言中进行glm逻辑回归时可能会遇到'glm.fit: algorithm did not converge'和'glm.fit: fitted probabilities numerically 0 or 1 occurred'的警告。这两个问题分别源于算法未达到收敛和训练数据可能导致过拟合。解决方法包括增加最大迭代次数、处理奇异值以及考虑训练数据的质量。对于完全线性可分的数据,直接使用规则判断可能更有效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

在用R语言的glm函数做logistic回归时主要有以下两种报错:

Warning: glm.fit: algorithm did not converge
Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

Warning messages:
1: glm.fit:演算法沒有聚合
2: glm.fit:拟合概率算出來是数值零或一

glm.fit:演算法沒有聚合

对于第一个警告1: glm.fit:演算法沒有聚合 ,报错原因是用来拟合的数据在达到最大迭代次数时还没有收敛

(因为R在计算logistic回归时,是用极大似然估计法来进行迭代求解的,并且glm函数默认的最大迭代次数是 maxit=25,所以当拟合数据(matrix X或者说training set)不太好时,可能经过25次迭代后系数解还无法收敛)

解决方法

(1)增加最大迭代次数。比如在glm函数中设置 maxit = 200
(2)如果上述方法还无法解决问题,可能确实是 training data 不太ok,这时需要对 trainning data做进一步的处理,比如奇异值分解。

glm.fit:拟合概率算出來是数值零或一

要明白这个报错是怎么回事,我们可以先使用自带的数据集做可视化来帮助理解,先用如下函数导入数据

library("ggplot2")
data<-iris[1:100,]
samp
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值