机器学习-逻辑回归

前言

逻辑回归虽然叫回归,实际上是一个二分类模型,要知道回归模型是连续的,而分类模型是离散的,逻辑回归简单点理解就是在线性回归的基础上增加了一个 sigmoid 函数

逻辑回归 = 线性回归 + sigmoid 函数

回顾线性回归
  • 表达式:y=wx+b
  • image-20230206190518953
sigmoid 函数
  • 什么是sigmoid 函数

    image-20230206190711652

    sigmoid 是以0.5为分界线的激活函数,主要用于将结果输入sigmoid 函数中sigmoid函数会输出一个[0,1] 区间的概率值0.5以上为一类0.5以下为一类,这样完成二分类任务

  • 公式:sig(x)=11+ex

逻辑回归的公式
  • z=wx+b

  • y=11+ez

  • 所以可以写成 y=11+ewx+b

逻辑回归的损失
  • J=[ylna+(1y)ln(1a)]
  • 逻辑回归损失函数体现在“预测值” 与 “实际值” 相似程度上
  • 损失值越小,模型会越好,但是过于小也要考虑过拟合的原因
梯度下降与参数更新

梯度下降:Δθj=1mXT(hy)

deltatheta = (1.0 / m) * X.T.dot(h - y)

更新参数:θj=θjαΔθj

theta = theta - alpha * deltatheta
代码
import numpy as np
import matplotlib.pyplot as plt
data = np.loadtxt('ex2data1.txt',delimiter=',')
x = data[:,:-1]
y = data[:,-1]
x -= np.mean(x,axis=0)
x /= np.std(x,axis=0)
X = np.c_[np.ones(len(x)),x]
def mov(theta):
z = np.dot(X,theta)
h = 1/(1+np.exp(-z))
return h
def cos(h):
j = -np.mean(y*np.log(h)+(1-y)*np.log(1-h))
return j
def tidu(sus=10000,aphe=0.1):
m,n = X.shape
theta = np.zeros(n)
j = np.zeros(sus)
for i in range(sus):
h = mov(theta)
j[i] = cos(h)
te = (1/m)*X.T.dot(h-y)
theta -= te * aphe
return h,j,theta
if __name__ == '__main__':
h,j,theta = tidu()
print(j)
plt.plot(j)
plt.show()
posted @   太阳是白的  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示