最优化方法Python计算:无约束优化应用——逻辑回归模型

S型函数 sigmoid ( x ) = 1 1 + e − x \text{sigmoid}(x)=\frac{1}{1+e^{-x}} sigmoid(x)=1+ex1将全体实数 R \text{R} R映射到 ( 0 , 1 ) (0,1) (0,1),称为逻辑函数。其图像为
在这里插入图片描述
该函数连续、有界、单调、可微,性质量好。拟合函数为
F ( w ; x ) = sigmoid ( ( x ⊤ , 1 ) w ) = 1 1 + e − ( x ⊤ , 1 ) w F(\boldsymbol{w};\boldsymbol{x})=\text{sigmoid}((\boldsymbol{x}^\top,1)\boldsymbol{w})=\frac{1}{1+e^{-(\boldsymbol{x}^\top,1)\boldsymbol{w}}} F(w;x)=sigmoid((x,1)w)=1+e(x,1)w1
的回归模型称为逻辑回归模型。逻辑回归模型可图示化为
在这里插入图片描述

其实,逻辑回归模型的拟合函数就是线性回归拟合函数与sigmoid函数的复合。下列代码实现逻辑回归模型

import numpy as np								#导入numpy
sigmoid = lambda x: 1/(1 + np.exp(-x))			#逻辑函数
class LogicModel(LineModel):					#逻辑模型def F(self, w, x):							#重载拟合函数return sigmoid(LineModel.F(self, w, x))    
class LogicRegressor(Regression, LogicModel):'''逻辑回归模型'''

程序的第2行将逻辑函数sigmoid实现为Python的lambda表达式。第3~5行表示逻辑模型的LogicModel实现为LineModel类(详见博文《最优化方法Python计算:无约束优化应用——线性回归模型》)的子类。在LogicModel的实现体中,仅在第4~5重载了拟合函数F,即表示为线性模型的拟合函数与sigmoid函数的复合。与Regression类(详见博文《最优化方法Python计算:无约束优化应用——回归模型的测试》)配合即可构成第6~7行的用于预测的逻辑回归模型LogicRegressor类。
例1 电影公司生产的影片的票房收入与该片的拍摄投资和广告推广费用相关。下表给出了5部影片的数据。

No.投资(百万)广告(百万)票房(百万)
1619
29312
312229
414335
516459

x = ( x 1 x 2 ) ∈ R 2 \boldsymbol{x}=\begin{pmatrix}x_1\\x_2\end{pmatrix}\in\text{R}^2 x=(x1x2)R2,其中, x 1 , x 2 x_1,x_2 x1,x2分别表示影片投资与广告费用, y ∈ R y\in\text{R} yR表示影片的票房收入。数据集 ( x i , y i ) (\boldsymbol{x}_i,y_i) (xi,yi) i = 1 , 2 , ⋯ , 5 i=1,2,\cdots,5 i=1,2,,5。构成样本特征矩阵 X = ( 6 1 9 3 12 2 14 3 16 4 ) \boldsymbol{X}=\begin{pmatrix}6&1\\9&3\\12&2\\14&3\\16&4\end{pmatrix} X= 6912141613234 ,标签向量 y = ( 9 12 29 35 59 ) \boldsymbol{y}=\begin{pmatrix}9\\12\\29\\35\\59\end{pmatrix} y= 912293559 。假定新影片的拍摄投资 x 1 = 10 x_1=10 x1=10,广告费用 x 2 = 3 x_2=3 x2=3,预测票房价值 y y y。如果拍摄投资 x 1 = 18 x_1=18 x1=18,广告费用 x 2 = 6 x_2=6 x2=6呢?
:下列代码用给定数据训练逻辑回归模型类LogicRegressor对象,并计算预测票房。

