当前位置: 首页 > news >正文

数学建模--逻辑回归算法的Python实现

首先感谢CSDN上发布吴恩达的机器学习逻辑回归算法任务的各位大佬.

通过大佬的讲解和代码才勉强学会.

这篇文章也就是简单记录一下过程和代码.

CSDN上写有关这类文章的大佬有很多,大家都可以多看一看学习学习.

机器学习方面主要还是过程和方法.

这篇文章只完成了线性可分方面的任务,由于时间关系,线性不可分的任务就没有去涉及.

若要深入学习请看这位大佬的文章:https://blog.csdn.net/Cowry5/article/details/80247569

目录

1.数据初始化 

2.数据绘图可视化

3.设置关键函数

4.利用fmin_tnc函数进行拟合

5.计算模型正确率

6.计算绘制图形的决策边界

1.数据初始化 

#%%
#导入必要的库和函数
import scipy.optimize as opt
import time
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from torch import sigmoid
#获取数据并查阅
path="C:\\Users\\Zeng Zhong Yan\\Desktop\\py.vs\\.vscode\\数学建模\\逻辑回归模型材料包\\逻辑回归数据1.txt"
global data1
data=pd.read_csv(path,names=['exam_1','exam_2','admitted'])
data.head()

 

2.数据绘图可视化

#%%
#利用.isin()函数将录取和未录取的样本分离
positive = data[data['admitted'].isin([1])] 
negative = data[data['admitted'].isin([0])] 
#然后进行可视化绘图
#fig用来绘制图像,ax绘制坐标系
fig,ax=plt.subplots(figsize=(10,4))
ax.scatter(positive['exam_1'], positive['exam_2'], s=30, c='b', marker='o', label='Admitted')
ax.scatter(negative['exam_1'], negative['exam_2'], s=30, c='r', marker='x', label='Not Admitted')
ax.legend()
ax.set_xlabel('Exam_1 Score')
ax.set_ylabel('Exam_2 Score')
ax.figure.savefig('C:\\Users\\Zeng Zhong Yan\\Desktop\\py.vs\\.vscode\\数学建模\\逻辑回归模型材料包\\逻辑回归散点分布.png', dpi=500, bbox_inches='tight')
#%%

 

3.设置关键函数

#创建逻辑回归类#创建激活函数
def sigmoid(x):y=1 / (1 + np.exp(-x))return y#创建一个函数检查一下其是否能够正常工作"""x1 = np.arange(-10, 10, 0.1)plt.plot(x1, sigmoid(x1), c='r')plt.show()"""
def cost(theta, X, y):first = (-y) * np.log(sigmoid(X @ theta))second = (1 - y)*np.log(1 - sigmoid(X @ theta))return np.mean(first - second)
if 'Ones' not in data.columns:data.insert(0, 'Ones', 1)#创建一个训练训练集
X = data.iloc[:, :-1].values  
y = data.iloc[:, -1].values 
theta = np.zeros(X.shape[1])
print(X.shape, theta.shape, y.shape)# ((100, 3), (3,), (100,))
def gradient(theta, X, y):return (X.T @ (sigmoid(X @ theta) - y))/len(X)  

4.利用fmin_tnc函数进行拟合

#%%
"""
1.利用fmin_tnc函数进行拟合
2.或者利用minimize函数进行拟合,minimize中的method有很多的算法进行计算,设置method=xxx即可
"""
result = opt.fmin_tnc(func=cost, x0=theta, fprime=gradient, args=(X, y))
result
# (array([-25.16131867,   0.20623159,   0.20147149]), 36, 0)

5.计算模型正确率

#%%
"""
我们将theta训练完毕之后我们就能够利用模型来测试学生是否能被录取了
以下就是我们构造函数的过程,设置h(x)
如果h(x)=>0.5->能够被录取
如果h(x)<0.5->不能够被录取
根据以上书写预测函数
"""
"""
def predict(theta, X):probability = sigmoid(X@theta)for x in probability:if x>=0.5:return 1else:return 0
"""
def predict(theta, X):probability = sigmoid(X@theta)return [1 if x >= 0.5 else 0 for x in probability]  # return a list
#%%
"""
预测之后我们可以查看以下模型预测的正确率如何
"""
final_theta = result[0]
predictions = predict(final_theta, X)
correct = [1 if a==b else 0 for (a, b) in zip(predictions, y)]
accuracy = sum(correct) / len(X)
accuracy#0.89

6.计算绘制图形的决策边界

