python:二元logistic回归(Logstic Regression)

目录

1.Sigmoid函数

2.cost函数:交叉熵函数

3.建立模型

4.公式求解

5.使用梯度下降法迭代求出最优的W

5.1初始化w

5.2更新w

5.3迭代到一定次数或达到某一阈值

 6.代码展示


1.Sigmoid函数

首先我们要先介绍一下Sigmoid函数,也称为逻辑函数(Logistic function):

图像:

函数特点: 从上图可以看到sigmoid函数是一个s形的曲线,自变量取值范围是R,值域在[0, 1]之间,在远离0的地方函数的值会很快接近0或者1。它的这个特性对于解决二分类问题十分重要。

2.cost函数:交叉熵函数

3.建立模型

直线Z=WX ,此直线也称为决策边界,对应于Z=0,以及概率为0.5,在此直线上的点的概率大于0.5,在此直线下的点的概率小于0.5,所以X是固定的,我们要改变W的值,从而改变Z的方向使得每个点到Z的cost值最小。

4.公式求解

求最优的决策边界,即求最优的线

直线方程:Z=WX

预测函数H(X):

cost函数:

 cost函数对w求偏导:

5.使用梯度下降法迭代求出最优的W

5.1初始化w
5.2更新w
5.3迭代到一定次数或达到某一阈值

 6.代码展示

import numpy as np
import matplotlib.pyplot as plt

def loaddate(filename):
    """
    加载文件导入数据和标签
    """
    file = open(filename)
    x=[]
    y=[]
    for line in file.readlines():
        line = line.strip().split()
        x.append([1,float(line[0]),float(line[1])])
        y.append(float(line[-1]))
    xmat = np.mat(x)
    ymat = np.mat(y).T

    file.close()
    return xmat,ymat

def w_calc(xmat,ymat,alpha=0.001, maxiter = 10000):
    """
    梯度下降更新w
    """
    # w init
    w = np.mat(np.random.randn(3,1))
    # w update
    for i in range(maxiter):
        H = 1/(1+np.exp(-xmat*w))              # 预测值
        dw = np.dot(xmat.T,H-ymat)             # cost对w的导数
        w -= alpha*dw                          # 更新w
    return w





xmat,ymat = loaddate('DATA.txt')
#print('xmat:',xmat,xmat.shape)
#print('ymat:',ymat,ymat.shape)
W = w_calc(xmat,ymat)
print(W)
# 画出散点图
plt.scatter(xmat[:,1][ymat==0].A,xmat[:,2][ymat==0].A,marker = '^',s=150,label = 'label=0')
plt.scatter(xmat[:,1][ymat==1].A,xmat[:,2][ymat==1].A,s=150,label = 'label=1')


# 画出z
w0 = W[0, 0]
w1 = W[1, 0]
w2 = W[2, 0]
plotx1 = np.arange(1,7,0.01)
plotx2 = -w0/w2-w1/w2*plotx1
plt.plot(plotx1,plotx2,c='r',label='decision_boundary')
plt.grid()
plt.legend()
plt.show()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值