Python人工智能逻辑回归算法原理和实现(概率统计、信息论信息熵、梯度下降)

AI人工智能中的数学基础原理与Python实战:数据挖掘与数学基础 1.背景介绍 人工智能(AI)和机器学习(ML)是当今最热门的技术领域之一,它们在各个行业中发挥着越来越重要的作用。然而,要真正理解和应用这些技术,需要掌握一定的数学基础。本文将讨论AI和ML中的数学基础原理,并通过Python实战来展示如何应用这些原理。 在本文中,我们将讨论以下主题: 背景介绍 阅读详情

1、假设,线性线的函数是:


f(x) = θ0+θ1*x11 + θ2*x12

传说中的激活函数,将数值转换为概率值:
sigmoid,relu 函数:
g(z) = 1/(1+e(-z)) # e=2.718

z = f(x)

# 逻辑回归问题的假设函数:
h(x) = 1/(1+e^(-(θ0+θ1*x11 + θ2*x12))) 
[0, 1] 0.5为分界线 >= 0.7  1  小于0.7为 0

h(x) = 0.7

1/(1+e(-(θ0+θ1*x11 + θ2*x12)))  = 0.7

2、 逻辑回归问题的成本函数,假设有m个样本:


J(θ) = (-y(1)*log(1/(1+e^(-(θ0+θ1*x11 + θ2*x12))) - (1-y(1))*log(1 - 1/(1+e^(-(θ0+θ1*x11 + θ2*x12))) )+
       ... + (-y(m)*log(1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2))) - (1-y(m))*log(1 - 1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2))) )
       
