【人工智能基础】逻辑回归实验分析

实验环境:anaconda、jutpyter Notebook

实验使用的库:numpy、matplotlib

一、逻辑回归

逻辑回归是一个常用于二分类的分类模型。本质是:假设数据服从这个分布,然后使用极大似然估计做参数的估计

二、实验准备

引入库、预设值图像参数和随机种子
加载数据集:实验中使用到的是鸢尾花数据集

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['axes.labelsize'] = 14
plt.rcParams['xtick.labelsize'] = 12
plt.rcParams['ytick.labelsize'] = 12
np.random.seed(42)# 加载鸢尾花数据集
from sklearn import datasets
iris = datasets.load_iris()
# 查看数据集有哪些属性
print(list(iris.keys()))
print()
# 查看数据集的描述
print(iris.DESCR)

三、sigmoid函数

Logistic 分布是一种连续型的概率分布,其分布函数为

F(x) = P(X ≤ x) = 1 / (1 + e^(-(x-μ)/γ)

可以绘制除sigmoid函数的图像

# sigmoid函数
t = np.linspace(-10,10,100)
# σ(t) = 1 / (1 + e^(-t))
sig = 1 / (1 + np.exp(-t))
plt.figure(figsize=(9,3))
# 绘制参考线
plt.plot([-10,10],[0,0],"k-")
plt.plot([-10,10],[0.5,0.5],"k:")
plt.plot([-10,10],[1,1],"k:")
plt.plot([0,0],[-1.1,1.1],"k-")
# 绘制图像
plt.plot(t,sig,"b-",linewidth=2,label=r"$\sigma(t)=\frac{1}{1 + e^{-t}}$")
plt.xlabel("t")
plt.legend(loc="upper left", fontsize=20)
plt.axis([-10,10,-0.1,1.1])
plt.title("Figure 4-21. Logistic function")
plt.show()

sigmoid函数图像

四、单参数逻辑回归

提取参数x和标签y

# 截取数据第4列至最后一列的全部行数据
# 截取其中一个特征
x = iris['data'][:,3:]
# 设置类别为2(Virginica)的数据记为1,其他的两种记为0
y = (iris['target'] == 2).astype(np.int32)

训练模型

# 训练模型
from sklearn.linear_model import LogisticRegression
log_res = LogisticRegression()
log_res.fit(x,y)

使用模型进行预测

这里没有使用predcit函数来获取最终结果
而是使用predict_proba来获取数据在每个类下的概率,

# 创建测试数据,为1000*1的矩阵
x_test = np.linspace(0,3,1000).reshape(-1,1)
# 获取预测的概率值
y_proba = log_res.predict_proba(x_test)

单参数预测概率

矩阵一行的两个值分别代表0和1的概率,即Not Virginica和Virginica的概率

绘制预测曲线

plt.figure(figsize=(12,4))
plt.plot(x_test,y_proba[:,1],'g-',label='Virginica')
plt.plot(x_test,y_proba[:,0],'b--',label='Not Virginica')
# 找到分界线
decision_boundary = x_test[y_proba[:,1] >= 0.5][0][0]
plt.plot([decision_boundary,decision_boundary],[-1,2],'k:',linewidth=2)
# 绘制箭头
plt.arrow(decision_boundary, 0.08, -0.3, 0,head_width=0.05, head_length=0.1, fc='b',ec='b')
plt.arrow(decision_boundary, 0.92, 0.3, 0,head_width=0.05, head_length=0.1, fc='g',ec='g')
plt.axis([0,3,-0.02,1.02])
plt.text(decision_boundary,0.15,'Decision Boundary',fontsize=16,ha='center')
plt.xlabel('Peta Width(cm)')
plt.ylabel('y_proba')
plt.legend(loc='center left')

单参数预测曲线

五、多参数逻辑回归

参数获取

# 截取两个维度的参数
x = iris['data'][:,(2,3)]
# 目标值
y = (iris['target'] == 2).astype(np.int32)

训练模型

# 训练逻辑回归模型
from sklearn.linear_model import LogisticRegression
log_res = LogisticRegression()
log_res.fit(x,y)

额外:如何构建一个点阵

我们选取了两个x参数和一个目标值y,即形成的结果需要有三个轴,对于x0,x1所在的平面上选取到一个点,可以找到与之对应的y值。所以为了绘制y轴上的图像(我们最终使用x0ox1平面上的等高线投影来代表y),我们需要找到众多的点(x0,x1)

可以使用如下的方式来获取这样的(x0,x1)点阵

x0,x1 = np.meshgrid(np.linspace(1,2,2).reshape(-1,1),np.linspace(10,12,3).reshape(-1,1))
# 构建列相同数据
print('x0',x0)
print()
# 构建行相同数据
print('x1',x1)
print()
# 拉长数据后拼接
print(np.c_[x0.ravel(),x1.ravel()])

我们可以发现meshgrid
返回的第一个值x0就是一个根据入参1得到的列相同矩阵,
返回的第二个值x1就是一个根据入参2得到的行相同矩阵
当我们使用ravel函数把矩阵拉长(平铺成一维数组),再拼接起来,就可以得到一个点阵

点阵构建演示

选取x0ox1面上的点以及对应的预测值

x0,x1 = np.meshgrid(np.linspace(2.9,7,500).reshape(-1,1),np.linspace(0.8,2.7,200).reshape(-1,1))
x_test = np.c_[x0.ravel(),x1.ravel()]y_proba = log_res.predict_proba(x_test)

绘制概率等高线图

plt.figure(figsize=(10,4))
# Not Virginica的参数用蓝色方块表示
plt.plot(x[y==0,0],x[y==0,1],'bs')
# Virginica的参数用三角形表示
plt.plot(x[y==1,0],x[y==1,1],'g^')
# 绘制等高线,等高线表示概率
z = y_proba[:,1].reshape(x0.shape)
contour = plt.contour(x0,x1,z,cmap=plt.cm.brg)
plt.clabel(contour, inline=1)plt.axis([2.9,7,0.8,2.7])
plt.text(3.5,1.5,'NOT Vir',fontsize=16, color='b')
plt.text(6.5,2.3,'Vir',fontsize=16, color='g')

多参数概率等高线图

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

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

相关文章

如何与人沟通和交流技巧演讲(3篇)

如何与人沟通和交流技巧演讲(3篇) 如何与人沟通和交流技巧演讲(三篇) **篇:有效倾听,建立沟通基础 在与他人沟通和交流时,有效倾听是建立良好关系的基础。我们需要全神贯注地聆听对方的观点、…

[随记]Mac安装Docker及运行开源Penpot

下载Docker Desktop for Mac:https://www.docker.com/products/docker-desktop/ 安装Docker Desktop for Mac,安装完成后,启动Docker,然后在终端输入: docker version 在Mac电脑的Desktop,随便创建一个文…

深度学习:基于Keras,使用长短期记忆人工神经网络模型(LSTM)对股票市场进行预测分析

前言 系列专栏:机器学习:高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目,每个项目都处理一组不同的问题,包括监督和无监督学习、分类、回归和聚类,而且涉及创建深度学…

AMBA-CHI协议详解(二)

《AMBA 5 CHI Architecture Specification》 文章目录 2.1 Channels综述2.2 Channel域段2.2.1 request fields2.2.2 Response fields2.2.3 Snoop request fields2.2.4 Data fields 2.3 事务结构2.3.1 Read transactions2.3.1.1 Allocating Read2.3.1.2 Non-allocating Read 2.…

RabbitMQ中的交换机类型

交换机类型 可以看到,在订阅模型中,多了一个exchange角色,而且过程略有变化: Publisher:生产者,不再发送消息到队列中,而是发给交换机 Exchange:交换机,一方面&#xff…

万兆以太网MAC设计(11)完整UDP协议栈仿真

文章目录 前言一、模块接口二、IP模块与ARP模块之间的联系三、整体协议栈仿真总结: 前言 目前除了巨帧处理逻辑之外,所有的准备工作都已经结束了,先进行整体的功能验证。 一、模块接口 所有模块接口皆采用AXIS数据流的形式,其中…

基于残差神经网络的汉字识别系统+pyqt前段界面设计

研究内容: 中文汉字识别是一项具有挑战性的任务,涉及到对中文字符的准确分类。在这个项目中,目标是构建一个能够准确识别中文汉字的系统。这个任务涉及到数据集的收集、预处理、模型训练和评估等步骤。尝试了使用残差神经网络(ResNet&#x…

pyqt拖入图片并显示

pyqt拖入图片并显示 介绍效果代码 介绍 像拖入文本一样,把图片拖入到窗体中显示。 效果 代码 import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout from PyQt5.QtGui import QPixmap, QDragEnterEvent, QDropEvent from PyQt5.Q…

mysql 数据转excel文件

mysql 数据转excel文件 缘由 为售后拉取数据,用navicat太墨迹了,用python写一个main方法跑一下; 1.抽取共同方法,封装成传入mysql,直接下载成excel; 2.写入所有sql语句,传入参数; 代…

0418EmpTomCat项目 初次使用ajax实现局部动态离职

0418EmpTomCat项目包-CSDN博客 数据库字段: 员工部门表 分页查询; 多条件查询; 添加新员工; ajax点击离职操作效果:

如何搭建本地的 NPM 私有仓库 Nexus

NPM 本地私有仓库,是在本地搭建NPM私有仓库,对公司级别的组件库进行管理。在日常开发中,经常会遇到抽象公共组件的场景,在项目内部进行公用。新的项目开始时,也会拷贝一份创建一个新的项目,这样做不易于管理…

图像处理1,灰度,data,for循环批处理图片,图片属性查看,图片单通道查看,椒盐噪声的生成,滤波处理,图像分割

图像处理1 灰度处理data库的使用for循环批处理图像对图像属性的查看图片类型图片尺寸图片宽度图像高度通道数总像素个数最大像素值最小像素值,像素平均值图像点像素值 for循环分别显示图像rgb通道椒盐噪声的生成中值滤波处理高斯模糊处理图像切割 灰度处理 from sk…

【跟马少平老师学AI】-【神经网络是怎么实现的】(八)循环神经网络

一句话归纳: 1)词向量与句子向量的循环神经网络: x(i)为词向量。h(i)为含前i个词信息的向量。h(t)为句向量。 2)循环神经网络的局部。 每个子网络都是标准的全连接神经网络。 3)对句向量增加全连接层和激活函数。 每个…

