【深度学习实验】数据可视化

目录

一、实验介绍

二、实验环境

三、实验内容

0. 导入库

1. 归一化处理

归一化

 实验内容

2. 绘制归一化数据折线图

报错

解决

3. 计算移动平均值SMA

移动平均值

实验内容

4. 绘制移动平均值折线图

5 .同时绘制两图

6. array转换为tensor张量

7. 打印张量


 

 

 

一、实验介绍

  • Visualizing the Trend of Random Data Changes
  • 可视化随机数据变化的趋势

 

二、实验环境

 

conda create -n DL python=3.7 
conda activate DL
pip install torch==1.8.1+cu102 torchvision==0.9.1+cu102 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
conda install matplotlib

 

 

三、实验内容

0. 导入库

     According to the usual convention, import numpy, matplotlib.pyplot, and torch.按照通常的惯例,导入 numpy、matplotlib.pyplot 和 torch。
import numpy as np
import matplotlib.pyplot as plt
import torch

1. 归一化处理

归一化

        归一化处理是一种常用的数据预处理技术,用于将数据缩放到特定的范围内,通常是[0,1][-1,1]。这个过程可以确保不同特征或指标具有相似的数值范围,避免某些特征对模型训练的影响过大。

        在机器学习和数据分析中,归一化可以帮助改善模型的收敛速度和性能,减少由于特征尺度差异导致的问题。例如,某些机器学习算法(如梯度下降)对特征的尺度敏感,如果不进行归一化处理,可能会导致模型难以收敛或产生不准确的结果。

        常用的归一化方法包括最小-最大归一化(Min-Max normalization)和Z-score归一化(标准化)。

  • 最小-最大归一化将数据线性地缩放到指定的范围内。
  • Z-score归一化通过计算数据的均值和标准差,将数据转换为均值为0,标准差为1的分布。

 实验内容

    Read the file named `data.txt` containing 100 integers using NumPy, normalize all values to the range [0, 1], and store the normalized array with two decimal places.

        使用 NumPy 读取包含 100 个整数的名为“data.txt”的文件,将所有值规范化为范围 [0, 1],并存储具有两个小数位的规范化数组。

 

data = np.loadtxt('data.txt')
# 归一化处理
normalized_array = (data - np.min(data)) / (np.max(data) - np.min(data))
# 保留两位小数
normalized_data = np.round(normalized_array, 2)
# 打印归一化后的数组
print(normalized_array)

 

69fe508d25e64c1a9c65597cbfe65306.png

2. 绘制归一化数据折线图

         Create a line plot using Matplotlib where the x-axis represents the indices of the normalized array ranging from 1 to 100, and the y-axis represents the values of the normalized array ranging from 0 to 1.

        使用 Matplotlib 创建一个折线图,其中 x 轴表示规范化数组的索引,范围从1到100,y 轴表示规范化数组的值,范围从0到1。

# 创建x轴数据
x = np.arange(1, 101)
# 绘制折线图
plt.plot(x, normalized_array)# 设置x轴和y轴的范围
plt.xlim(1, 100)
plt.ylim(0, 1)
plt.title("Normalized Data")
plt.xlabel("Index")
plt.ylabel("Normalized Array")
plt.show()

 

报错

OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.

解决

conda install nomkl

 

e1e293471fad4897a870b45d1da96b3b.png

3. 计算移动平均值SMA

移动平均值

        移动平均值(Moving Average)是一种数据平滑处理的方法,可以在一段时间内计算数据序列的平均值。这种方法通过不断更新计算的平均值,使得输出的数据更加平滑,减少噪声和突变的影响。

        移动平均值有多种类型,其中最常见的是简单移动平均值(Simple Moving Average,SMA)和指数移动平均值(Exponential Moving Average,EMA)。这两种方法的计算方式略有不同。

  1. 简单移动平均值(SMA):
    简单移动平均值是对指定时间段内的数据进行平均处理的方法,计算公式如下:

    SMA = (X1 + X2 + X3 + ... + Xn) / n

    其中,X1, X2, ..., Xn 是指定时间段内的数据,n 是时间段的长度。

    例如,要计算最近5天的简单移动平均值,可以将这5天的数据相加,再除以5。

  2. 指数移动平均值(EMA):
    指数移动平均值是对数据进行加权平均处理的方法,计算公式如下:

    EMA = (X * (2/(n+1))) + (EMA_previous * (1 - (2/(n+1))))

    其中,X 是当前数据点的值,n 是时间段的长度,EMA_previous 是上一个时间段的指数移动平均值。

    指数移动平均值使用了指数衰减的加权系数,更加重视最近的数据点。

        使用移动平均值可以平滑数据序列,使得数据更具可读性,减少随机波动的影响。这在时间序列分析、技术分析和数据预测等领域经常被使用。

 