面我们将设置模型的决策边界
x1 = np.arange(130, step=0.1)
x2 = -(final_theta[0] + x1*final_theta[1]) / final_theta[2]
#%
fig, ax = plt.subplots(figsize=(8,4))
ax.scatter(positive['exam_1'], positive['exam_2'], c='b', label='Admitted')
ax.scatter(negative['exam_1'], negative['exam_2'], s=50, c='r', marker='x', label='Not Admitted')
ax.plot(x1, x2)
ax.set_xlim(0, 130)
ax.set_ylim(0, 130)
ax.set_xlabel('x1')
ax.set_ylabel('x2')
ax.set_title('Decision Boundary')
ax.figure.savefig('C:\\Users\\Zeng Zhong Yan\\Desktop\\py.vs\\.vscode\\数学建模\\逻辑回归模型材料包\\Decision Boundary.png', dpi=500, bbox_inches='tight')
#%%

 

 

相关文章:

数学建模--逻辑回归算法的Python实现

首先感谢CSDN上发布吴恩达的机器学习逻辑回归算法任务的各位大佬. 通过大佬的讲解和代码才勉强学会. 这篇文章也就是简单记录一下过程和代码. CSDN上写有关这类文章的大佬有很多,大家都可以多看一看学习学习. 机器学习方面主要还是过程和方法. 这篇文章只完成了线性可分方面的任…...

Qt6_贪吃蛇Greedy Snake

贪吃蛇Greedy Snake 1分析 首先这是一个贪吃蛇界面&#xff0c;由一个长方形边框和一只贪吃蛇组成 默认开局时&#xff0c;贪吃蛇身体只有3个小方块&#xff0c;使用画笔画出 1.1如何移动 对于蛇的移动&#xff0c;有2种方法 在一定时间范围内(定时器)&#xff0c;未对游戏…...

Credo推出业界首款单片集成CMOS VCSEL驱动器的800G光DSP芯片

针对AOC及短距&#xff08;SR&#xff09;光模块优化的新型Credo DSP&#xff0c;适用于下一代超大规模数据中心/AI应用 加州圣何塞和中国深圳&#xff0c;2023年9月6日——Credo Technology&#xff08;纳斯达克股票代码&#xff1a;CRDO&#xff09;今日发布两款新品&#x…...

【经验分享】如何使用VSCode对比两个文件

问题&#xff1a; 当有两个不同版本的文件&#xff0c;如何使用VSCode对比两个文件 解决办法 长按ctrl选择想要对比的两个文件-----右键选择将已选项进行比较----大功告成 大功告成...

从裸机开始安装ubuntu系统到安装NVIDIA驱动

这篇文章为总结类文章&#xff0c;更多的是把各个博主的内容总结一下&#xff0c;形成一套端到端的方法&#xff0c;主要内容包括&#xff1a; 安装ubuntu22.04版本(含启动U盘制作)配置ssh、固定ip和端口号安装NVIDIA驱动安装cuda11.7和cudnn8.6 文章目录 一、安装ubuntu22.041…...

索尼 toio™ 应用创意开发征文|小巧机器,大无限,探索奇妙世界

文章目录 前言微型机器人的未来&#xff1a;toio™小机器人简介toio™小机器人&#xff1a;创新功能一览toio™小机器人&#xff1a;多领域的变革者toio™小机器人贪吃蛇游戏代码实现写在最后 前言 当我们谈到现代科技的创新时&#xff0c;往往会联想到复杂的机器和高级的编程…...

什么牌子的led台灯质量好?热门的Led护眼台灯推荐

led台灯有环保无污染、耗能低、长寿命等优点&#xff0c;适合用在阅读、书写、批阅等办公或学习的场所。而挑选LED台灯时&#xff0c;分散光挡板做的比较好的优先选择&#xff0c;能分散大量蓝光&#xff0c;对眼睛危害较小。下面&#xff0c;小编为大家推荐五款质量好的led护眼…...

预推免,保研------长安大学保内,附加分面试准备【记录帖】

&#x1f680;长安大学——人工智能系——程惠泽 &#x1f68c;前六学期专业排名&#xff1a;7/82 &#x1f68c;信息门户GPA&#xff1a;3.94 &#x1f68c;平均成绩&#xff1a;89.83 &#x1f68c;加权成绩&#xff1a;89.15 / ☁️本人比较菜&#xff0c;只能保研本校&…...

Linux开源防病毒引擎ClamAV

ClamAV官方地址&#xff1a;https://www.clamav.net 它支持Linux、BSD、windows、Mac OS X等系统。 在CentOS 8&#xff08;Tencent OS 3.1&#xff09;安装非常便利&#xff0c;可以使用yum。 yum install clamav 安装成功&#xff0c;就可以使用它进行病毒扫描检查了。 c…...

