logistics regression-ML

基于逻辑回归的分类预测
基本概念:逻辑回归也被称为广义线性回归模型,它与线性回归模型的形式基本上相同,都具有 ax+b,其中a和b是待求参数,其区别在于他们的因变量不同,多重线性回归直接将ax+b作为因变量,即y = ax+b,而logistic回归则通过函数L将ax+b对应到一个隐状态p,p = L(ax+b),然后根据p与1-p的大小决定因变量的值。

逻辑回归 原理简介:
以二分类为例。(事实上,多分类可以看做多个二分类迭代,下一篇将以鸢尾花的分类为例,讲解多分类在逻辑回归模型中如何解决)
Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别),所以利用了Logistic函数(或称为Sigmoid函数),函数形式为:
l o g i ( z ) = 1 1 + e − z logi(z)=\frac{1}{1+e^{-z}} logi(z)=1+ez1

其对应的函数图像可以表示如下:
在这里插入图片描述

通过上图我们可以发现 Logistic 函数是单调递增函数,并且在z=0的时候取值为0.5,并且 l o g i ( ⋅ ) logi(\cdot) logi()函数的取值范围为 ( 0 , 1 ) (0,1) (0,1)

而回归的基本方程为 z = w 0 + ∑ i N w i x i z=w_0+\sum_i^N w_ix_i z=w0+iNwixi

将回归方程写入其中为:
p = p ( y = 1 ∣ x , θ ) = h θ ( x , θ ) = 1 1 + e − ( w 0 + ∑ i N w i x i ) p = p(y=1|x,\theta) = h_\theta(x,\theta)=\frac{1}{1+e^{-(w_0+\sum_i^N w_ix_i)}} p=p(y=1x,θ)=hθ(x,θ)=1+e(w0+iNwixi)1

所以, p ( y = 1 ∣ x , θ ) = h θ ( x , θ ) p(y=1|x,\theta) = h_\theta(x,\theta) p(y=1x,θ)=hθ(x,θ) p ( y = 0 ∣ x , θ ) = 1 − h θ ( x , θ ) p(y=0|x,\theta) = 1-h_\theta(x,\theta) p(y=0x,θ)=1hθ(x,θ)

逻辑回归从其原理上来说,逻辑回归其实是实现了一个决策边界:对于函数 y = 1 1 + e − z y=\frac{1}{1+e^{-z}} y=1+ez1,当 z = > 0 z=>0 z=>0时, y = > 0.5 y=>0.5 y=>0.5,分类为1,当 z < 0 z<0 z<0时, y < 0.5 y<0.5 y<0.5,分类为0,其对应的 y y y值我们可以视为类别1的概率预测值.

对于模型的训练而言:实质上来说就是利用数据求解出对应的模型的特定的 w w w。从而得到一个针对于当前数据的特征逻辑回归模型。

而对于多分类而言,将多个二分类的逻辑回归组合,即可实现多分类。

机器学习:基本概念,
数据集,模型,训练 ,验证

```python
## 构造数据集
x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])
y_label = np.array([0, 0, 0, 1, 1, 1])

## 调用逻辑回归模型
lr_clf = LogisticRegression()

## 用逻辑回归模型拟合构造的数据集
lr_clf = lr_clf.fit(x_fearures, y_label) #其拟合方程为 y=w0+w1*x1+w2*x2
# 可视化决策边界
plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.title('Dataset')

# 可视化决策边界(等概率线)
nx, ny = 200, 100
x_min, x_max = plt.xlim()
y_min, y_max = plt.ylim()
x_grid, y_grid = np.meshgrid(np.linspace(x_min, x_max, nx),np.linspace(y_min, y_max, ny))

# 利用逻辑回归模型预测平面网格点对应的概率值
z_proba = lr_clf.predict_proba(np.c_[x_grid.ravel(), y_grid.ravel()])
z_proba = z_proba[:, 1].reshape(x_grid.shape) 
# 填充等概率线(可以借助等高线理解)
c=plt.contour(x_grid, y_grid, z_proba, linewidths=2., colors='blue')
 # 等高线标签
plt.clabel(c,inline=True,fontsize=10)
plt.show()

在这里插入图片描述

函数解析参考
np.c_,np.meshgrid,np.linspace
plt.contour 等高线绘图函数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值