当前位置: 首页 > 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;具体…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...