Java复习-25-单例设计模式

单例设计模式 目的&#xff08;使用场景&#xff09; 在实际开发下&#xff0c;会存在一种情况&#xff1a;某一种类在程序的整个生命周期中&#xff0c;只需要实例化一次就足够了。例如&#xff0c;系统数据类&#xff0c;由于操作系统只有一个&#xff0c;因此在程序初始化…...

博客系统自动化测试项目实战(测试系列9)

目录 前言&#xff1a; 1.博客前端页面测试用例图 2.测试用例的代码实现 2.1登录页面的测试 2.2博客列表页面的测试 2.3写博客测试 2.4博客详情页面的测试 2.5已发布博客的标题和时间的测试 2.6注销用户的测试 结束语&#xff1a; 前言&#xff1a; 之前小编给大家讲…...

华纳云:Linux的底层体系结构是怎样的

Linux操作系统的底层体系结构是一个开源的Unix-like操作系统内核&#xff0c;通常称为Linux内核(Linux Kernel)。下面是Linux底层体系结构的主要组成部分和工作原理&#xff1a; 内核&#xff08;Kernel&#xff09;&#xff1a; Linux的核心部分是内核&#xff0c;它是操作系统…...

SpringMVC常用注解介绍及参数传递说明

前言 上一篇文章介绍了SpringMVC是什么以及它的工作流程和核心组件&#xff0c;介绍入门示例时&#xff0c;提到了RequestMapping注解&#xff0c;那么这篇文章就来介绍SpringMVC中更多的常用的注解&#xff0c;以及它的参数传递。 一. SpringMVC常用注解 1.1 RequestParam …...

4 个你可能不知道的 Python 迭代工具过滤器函数

推荐&#xff1a;使用 NSDT场景编辑器 快速搭建3D应用场景 当您只想循环遍历迭代器、检索序列中的元素并处理它们时&#xff0c;这些元素特别有用 - 所有这些都无需将它们存储在内存中。今天我们将学习如何使用以下四个迭代工具过滤器函数&#xff1a; filterfalsetakewhiledr…...

Scrapy简介-快速开始-项目实战-注意事项-踩坑之路

scrapy项目模板地址&#xff1a;https://github.com/w-x-x-w/Spider-Project Scrapy简介 Scrapy是什么&#xff1f; Scrapy是一个健壮的爬虫框架&#xff0c;可以从网站中提取需要的数据。是一个快速、简单、并且可扩展的方法。Scrapy使用了异步网络框架来处理网络通讯&…...

lightdb 支持兼容Oracle的to_clob函数

文章目录 概述案例演示 概述 在信创移植的SQL语句中&#xff0c;有来源于Oracle数据库的SQL语句。 在ORACLE PL/SQL包中&#xff0c;你可以使用TO_CLOB(character)函数将RAW、CHAR、VARCHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB值转换为CLOB。 因此在LightDB 23.3版本中实现了…...

ES6中let和const关键字与var关键字之间的区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 变量作用域&#xff08;Scope&#xff09;&#xff1a;⭐ 变量提升&#xff08;Hoisting&#xff09;&#xff1a;⭐ 重复声明&#xff1a;⭐ 初始化&#xff1a;⭐ 全局对象属性&#xff1a;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#…...

Python中的异常处理3-1

Python中的异常指的是语法上没有错误&#xff0c;但是代码执行时会导致错误的情况。 1 抛出异常 在图1所示的代码中&#xff0c;要求用户输入一个数字&#xff0c;该代码在语法上没有错误。 图1 出现异常的代码 但是运行该代码之后&#xff0c;如果用户输入的是数字&#xf…...

大数据与AI:解析智慧城市的幕后英雄

文章目录 1. 智慧城市的定义与发展2. 大数据&#xff1a;智慧城市的基石2.1 大数据的概念与重要性2.2 大数据的应用案例2.2.1 智能交通管理2.2.2 能源效率优化2.2.3 城市规划与土地利用 3. 人工智能&#xff1a;智慧城市的大脑3.1 人工智能的概念与重要性3.2 人工智能的应用案例…...

将钉钉机器人小程序从一个公司迁移至另一个公司的步骤

引言&#xff1a; 由于我们以前开发的钉钉小程序都在一个公司&#xff0c;想在想应用到另一个公司&#xff0c;这就牵扯出了关于钉钉小程序迁移方面的具体步骤。下面是具体步骤&#xff1a; 1、创建一个钉钉小程序 在这一步你需要有钉钉开放平台的开发者权限&#xff0c;具体…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...