ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

机器学习Sklearn系列:(二)逻辑回归

2021-07-12 23:01:31  阅读:161  来源: 互联网

标签:逻辑 机器 函数 auto clf 分类 theta Sklearn sklearn


逻辑回归可以用来做分类任务,通俗理解,就是讲输入映射到到概率区间0-1,从而实现分类功能,逻辑回归的公式推导如下:

假设函数为:

\[\hat{y} = h_\theta(x,g(\theta^Tx))=\frac{1}{1+e^{-\theta^Tx}} \]

其中,\(g(z) = \frac{1}{1+e^{-z}}\)

在这种情况下,损失函数可以通过最大似然估计推导出来,首先:

\[\begin{equation} \begin{aligned} p(y=1|x,\theta)&=h_\theta(x) \\ p(y=1|x,\theta) &=1-h_\theta(x) \end{aligned} \end{equation} \]

拼到一起可以表示为:

\(P(y|x,\theta) = (h_\theta(x))^y(1-h_\theta(x))^{1-y}\)

通过最大似然估计可以得到:

\[L(\theta)=\prod^m_{i=1}P(y_i|x_i,\theta)=\prod^m_{i=1}(h_\theta(x_i))^{y_i}(1-h_\theta(x_i))^{1-y_i} \]

取log之后加上负号和平均使得求最大值变成求最小值, 这样就得到了逻辑回归的损失函数。

\[\begin{equation} \begin{aligned} J(\theta) & =-\frac{1}{m}*logL(\theta) \\ &= -\frac{1}{m}\sum_{i=1}^m((y_i*log(h_\theta(x_i))+(1-y_i)log(1-h_\theta(x_i))) \end{aligned} \end{equation} \]

sklearn中的逻辑回归函数

class 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='lbfgs', 
max_iter=100, multi_class='auto', verbose=0, warm_start=False, n_jobs=None, 
l1_ratio=None)

常用参数说明

penalty是正则选项

逻辑回归参数,其中 penalty {‘l1’, ‘l2’, ‘elasticnet’, ‘none’}

当使用 elasticnet的时候, l1_ratio 表示l1 和 l2的比例

C是正则项的1/λ,由于sklearn中,C是在损失函数这一项里面,除过去就等价于放到了正则项前面。C越小,损失函数会越小,模型对损失函数的惩罚越重,正则化的效力越强,参数会逐渐被压缩得越来越小

multi_class

新版本中默认是 'auto',一般情况下使用默认就好

输入"ovr", "multinomial", "auto"来告知模型,我们要处理的分类问题的类型。默认是"ovr"。

'ovr':表示分类问题是二分类,或让模型使用"一对多"的形式来处理多分类问题。

'multinomial':表示处理多分类问题,这种输入在参数solver是'liblinear'时不可用。

"auto":表示会根据数据的分类情况和其他参数来确定模型要处理的分类问题的类型。比如说,如果数据是二分 类,或者solver的取值为"liblinear","auto"会默认选择"ovr"。反之,则会选择"nultinomial"。

sklarn中使用例子:

from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
X, y = load_iris(return_X_y=True)
clf = LogisticRegression(C=0.8,random_state=0).fit(X, y)
clf.predict(X[:2, :])
clf.predict_proba(X[:2, :])
clf.score(X, y)

标签:逻辑,机器,函数,auto,clf,分类,theta,Sklearn,sklearn
来源: https://www.cnblogs.com/quant-q/p/15004408.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有