实验内容

        Calculate the moving average of the normalized results using NumPy with a window size of 5. Store the calculated moving average values in a new one-dimensional NumPy array, referred to as the "average values array."

        使用窗口大小为 5 的 NumPy 计算归一化结果的移动平均值。将计算出的移动平均值存储在新的一维 NumPy 数组(称为“平均值数组”)中。

 

# 计算移动平均值
average_values_array = np.convolve(normalized_array, np.ones(5)/5, mode='valid')
print(average_values_array)

 

4. 绘制移动平均值折线图

    Create another line plot using Matplotlib where the x-axis represents the indices of the average values array ranging from 5 to 100, and the y-axis represents the values of the average values array ranging from 0 to 1.

        使用 Matplotlib 创建另一个线图,其中 x 轴表示平均值数组的索引,范围从 5 到 100,y 轴表示从 0 到 1 的平均值数组的值。

x_axis = range(5, 101)# 绘制折线图
plt.plot(x_axis, average_values_array)plt.xlim(5, 100)
plt.ylim(0, 1)
plt.title('Moving Average Line')
plt.xlabel('Index')
plt.ylabel('Average Values Array.')
plt.show()

 

7da23666f5ad444b95198a444c055c85.png

 

5 .同时绘制两图

        Combine the line plots of the normalized array and the average values array in the same figure using different colors for each line. 

        将归一化数组的线图和平均值数组组合在同一图中,每条线使用不同的颜色。

plt.plot(x, normalized_array, color='r', label='Normalized Array Line')
plt.plot(x_axis, average_values_array, color='b', label='Moving Average Line')
plt.legend()
plt.xlim(1, 100)
plt.ylim(0, 1)
plt.xlabel('Index')
plt.ylabel('Value')
plt.show()

e751b1bc39d94149ac897c174d00d501.png

 

6. array转换为tensor张量

   Transform the normalized array into a 2x50 Tensor by reshaping the data.

        通过重塑数据将归一化数组转换为 2x50 张量。

normalized_tensor = torch.tensor(normalized_array).reshape(2, 50)

 

7. 打印张量

        Print the resulting Tensor.

print(normalized_tensor)

0732e4b38e824aa98f36ab959b2ace63.png

 

 

 

 

 

 

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

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

相关文章

如何移除 ONLYOFFICE 中的插件

