logistic模型 python_机器学习模型4 Logistic回归-基于Python sklearn的实现

本文介绍了Logistic回归的模型原理,并详细讲解了在Python的sklearn库中,如何使用LogisticRegression和LogisticRegressionCV进行模型实现。重点讨论了关键参数如penalty、solver、multi_class和class_weight等的含义与选择,并对比了不同优化算法的适用场景。
摘要由CSDN通过智能技术生成

1、模型原理

(另一台电脑上,待补充)

回顾下线性回归的损失函数,由于线性回归是连续的,所以可以使用模型误差的的平方和来定义损失函数。但是逻辑回归不是连续的,自然线性回归损失函数定义的经验就用不上了。不过我们可以用最大似然法来推导出我们的损失函数。

2、Python3中sklearn关于Logistic回归的代码实现

(1)概述

在scikit-learn中,与逻辑回归有关的主要是这3个类。LogisticRegression, LogisticRegressionCV 和logistic_regression_path。

其中LogisticRegression和LogisticRegressionCV的主要区别是:

LogisticRegressionCV使用了交叉验证来选择正则化系数C。而LogisticRegression需要自己每次指定一个正则化系数。

即LogisticRegression不做交叉验证 ,也就是整个输入作为训练集来训练模型参数。而LogisticRegressionCV则会将训练集分成若干份,每次选择一部分训练集来训练模型,一部分样本做验证集来测试模型优劣,多次验证后选择最好的模型参数。

所以两者肯定有差异。一般来说,会用后面一个。不过如果你用了其他一些网格搜索方法(比如 GridSearchCV),自带交叉验证的话,那么用第一个就可以了。

除了交叉验证,以及选择正则化系数C以外, LogisticRegression和LogisticRegressionCV的使用方法基本相同。

logistic_regression_path类则比较特殊,它拟合数据后,不能直接来做预测,只能为拟合数据选择合适逻辑回归的系数和正则化系数。主要是用在模型选择的时候。一般情况用不到这个类,所以后面不再讲述logistic_regression_path类。

此外,scikit-learn里面有个容易让人误解的类RandomizedLogisticRegression,虽然名字里有逻辑回归的词,但是主要是用L1正则化的逻辑回归来做特征选择的,属于维度规约的算法类,不属于我们常说的分类算法的范畴。

(2)LogisticRegression和LogisticRegressionCV参数介绍

sklearn.linear_model.LogisticRegression (penalty=’l2’, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver=’liblinear’, max_iter=100, multi_class=’ovr’, verbose=0, warm_start=False, n_jobs=1)

sklearn.linear_model.LogisticRegressionCV(Cs=10, fit_intercept=True, cv=None, dual=False, penalty=’l2’, scoring=None, solver=’lbfgs’, tol=0.0001, max_iter=100, class_weight=None, n_jobs=1, verbose=0, refit=True, intercept_scaling=1.0, multi_class=’ovr’, random_state=None)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值