FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this..

本文通过两种方法解决了使用Logistic回归进行特征选择时出现的FutureWarning警告,介绍了警告产生的原因及如何避免。

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

from pandas import read_csv
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
#导入数据
filename = 'pima_data.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names=names)
#将数据分为输入数据和输出结果
array = data.values
X = array[:,0:8]
Y = array[:,8]
#特征选定
model = LogisticRegression(solver='liblinear')
rfe = RFE(model,3)
fit = rfe.fit(X,Y)
print("特征个数:")
print(fit.n_features_)
print("被选定的特征:")
print(fit.support_)
print("特征排名:")
print(fit.ranking_)

运行结果:
在这里插入图片描述
用python中logistic回归算法进行数据建模,遇到下面的警告:

FutureWarning: Default solver will be changed to ‘lbfgs’ in 0.22. Specify a solver to silence this warning.

并不影响程序的运行和结果,但是出现一大串字符,感觉很不爽,于是就查找原因:

FutureWarning是语言或者库中将来可能改变的有关警告。

根据报警信息和参考相关文档,“Default will change from ‘liblinear’ to ‘lbfgs’ in 0.22.” 默认的solver参数在0.22版本中,将会由“liblinear”变为“lbfgs”

LogisticRegerssion算法的solver仅支持以下几个参数’liblinear’, ‘newton-cg’, ‘lbfgs’, ‘sag’, ‘saga’。

解决方法:

方法1:

model=LogisticRegression(solver=’liblinear’) 

方法2:

import warnings
warnings.filterwarnings("ignore")
# 这个方法只是解决了表面,没有根治

参考和引用:

https://blog.youkuaiyun.com/linzhjbtx/article/details/85331200


仅用来个人学习和分享,如若侵权,留言立删。

尊重他人知识产权,不做拿来主义者!

喜欢的可以关注我哦QAQ,

你的关注就是我write博文的动力。

### FutureWarning 多分类参数处理 在机器学习库 `scikit-learn` 中,关于 `multi_class` 参数的警告通常涉及其默认行为的变化以及未来版本中的移除计划。具体来说,在某些模型(如逻辑回归 `LogisticRegression` 或线性支持向量机 `LinearSVC`)中,`multi_class='multinomial'` 是一种常见的设置选项。 #### 警告背景 从 scikit-learn 版本 1.5 开始,`multi_class` 参数的行为可能会发生变化,并且预计将在未来的版本(例如 1.7)中完全移除当前的一些默认值或选项[^6]。因此,为了确保代码在未来版本中仍然兼容并避免潜在问题,建议显式指定该参数而不是依赖默认值。 --- ### 解决方案 以下是针对此问题的具体解决方法: 1. **显式声明 `multi_class` 参数** 如果正在使用的模型允许配置 `multi_class` 参数,则应始终将其显式定义为 `'ovr'` 或 `'multinomial'`,以防止因默认值更改而导致意外行为。 ```python from sklearn.linear_model import LogisticRegression model = LogisticRegression(multi_class='multinomial', solver='lbfgs') ``` 这里需要注意的是,当选择 `multi_class='multinomial'` 时,必须搭配合适的求解器(solver),比如 `'lbfgs'`, `'newton-cg'`, `'sag'`, 或 `'saga'`,因为这些求解器支持多项式损失函数[^7]。 2. **升级到最新版本** 确保所使用的 scikit-learn 库是最新的稳定版。较新版本可能已经修复了与此相关的警告信息,并提供了更清晰的文档说明。 使用以下命令更新至最新版本: ```bash pip install --upgrade scikit-learn ``` 3. **忽略特定警告** 如果确认不会影响程序功能,可以通过过滤掉此类警告来简化日志输出。可以采用如下方式屏蔽 `FutureWarning` 类型的消息: ```python import warnings warnings.filterwarnings("ignore", category=FutureWarning) ``` 需要注意的是,这种方法仅适用于临时抑制警告而不改变实际实现逻辑的情况。 4. **检查其他依赖项** 对于复杂的项目环境,有时第三方库也会间接触发类似的警告消息。如果发现即使调整了自己的代码仍存在未消除的警告,请核查是否有外部模块需要同步更新。 --- ### 示例代码 下面是一个完整的例子展示如何正确初始化带有 `multi_class` 设置的逻辑回归模型: ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression import warnings # 数据准备 data = load_iris() X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.3, random_state=42) # 显式设定 multi_class 和 solver 参数 model = LogisticRegression( multi_class='multinomial', solver='lbfgs' ) # 训练模型 model.fit(X_train, y_train) # 输出预测结果 print(model.predict(X_test)) ``` 通过上述修改即可有效规避由 `multi_class` 默认值变更引发的相关警告。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器不学习我学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值