如果您需要移除 ONLYOFFICE 编辑器中的某个甚至所有的插件,本文会向您介绍如何操作。如要详细了解,请阅读本文。 为什么会想移除插件 ONLYOFFICE 用户想知道如何删除插件,隐私问题是主要原因之一。有些插件(如照片编辑器&#xf…

thinkphp6 入门(5)-- 模型是什么 怎么用

一、模型 MVC架构 之前开发一个功能,后端为在控制器(C)中写 php SQL,前端为在页面(V)中写html css js,这就形成了 VC 架构。 但是发现,相同的数据逻辑(SQL&#xf…

建筑安全运行监测,预防建筑潜在风险

建筑物是人们生活和工作的场所,其安全性直接关系到人们的生命财产安全。建筑安全运行监测旨在及时发现和识别潜在的安全隐患,以确保建筑物的稳定运行,其重要性不可低估。 建筑安全运行监测可以帮助及早发现结构问题。随着时间的推移&#xff…

优化Docker权限管理:配置Docker用户组

Docker 利用 Linux 的用户和组权限来管理对 Docker 守护进程的访问权限。一般情况下,只有 root 用户和属于 docker 用户组的用户才被允许访问 Docker 守护进程。在 Linux 系统上使用 Docker 时,如果您尚未配置 docker 用户组,那么作为非 root…

企业级智能PDF及文档处理SDK GdPicture.NET 14.2 Crack

企业级智能PDF及文档处理SDK GdPicture.NET 提供了一组非常先进的 API,这些 API 利用了人工智能、机器学习和模糊逻辑算法等尖端技术。经过超过 15 年的持续研究和对创新的专注,我们的 SDK 已成为市场上针对PDF、OCR、条形码、文档成像和各种格式最全面的…

大数据成为市场营销利器 ,促进金融贷款企业获客精准化

随着大数据技术的不断普及,中国对尖端技术和云计算技术的投资大幅增加。大数据、云计算技术、物联网等一系列新一代信息技术也加速完善。 目前,大数据技术也非常成熟,大数据的应用领域也多种多样。大数据的重要方面“运营商大数据”已经被政…

R语言应用interactionR包进行亚组相加交互作用分析

在统计分析中交互作用是指某因素的作用随其他因素水平变化而变化,两因素共同作用不等于两因素单独作用之和(相加交互作用)或之积(相乘交互作用)。相互作用的评估是尺度相关的:乘法或加法。乘法尺度上的相互作用意味着两次暴露的综合效应大于(…

java八股文面试[JVM]——JVM性能优化

JVM性能优化指南 JVM常用命令 jps 查看java进程 The jps command lists the instrumented Java HotSpot VMs on the target system. The command is limited to reporting information on JVMs for which it has the access permissions. jinfo (1)实时…

UniTask保姆级教程

目录 一、UniTask的简介和安装 https://github.com/Cysharp/UniTask.gitpathsrc/UniTask/Assets/Plugins/UniTask 空载性能测试 二、基础用法详解 三、基础用法扩展 四、进阶 五、VContainer简介 六、VContainer基础实例 方便快速查找 一、UniTask的简介和安装 项目地…

Medium: Where to Define Qualified users in A/B testing?

1. Common AB Testing Setup Issue (Framework) 局限性: unqualified users will also be considered and mess up experimentation results.

【力扣周赛】第 112 场双周赛

文章目录 竞赛链接Q1:7021. 判断通过操作能否让字符串相等 IQ2:7005. 判断通过操作能否让字符串相等 II(贪心)Q3:2841. 几乎唯一子数组的最大和竞赛时代码——滑动窗口 Q4:8050. 统计一个字符串的 k 子序列…

【设备树笔记整理7】实践操作

1 使用设备树给DM9000网卡_触摸屏指定中断 1.1 修改方法 根据设备节点的compatible属性,在驱动程序中构造/注册 platform_driver,在 platform_driver 的 probe 函数中获得中断资源。 1.2 实验方法 以下是修改好的代码:第6课第1节_网卡_触摸…

SIEM 中不同类型日志监控及分析

安全信息和事件管理(SIEM)解决方案通过监控来自网络的不同类型的数据来确保组织网络的健康安全状况,日志数据记录设备上发生的每个活动以及整个网络中的应用程序,若要评估网络的安全状况,SIEM 解决方案必须收集和分析不…

C/C++源程序到可执行程序exe的全过程(及汇编和反汇编的区别)

1.C/C源程序到可执行程序exe的全过程(及汇编和反汇编的区别) 一个现代编译器的主要工作流程如下: 源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇…

解决uniapp手机真机调试时找不到手机问题

1、检查 USB 调试是否开启 2、检查是否有选择 文件 传输 选项 3、如果上述都做了还找不到,可以看看开发者选项中的【USB设置】,把模式改为 MIDI 模式

ToBeWritten之ATTCK 场景实践

也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…

PHP8创建数组-PHP8知识详解

在php 8中,您可以使用以下方法创建数组:使用数组字面量创建数组、使用 array() 函数创建数组、通过赋值的方式创建数组、使用array_push()函数将元素添加到数组末尾、使用range()函数创建数值数组、使用compact()函数创建带有变量名的数组、使用array_fi…

基于PyTorch的交通标志目标检测系统

一、开发环境 Windows 10PyCharm 2021.3.2Python 3.7PyTorch 1.7.0 二、制作交通标志数据集,如下图 三、配置好数据集的地址,然后开始训练 python train.py --data traffic_data.yaml --cfg traffic_yolov5s.yaml --weights pretrained/yolov5s.pt --e…

深入理解线段树

大家好,我是 方圆。线段树(Segment Tree) 是常用的维护 区间信息 的数据结构,它可以在 O(logn) 的时间复杂度下实现单点修改、区间修改、区间查询(区间求和、区间最大值或区间最小值)等操作,常用…

发生OOM时JVM会退出吗

程序是否退出和发生 OOM 无关 需要明确,程序是否退出和发生 OOM 无关,而和当前是否还有存活的非守护线程有关。 只要还有运行中的子线程,即使 main 线程结束或异常崩溃了,程序也不会停止。 public class TestThreadRun {privat…