Python——sklearn 中 Logistics Regression 的 coef_ 和 intercept_ 的具体意义

Stella981
• 阅读 965

sklearn 中 Logistics Regression 的 coef_ 和 intercept_ 的具体意义

​ 使用sklearn库可以很方便的实现各种基本的机器学习算法,例如今天说的逻辑斯谛回归(Logistic Regression),我在实现完之后,可能陷入代码太久,忘记基本的算法原理了,突然想不到**coef_intercept_**具体是代表什么意思了,就是具体到公式中的哪个字母,虽然总体知道代表的是模型参数。

正文

我们使用 sklearn 官方的一个例子来作为说明,源码可以从这里下载,下面我截取其中一小段并做了一些修改:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.linear_model import LogisticRegression
    
# 构造一些数据点
centers = [[-5, 0], [0, 1.5], [5, -1]]
X, y = make_blobs(n_samples=1000, centers=centers, random_state=40)
transformation = [[0.4, 0.2], [-0.4, 1.2]]
X = np.dot(X, transformation)
    
clf = LogisticRegression(solver='sag', max_iter=100, random_state=42, multi_class=multi_class).fit(X, y)

print clf.coef_ 
print clf.intercept_

输出如图:

Python——sklearn 中 Logistics Regression 的 coef_ 和 intercept_ 的具体意义

可以看到**clf.coef_是一个3×2(n_class, n_features)**的矩阵,**clf.intercept_**是一个1×3的矩阵(向量),那么这些到底是什么意思呢?

我们来回顾一下 Logistic 回归的模型:

$$ h_\theta(x) = \frac{1}{1 + e^{(-\theta^Tx)} } $$

其中 $\theta$是模型参数,其实 $\theta^Tx$就是一个线性表达式,将这个表达式的结果再一次利用 Logistic 函数映射到 0~1 之间。

知道了这个,也就可以搞清楚那个**clf.coef_clf.intercept_**了: **clf.coef_clf.intercept_**就是 $ \theta $,下面我们来验证一下:

i = 100
print 1 / (1 + np.exp(-(np.dot(X[i].reshape(1, -1), cc.T) + clf.intercept_)))
# 正确的类别
print y[i]
print clf.predict_proba(X[i].reshape(1, -1))
print clf.predict_log_proba(X[i].reshape(1, -1))

输出结果:

Python——sklearn 中 Logistics Regression 的 coef_ 和 intercept_ 的具体意义

可以看到结果是吻合的,说明我们的猜想是正确的。

原文链接:https://blog.csdn.net/u010099080/article/details/52933430!

点赞
收藏
评论区
推荐文章
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java中path和CLASSPATH的配置和意义解析
原文链接https://blog.csdn.net/eclipse\_yin/article/details/51447169(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fblog.csdn.net%2Feclipse_yin%2Farticle%2Fdetails%2F51447
CuterCorley CuterCorley
3年前
Python 库的安装及使用 常见错误异常及解决办法
1.包导入错误ModuleNotFoundError:Nomodulenamed'sklearn.cross_validation'错误:pythonfromsklearn.cross_validationimporttrain_test_splitModuleNotFoundError:Nomodulenamed'sklea
Stella981 Stella981
3年前
GreenPlum tidb 性能比较
主要的需求  针对大体量表的OLAP统计查询,需要找到一个稳定,高性能的大数据数据库,具体使用  数据可以实时的写入和查询,并发的tps不是很高建立数据仓库,模式上主要采用星星模型、雪花模型,或者宽表前端展示分为3类 saiku、granafa、c代码开发数据体量:事实表在35亿、维度表大的在500
Wesley13 Wesley13
3年前
#numpy#关于数组形状
!(http://static.oschina.net/uploads/space/2016/0623/155855_t48w_987833.jpg)numpy的多维数组虽然好用,但是不熟悉的话也很难理解,今天要研究基于多项式的朴素贝叶斯,sklearn的官方示例中用了numpy,但是看不太懂numpy的那句,于是总结如下:numpy的数组相
Wesley13 Wesley13
3年前
AI金融知识自学偏量化方向
前提:统计学习(统计分析)和机器学习之间的区别金融公司采用机器学习技术及招募相关人才要求第一个问题:  机器学习和统计学都是数据科学的一部分。机器学习中的学习一词表示算法依赖于一些数据(被用作训练集),来调整模型或算法的参数。这包含了许多的技术,比如回归、朴素贝叶斯或监督聚类。但不是所有的技术都适合机器学习。例如有一种统计和数
Stella981 Stella981
3年前
Python 中的 with 语句与上下文管理器
对象,是Python对数据的抽象概念。Python中的所有数据都是以对象或对象间的关系来实现的。(某种意义上,代码也是由对象来实现的,这与冯·诺依曼的“storedprogramcomputer”模型相一致)。每个对象都有id、type、和value。对象的id从创建之时起就不再改变,你可以把它想象成对象在内存中的地址。is运算符就是
Wesley13 Wesley13
3年前
5个需要掌握的sklearn技能
虽然scikitlearn在机器学习领域很重要,但是很多人并不知道利用这个库中的一些强大的功能。本文将介绍scikitlearn中5个最有用的5个隐藏的瑰宝,充分利用这些秘密武器将有效提高你的机器学习处理的效率!1、数据集生成器Scikitlearn有很多数据集生成器,可以用来生成各种复杂度和维度的人工数据集。例如,ma