3、基于成本函数,求以上式子的极小值,涉及到求导数:
J’(θ0) = -y(1)*(1+e^(-(θ0+θ1*x11 + θ2*x12))*1/(1+e^(-(θ0+θ1*x11 + θ2*x12))*(1 - 1/(1+e^(-(θ0+θ1*x11 + θ2*x12)))*(1)
         -(1-y(1))*(1/(1 - 1/(1+e^(-(θ0+θ1*x11 + θ2*x12))))*-1*(1 - 1/(1+e^(-(θ0+θ1*x11 + θ2*x12))*1/(1+e^(-(θ0+θ1*x11 + θ2*x12)*1
         +...+
         -y(m)*(1+e^(-(θ0+θ1*xm1 + θ2*xm2))*1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2))*(1 - 1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2)))*(1)
          -(1-y(m))*(1/(1 - 1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2))))*-1*(1 - 1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2))*1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2)*1
       = -y1*(1 - 1/(1+e^(-(θ0+θ1*x11 + θ2*x12))) + (1 - y1)*1/(1+e^(-(θ0+θ1*x11 + θ2*x12)+...+
         ym*(1 - 1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2))) + (1 - ym)*1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2)
       
       = (-y1 + 1*(1/(1+e^(-(θ0+θ1*x11 + θ2*x12)))*1+...+ (-ym + 1*(1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2)))*1
    
...

J’(θ2) = -y(1)*(1+e^(-(θ0+θ1*x11 + θ2*x12))*1/(1+e^(-(θ0+θ1*x11 + θ2*x12))*(1 - 1/(1+e^(-(θ0+θ1*x11 + θ2*x12)))*(x12)
         -(1-y(1))*(1/(1 - 1/(1+e^(-(θ0+θ1*x11 + θ2*x12))))*-1*(1 - 1/(1+e^(-(θ0+θ1*x11 + θ2*x12))*1/(1+e^(-(θ0+θ1*x11 + θ2*x12)*x12
         +...+
         -y(m)*(1+e^(-(θ0+θ1*xm1 + θ2*xm2))*1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2))*(1 - 1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2)))*(xm2)
          -(1-y(m))*(1/(1 - 1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2))))*-1*(1 - 1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2))*1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2)*xm2
       = y1*(1 - 1/(1+e^(-(θ0+θ1*x11 + θ2*x12)))*x12 - (1 - y1)*1/(1+e^(-(θ0+θ1*x11 + θ2*x12)*x12+...+
         ym*(1 - 1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2)))*xm2 - (1 - ym)*1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2)*xm2
       
       =  (-y1 + 1/(1+e^(-(θ0+θ1*x11 + θ2*x12)*x12 +
          ...
          +
          (-ym + 1/(1+e^(-(θ0+θ1*xm1 + θ2*xm2)*xm2
       

以上存在规律:
在X扩完全为1的截距列之后:
J'(θ) = X.T.dot(h(X.dot(θ)) - y)

 

算法实现:

# 手写实现逻辑回归算法
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# 1、定义好数学方法:假设函数定义出来
def sigmoid(x):
    return  1./(1+np.exp(-x))
    pass

# 定义假设函数:X是一个矩阵  W是一个列向量
def hyFunction(X, W):
    return np.array([sigmoid(x) for x in X.dot(W)])
    pass

# 2、定义成本函数:基于信息论理论中信息熵构造
def costFunction(X, W, y,λ):
    px = np.array([sigmoid(x) for x in X.dot(W)])
    a  = np.array([np.log(x) if x>0 else 0 for  x in px ])
    b =  np.array([np.log(1 - x) if 1 - x>0 else 0 for  x in px ])
    return  (np.sum((-y * (a) - (1 - y) * (b))) + λ*np.sum(W**2)) /len(X)
    pass

# 3.成本函数的导函数:X是样本矩阵,W是系数,y是实际结果
def gradientFunction(X, W, y, λ):
    d = hyFunction(X, W)
    f = X.T.dot(hyFunction(X, W) - y)/len(X)
    return (X.T.dot(hyFunction(X, W) - y) + λ*W)/len(X) # 一次计算所有的W的梯度值
    pass


# 4.定义梯度下降算法:X是样本,w是初始系数,costFunc成本函数,gFunc梯度函数,lamb步进系数,tolance收敛条件,times最大计算次数
def gradientDescent(X, w, y, costFunc, gFunc, lamb=0.005, tolance=1.0e-5, times=50000, λ=0.001):
    t = 0
    # 上一次结算结果
    result = costFunc(X, w, y, λ)
    # 上一次的梯度
    g = gFunc(X, w, y, λ)
    # 根据梯度和步进系数计算的新的点
    newW = w - lamb * g
    # 代入判别函数计算新的结果值
    newResult = costFunc(X, newW, y, λ)
    # 如果两次的结算结果的差值没有达到收敛条件,继续迭代
    while np.abs(result - newResult) > tolance:
        # 把点移动到新的点
        w = newW
        result = newResult
        g = gFunc(X, w, y, λ)
        newW = w - lamb * g
        newResult = costFunc(X, newW, y, λ)
        t += 1
        # 避免无法收敛的情况
        if t > times:
            break
            pass
        pass
    return w
    pass


# 5.构造测试数据:验证算法的有效性
# 正则化
X = np.loadtxt(open('exam_score.csv', 'r'), delimiter=",",skiprows=1)
y = X[:,2]
X = X[:, [0, 1]]
XXX = X
# 必须做正则化
X =  (X - X.mean(axis=0)) / X.std(axis=0)

row = X.shape[0]
one = np.ones(row)
one = one[:,np.newaxis]

# X = np.hstack((X, one))
X= np.c_[one, X]

dataFrame = pd.DataFrame(X)
dataFrame.to_csv('data.csv')

# 猜一组初始的系数
w = gradientDescent(X, np.array([0.5, 0.5, 0.5]), y, costFunction, gradientFunction)
print(w)

# 验证数据验证算法的正确性
XX = np.array([[20,20],
     [88, 90],
      [90,90],
      [11, 12],
     [50,50]])
# 验证数据也需要正则化然后代入判别函数进行预测
XX = (XX - XX.mean(axis=0)) / XX.std(axis=0) # 标准的正则化方法:减去平均值,然后除以标准差

row = XX.shape[0]
one = np.ones(row)
one = one[:,np.newaxis]
XX= np.c_[one, XX]
# 预测验证数据的结果
print(hyFunction(XX, w))

# 6.对于简单数据可以图形化观察结果:hyFunction(XX, w) = 0.7
def splitLineFunc(X11):
    x12 = -np.log(3 / 7) / 1.8 - 1.1 * X11 - 0.57 / 1.8
    return x12
    pass

Y = splitLineFunc(X[:,1])
Z = y
Z = np.where(Z==1, 10, 0)
plt.scatter(X[:, 1], X[:, 2], c= Z)
plt.plot(X[:, 1], Y)
plt.show()

 

深度学习逻辑回归算法 可以用于实战的逻辑回归算法实现原理,兼顾原理与实践,是非常好的工具书。 立即下载

相关推荐

机器人抓取(一)—— ROS MoveIt! 程序控制真实UR5机器人运动(python)

接上篇:ubuntu18.04 ros-melodic 安装 ur_robot_driver,驱动真实的 ur5 机器人 上文在 ubuntu 系统中配置了ur 机器人ros功能包 universal_robot 和驱动 Universal_Robots_ROS_Driver,并实现了用 moveit_rviz 拖动机器人运动。本文旨在学习如何使用 moveit python 用户接口moveit_commander,实现真实的ur5 机器人轨迹规划与控制。 1. ur5 机器人控制 参考:MoveIt »

zxxRobot的博客 1万+

Python与人工神经网络(5)——交叉熵成本函数

我们花了两篇文章的篇幅,建立了一个神经网络来识别手写图像,看起来效果相当不错,超过95%的正确率,实际上如果第二层使用100个隐藏神经元的时候,准确率可以再提升一个百分点。在这个过程中我们主要使用了随机梯度下降算法和反向传播算法,并且从原理到实现,都走了一遍。 现在作者给了我们一个练习,有这么一个神经网络,只有一个输入神经元,一个输出神经元,所以他只有一个w和一个b值,现在输入值x是1,期望的输

诗酒趁养狗 3723

GPS从入门到放弃(十七) --- 对流层延时

GPS从入门到放弃(十七) — 对流层延时 对流层概念 对流层(Troposphere)地球大气层靠近地面的一层。它同时是地球大气层里密度最高的一层,它蕴含了整个大气层约75%的质量,以及几乎所有的水蒸气及气溶胶。 对流层的下界与地面相接,上界高度随地理纬度和季节而变化,在低纬度地区平均高度为1718公里,在中纬度地区平均为1012公里,在高维度地区平均为8~9公里,并且夏季高于冬季。 卫星导航...

tyst08的专栏 1万+

Python 高级:人工智能(线性回归、岭回归、逻辑回归)

1、机器学习算法怎么从数据中学习规律 线性回归:,和称之为可训练参数; 算法学习:找到最优的可训练参数; 构造损失函数:。函数值越小,模型的预测值与真实值越接近,求最小的时候和的值。 2、线性回归api from sklearn.linear_model import LinearRegression # 获取数据 x = [[80, ...

maergaiyun的博客 673

glibc手动升级高版本导致系统(RedHat/Centos)异常(无法开机等)的解决方法(回退低版本glibc)

我的系统是Redhat7.6, 理论上Redhat7/Centos7都可以使用该方法解决问题。 首先慎重提醒各位:glibc升级会产生无法预料的后果!由于Android NDK需要高版本的glibc才可以使用,所以作死手动去更新了glibc2.18,使得重启系统后图形界面消失。(Redhat/Centos升级此类安装包最好用yum升级,因为系统内的程序对他们的依赖很大,升级会导致大部分程序无法使用...

weixin_42881528的博客 9698

告别玄学调试:用STM32CubeMX和逻辑分析仪搞定DP83848的RMII与SMI接口

本文详细介绍了如何使用STM32CubeMX和逻辑分析仪调试DP83848的RMII与SMI接口,帮助开发者超越表象,直接观察底层通信波形。通过实战案例和高级调试技巧,解决常见问题如时钟偏移、信号完整性等,提升网络接口的稳定性和可靠性。

weixin_30752699的博客 300

机器学习之逻辑回归

逻辑回归(Logistic Regression)是一种用于解决二分类(0 or 1)问题的机器学习方法,可以用于估计某种事物的可能性。比如某用户购买某商品的可能性,某病人患有某种疾病的可能性,以及某广告被用户点击的可能性等。 本文的一个大致目录如下: 选取预测函数。 计算损失函数。 使用梯度下降计算损失函数最小值。 向量化。 基于梯度下降实现逻辑回归算法。 多项式特征。 多分类。 正则化。 ...

weixin_34343000的博客 265

逆向学习:从已上线微信小游戏反推Cocos工程结构(以切水果跑酷为例)

本文以“切水果跑酷”为例,详细介绍了如何通过逆向分析已上线的微信小游戏,反推其基于Cocos Creator的原始工程结构。文章深入拆解了编译后的目录骨架、资源加载逻辑与依赖关系,并重点解析了微信平台API的调用特征,为开发者提供了一种高效学习游戏架构与设计模式的实用方法。

kk1234的博客 1076

Logistic回归

本章节讲解逻辑回归的基本原理、逻辑回归模型构建过程。课程环境使用Jupyter notebook环境。

小森的博客 1344

MATLAB2022b安装

图文并茂,手把手教会你怎么安装MATLAB2022b

1万+

systermverilog中for循环中的fork join执行情况分析

仅为本人学习记录,如有错误感谢指正!

qq_63807221的博客 1461

《深入详解人工智能机器学习算法 —— 逻辑回归算法》

梯度下降法是一种基于优化理论的方法,它通过不断地调整模型的参数,使得损失函数的值逐渐减小,直到达到最小值。例如,可以使用逻辑回归算法来评估客户的信用风险,根据客户的个人信息、财务状况和信用记录等特征来建立信用评估模型。其中,是输入特征的线性组合,即,是模型的参数,是输入特征。其中,是训练样本的数量,是第个训练样本的真实类别,是第个训练样本的输入特征,是模型对第个训练样本预测的属于类别的概率。否则,预测输入属于类别。其中,是模型的第个参数,是学习率,表示每次更新参数值的步长,是损失函数对第个参数的偏导数。

weixin_47266126的博客 1199

YOLO11多类别数据集的类别平衡方法:讲解类别不平衡问题的识别方法,以及过采样、欠采样、类别权重调整等解决方案(一)

类别不平衡问题是机器学习和计算机视觉领域中一个常见但棘手的挑战。简单来说,当数据集中不同类别的样本数量存在显著差异时,我们就称这个数据集存在类别不平衡问题。在YOLO目标检测任务中,这意味着某些类别的目标对象在训练数据中出现得非常频繁,而其他类别的目标对象则很少出现。 想象一下,你正在训练一个交通监控系统,需要检测不同类型的车辆。在这个场景中,"汽车"这个类别可能有成千上万个实例,而"自行车"或"摩托车"可能只有几百个实例。这种数量上的巨大差异就是典型的类别不平衡问题。 从数学角度来看,假设我们有一个包

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 940

AI入门必看的超详细人工智能学习路径

人工智能包括机器学习和深度学习深度学习,而自然语言处理和计算机视觉正是人工智能领域热门的方向。**路径一:**如果你希望快速学习完进行项目实践,请直接学习深度学习,不过编程和数学基础还是要有的(之后如果遇到不懂的地方,单独学不懂的地方就可以了)**路径二:**一步一个脚印,扎扎实实从基础学起,逐步提高学习难度(后附学习大纲)在深入学习人工智能之前,你需要对这个行业有一个初步的了解,包括当前的发展趋势和关键技术。这样,你就能为接下来的学习做好准备。机器学习领域包含了众多算法,这些算法往往基于数学理论。

2401_84206094的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

人工智能学习路径全攻略:AI入门必看,超详细!

人工智能包括机器学习和深度学习深度学习,而自然语言处理和计算机视觉正是人工智能领域热门的方向。**路径一:**如果你希望快速学习完进行项目实践,请直接学习深度学习,不过编程和数学基础还是要有的(之后如果遇到不懂的地方,单独学不懂的地方就可以了)**路径二:**一步一个脚印,扎扎实实从基础学起,逐步提高学习难度(后附学习大纲)在深入学习人工智能之前,你需要对这个行业有一个初步的了解,包括当前的发展趋势和关键技术。这样,你就能为接下来的学习做好准备。机器学习领域包含了众多算法,这些算法往往基于数学理论。

2401_84205765的博客 2301

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: 警醒:django框架MySql limit分页查询机制和多表查询时遇到的坑(使用limit实现真分页和左连接查询)
下一篇: Python高性能服务:Python在linux centos下部署nginx+uwsgi+django+mysql8.0+redis共享session实现分布式高可靠生产环境
猿说猿道
博客等级 码龄8年 120粉丝 55原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值