python:logistic,softmax函数

在学习时,经常会遇到分类的问题,简单的讲:分类就是设定一个阈值,将你想分类的对象与这个阈值进行比较,根据结果来进行决定分类。
最简单的分类函数是阶跃函数(简单粗暴)
这里写图片描述
但问题在于,这模型不够光滑,阶跃点从0到1突变,阶跃点难以处理,分类的效果也就那样。
logistic函数:一种常见的S形函数,它是皮埃尔·弗朗索瓦·韦吕勒在1844或1845年在研究它与人口增长的关系时命名的。(生物课上经常看到)
这里写图片描述
公式为:

g(z)=11+ez

logistic函数的优点:
够光滑,取值从-∞到∞,而且每一点的导数都存在
python实现:

import numpy as np
import matplotlib.pyplot as plt
def logistic(x):
    return 1/(1+np.exp(-x))

x=np.arange(-6.0,6.0,0.1)
plt.plot(x,logistic(x).T,linewidth=2)
plt.show()

结果:
这里写图片描述

softmax函数:
本质是将一个K维的任意实数向量压缩(映射)成另一个K维的实数向量,其中向量中的每个元素取值都介于(0,1)之间。
与logistic函数不同的是,logistic函数主要解决的是二分类问题,而softmax函数主要解决的是多分类问题
softmax函数公式:

σ(z)j=ezjKk=1ezk

python代码:

import numpy as np
import matplotlib.pyplot as plt

def softmax(x):
    return np.exp(x)/np.sum(np.exp(x),axis=0)

x=np.arange(-2.0,6.0,0.1)
scores=np.stack([x,np.ones_like(x),0.2*np.ones_like(x)])
plt.plot(x,softmax(scores).T,linewidth=2)
plt.show()

结果:
这里写图片描述

logistic函数与softmax函数的区别:
softmax建模使用的分布是多项式分布,而logistic则基于伯努利分布,
伯努利分布是一种离散分布,有两种可能的结果1和0。

pn={1ppn=0n=1

多项式分布是二项分布的推广,有不止二种结果

softmax回归和多个logistic回归的关系:
softmax回归进行的多分类,类与类之间是互斥的,即一个输入只能被归为一类;
多个logistic回归进行多分类,输出的类别并不是互斥的,即”苹果”这个词语既属于”水果”类也属于”3C”类别。

相关博客:
logistic函数和softmax函数
这里写图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值