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

news2024/12/26 22:36:37

目录

一、实验介绍

二、实验环境

三、实验内容

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.coloradmin.cn/o/972637.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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

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

【论文复现】Learning I/O Access Patterns to Improve Prefetching in SSDs 系列 1

文章目录 前言数据集准备数据初探数据处理分配标签抽取有效列并搭建模型训练失败分析 前言 LSTM完成ssd I/的预取 ref: git地址: https://github.com/Chandranil2606/Learning-IO-Access-Patterns-to-improve-prefetching-in-SSDs-paper地址: https://people.ucsc…

halo个人博客搭建及介绍

halo个人博客搭建及介绍 halo介绍 halo强大易用的开源建站工具,配合上丰富的模板与插件,帮助你构建你心中的理想站点。具体可以搜索下官网的搭建指南。 博客技术架构 后端 1.spring reactive ,响应式编程,代码风格简单及高并发队列优化相…

android studio cmake生成.a文件(静态库)及调用(c c++)静态库.a

第一步生成静态库.a文件: cmake 语法如何生成静态库,就不介绍了,比较简单,我下文列出的参考资料里面有详细介绍。 add_library(${CMAKE_PROJECT_NAME} STATICsrc/CalculStatic.cpp)这一步有坑,我刚开始的时候&#x…

数学建模之图论

目录 1 图的基本概念2 如何做图2.1 直接做图2.2 编程做图 3 权重邻接矩阵3.1 无向图3.2 有向图 4 Dijkstra 算法4.1 算法概述4.2 代码实现 5 Floyd 算法5.1 算法概述5.2 代码实现 6 思考题 1 图的基本概念 图论中的图(Graph)是由若干给定的点及连接两点的…

mkp勒索病毒的介绍和防范,勒索病毒解密,数据恢复

mkp勒索病毒是一种新兴的电脑病毒,它会对感染的电脑进行加密,并要求用户支付一定的赎金才能解锁。这种病毒已经引起了全球范围内的关注,因为它不仅具有高危害性,而且还有很强的传播能力。本文将对mkp勒索病毒进行详细介绍&#xf…

群辉NAS:J1900系统盘安装SATA固态硬盘方案【自留记录】

群辉NAS:J1900系统盘安装SATA固态硬盘方案 设备介绍: DSM版本:918 主板CPU:蜗牛星际J1900板 内存:8G DDR3 固态:移速SATA固态(msata在win微桌面识别,群晖安装时候识别不到&#xf…

pdf用什么软件打开?介绍几种常用打开方法

pdf用什么软件打开?PDF是一种广泛使用的文件格式,由于其跨平台和易于共享的特点,它已成为许多人在日常工作和学习中使用的首选文件格式。但是,有时候我们可能会遇到一些问题,比如不知道用什么软件打开PDF文件&#xff…

Hadoop生态之hive

一 概述与特点 之所以把Hive放在Hadoop生态里面去写,是因为它本身依赖Hadoop。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类 SQL 查询功能。 其本质是将 SQL 转换为 MapReduce/Spark 的任务进行运算,底层由 HDFS 来提供…

软件测试/测试开发丨Web自动化 PageObject设计模式

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27167 一、page object 模式简介 马丁福勒个人博客 selenium 官网 1.1、传统 UI 自动化的问题 无法适应 UI 频繁变化无法清晰表达业务用例场景大量的样…

微任务创建 -- queueMicrotask()

微任务创建方式: Promise.then(()>{})Mutation Observer()queueMicrotask() 本文主要介绍queueMicrotask()的使用。 queueMicrotask的使用 Window 或 Worker 接口的 queueMicrotask() 方法,将微任务加入队列以在控制返回浏览器的事件循环之前的安全…

Git 版本回退 超神步骤

Git 版本回退 一. 背景 多版本分支开发,合并版本问题太多,需要回滚到某次版本。我的git客服端工具是 sourcetree 二.操作步骤 2.1 切到当前需要回退版本的分支 2.2 右击需要具体某一个分支,这个分支就是你想切到的分支版本,具体…

正版软件 | CloudDrive 多云盘本地挂载管理工具

前言: CloudDrive 是一个强大的多云盘管理工具,提供一站式的多云盘解决方案,包括云盘本地挂载。旨在无缝集成多个云存储服务,统一整合到一个界面。轻松管理和访问所有云存储服务,无需在不同的应用程序和界面之间切换。…

虚拟现实vr元宇宙井下危险隐患排查模拟实训稳固企业生产

数字化时代,职业教育正面临着前所未有的挑战和机遇,元宇宙的兴起,借助元宇宙平台进行钻井虚拟教学实验,基于元宇宙数字空间搭建更丰富、逼真、安全、灵活的实验环境,成为石油行业教育创新的催化剂。 一、降低实验成本 …

Excel·VBA二维数组组合函数的应用实例

看到一个问题《关于#穷举#的问题,如何解决?(语言-开发语言)》,对同一个数据存在“是/否”2种状态,判断其是否参与计算,并输出一系列数据的“是/否”状态的结果 目录 方法1:二维数组组合函数结果 方法2&am…

树上钟同步

#include<cstdio> #include<cstring> #include<vector> using namespace std;const int N 2505; int ori[N], f[N]; vector<int> edge[N]; // 邻接表的简单实现形式void dfs(int u, int fa) {for (int v : edge[u]) {if (v fa) continue;dfs(v, u);f…

网络协议从入门到底层原理学习(一)—— 简介及基本概念

文章目录 网络协议从入门到底层原理学习&#xff08;一&#xff09;—— 简介及基本概念一、简介1、网络协议的定义2、网络协议组成要素3、广泛的网络协议类型网络通信协议网络安全协议网络管理协议 4、网络协议模型对比图 二、基本概念1、网络互连模型2、计算机之间的通信基础…

Prompt Tuning训练过程

目录 0. 入门 0.1. NLP发展的四个阶段&#xff1a; Prompt工程如此强大&#xff0c;我们还需要模型训练吗&#xff1f; - 知乎 Prompt learning系列之prompt engineering(二) 离散型prompt自动构建 Prompt learning系列之训练策略篇 - 知乎 ptuning v2 的 chatglm垂直领域训练记…

【zookeeper】zookeeper日常运维

本文将分享一些zookeeper在日常使用中一些维护经验。 zookeeper清理快照 脚本或者命令清理 zookeeper长时间运行&#xff0c;快照逐渐增多可能造成服务器磁盘被占满的情况&#xff0c;但我们不能贸然用rm命令删除快照文件&#xff0c;如果直接删完会导致丢失好多数据&#x…

【Yellowbrick】特征可视化分析

Yellowbrick特征可视化分析 ⭐Yellowbrick⭐特征分析可视化⭐Rank1D⭐Rank2D ⭐Yellowbrick Yellowbrick是一个用于可视化机器学习模型和评估性能的Python库。它提供了一系列高级可视化工具&#xff0c;帮助数据科学家和机器学习从业者更好地理解、调试和优化他们的模型。 它在…