import numpy as np							#导入numpy
x = np.array([[6, 1],						#设置训练数据[9, 3],[12, 2],[14, 3],[16, 4]])
y = np.array([9, 12, 29, 35, 59])
movi = LogicRegressor()						#创建逻辑回归模型
movi.fit(x, y)								#训练模型
x1 = np.array([[10, 3],						#设置预测数据[18, 6]])
print('对新的影片数据x1')
print(x1)
print('预测票房分别为:%s'%movi.predict(x1))	#预测

就这么简单,看官借助注释信息不难理解代码意义。运行程序,输出

训练中...,稍候
14次迭代后完成训练。
对新的影片数据x1
[[10  3][18  6]]
预测票房分别为:[14.4999173  56.96081974]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/307015.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云服务器优惠活动大全

阿里云服务器优惠活动大全包括:云服务器新人特惠、云小站、阿里云免费中心、学生主机优惠、云服务器精选特惠、阿里云领券中心等,活动上阿里云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、轻量应用服务器2核2G3M带宽轻量服务器一年63元,…

电脑开机自动断电,简单4招,快速解决!

“不知道我的电脑最近是怎么回事,每次一开机就会出现自动断电的情况,有什么方法可以解决吗?” 在使用电脑时,由于电源供应不稳定或过热,以及各种硬件问题,可能会导致电脑开机自动断电。遇到这种情况&#x…

深度学习框架输出可视化中间层特征与类激活热力图

有时候为了分析深度学习框架的中间层特征,我们需要输出中间层特征进行分析,这里提供一个方法。 (1)输出中间特征层名字 导入所需的库并加载模型 import matplotlib.pyplot as plt import torch import torch.nn as nn from torch.nn import functiona…

C语言 linux文件操作(一)

文章目录 一、linux文件权限1.1文件描述符1.2文件描述符的范围和默认值1.3打开文件和文件描述符1.4标准文件描述符1.5文件描述符的重定向和关闭1.6I/O 操作1.7使用文件描述符进行进程通信1.8资源限制 二、C语言文件读写2.1open 函数2.2 flags参数详解2.3 lseek 函数 一、linux文…

竞赛保研 基于情感分析的网络舆情热点分析系统

文章目录 0 前言1 课题背景2 数据处理3 文本情感分析3.1 情感分析-词库搭建3.2 文本情感分析实现3.3 建立情感倾向性分析模型 4 数据可视化工具4.1 django框架介绍4.2 ECharts 5 Django使用echarts进行可视化展示5.1 修改setting.py连接mysql数据库5.2 导入数据5.3 使用echarts…

爬虫学习(1)--requests模块的使用

前言 什么是爬虫 爬虫是一种自动化工具,用于从互联网或其他计算机网络上获取数据。它可以模拟人的行为,自动访问网页,提取感兴趣的数据,并将其存储到本地计算机或数据库中。爬虫通常用于搜索引擎、数据分析、信息聚合等领域&…

Lichee Nano(F1C100s) Linux 开发环境搭建

Lichee Nano是基于全志科技的F1C100s(ARM 926EJS内核)高性能soC芯片设计的迷你开发板。开发板设计小巧精致,将芯片的所有资源都引出,板载USB、Flash、TF卡、4OP LCD接口等,并把所有IO资源引出,方便开发者拓展使用,非常…

24年软件测试的晋升之路与能力要求,“我“该何去何从?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、软件测试人员的…

java中如何使用elasticsearch—RestClient操作文档(CRUD)

目录 一、案例分析 二、Java代码中操作文档 2.1 初始化JavaRestClient 2.2 添加数据到索引库 2.3 根据id查询数据 2.4 根据id修改数据 2.4 删除操作 三、java代码对文档进行操作的基本步骤 一、案例分析 去数据库查询酒店数据,导入到hotel索引库&#xff0…

程序员必知!适配器模式的实战应用与案例分析

适配器模式是一种结构型设计模式,它允许不同接口的对象协同工作,它通过将一个类的接口转换成客户希望的另外一个接口,使得不兼容的类可以一起工作。适配器模式提高了类的复用性、系统的灵活性和可扩展性,并降低了系统间的耦合度&a…

React快速入门之组件

目录 组件JSX在标签使用{}嵌入JS表达式使用组件组件嵌套以🌲树的方式管理组件间的关系组件纯粹原则 组件 文件:Profile.js export default function Profile({isPacked true,head,stlyeTmp,src,size 80}) {if (isPacked) {head head &q…

在SpringBoot中自定义指标并使用Prometheus监控报警

公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享 在10 分钟教你使用Prometheus监控Spring Boot工程中介绍了如何使用Prometheus监控Spring Boot提供的默认指标,这篇介绍如何自定义业务指标,并使用Prometheus进行…