Linux专栏05:Linux基本指令之目录处理指令

博客主页:Duck Bro 博客主页系列专栏:Linux专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Linux基本指令之目录处理指令 编号:05 文章目录 Linux基…

微软如何打造数字零售力航母系列科普04 - 微软联合Adobe在微软365应用程序中工作时推出新的生成式AI功能

微软和Adobe正在合作,将情境营销见解和工作流程引入微软Copilot,以提供生成的人工智能功能,使营销人员和营销团队能够在自然的工作流程中实现更多目标。 这些新的集成功能将在生产力和协作工具(如Outlook、Teams和Word&#xff0…

(51单片机)第十三章-STC系列51单片机功能介绍

13.1 单片机空闲与掉电模式的应用 1. 空闲模式 当单片机进入空闲模式时,除CPU处于休眠状态外,其余硬件全部处于活动状态,芯片中程序未涉及的数据存储器和特殊功能寄存器中的数据在空闲模式期间都将保持原值。假若定时器正在运行,…

《QT实用小工具·四十七》可交互的创意动态按钮

1、概述 源码放在文章末尾 该项目实现了可交互的创意动态按钮,包含如下功能: 所有颜色自定义 鼠标悬浮渐变 两种点击效果:鼠标点击渐变 / 水波纹动画(可多层波纹叠加) 额外鼠标移入/移出/按下/弹起的实时/延迟共8种事…

ctf web-部分

** web基础知识 ** *一.反序列化 在PHP中,反序列化通常是指将序列化后的字节转换回原始的PHP对象或数据结构的过程。PHP中的序列化和反序列化通过serialize()和unserialize()函数实现。 1.序列化serialize() 序列化说通俗点就是把一个对象变成可以传输的字符串…

Unity3d 学习之按钮绑定事件

创建测试脚本 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class myTest : MonoBehaviour {// Start is called before the first frame updatepublic Button _codeBindBtn null;void Start(){if (_codeBi…

数字旅游以科技创新为动力:推动旅游服务的智能化、网络化和个性化发展,满足游客日益增长的多元化、个性化需求

目录 一、引言 二、科技创新推动旅游服务智能化发展 1、智能化技术的引入与应用 2、智能化提升旅游服务效率与质量 三、科技创新推动旅游服务网络化发展 1、网络化平台的构建与运营 2、网络化拓宽旅游服务渠道与范围 四、科技创新推动旅游服务个性化发展 1、个性化需求…