深度学习——数据预处理,张量降维

news2024/9/21 22:26:56

目录

  • 一、数据预处理
    • 1.1 读取数据集
    • 1.2 处理缺失值
    • 1.3 转换为张量类型
  • 二、张量
    • 2.1 张量算法的基本性质
      • 2.1.1 两个形状相同的张量相加
      • 2.1.2 哈达玛积
      • 2.1.3 与标量相加或相乘
    • 2.2 降维
      • 2.2.1 对所有行的元素求和来降维(轴0)
      • 2.2.2 对所有列的元素求和来降维(轴1)
      • 2.2.3 对所有元素求和
      • 2.2.4 平均值
    • 2.3 非降维求和:保持轴数不变
    • 2.4 点积
  • 三、范数

一、数据预处理

1.1 读取数据集

  将数据集按行写入csv文件中。要从创建的csv文件中加载原始数据集,导入pandas包并调用read_csv函数。

import os
os.makedirs(os.path.join('..','data'),exist_ok=True)
data_file = os.path.join('..', 'data', 'house_tiny.csv')
with open(data_file,'w') as f:
    f.write('NumRooms, Alley, Price \n')  #列名
    f.write('NumRooms,Alley,Price\n')  # 列名
    f.write('NA,Pave,127500\n')  # 每行表示一个数据样本
    f.write('2,NA,106000\n')
    f.write('4,NA,178100\n')
    f.write('NA,NA,140000\n')

在这里插入图片描述

1.2 处理缺失值

  NaN项代表缺失值。处理缺失值的数据的典型方法包括插值法和删除法,其中插值法用一个替代值弥补缺失值,而删除法则直接忽略缺失值。
  通过位置索引iloc将data分成inputs和outputs,其中前者为data的前两列,而后者为data的最后一列。对于inputs中的缺失值,可以用同一列的均值替换NaN项。

inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
inputs = inputs.fillna(inputs.mean())
print(inputs)

  出现如下报错的原因:原因是第2列识别为str,无法进行数值平均运算,需要在括号加入限制条件,仅在数据类型为数值的列进行平均值插值。
在这里插入图片描述
在这里插入图片描述

inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
inputs = inputs.fillna(inputs.mean(numeric_only = True))
print(inputs)

在这里插入图片描述

data.iloc[ ]是python中pandas库的一个非常有用的功能函数,它允许通过行和列的整数位置索引来选择数据。
data.iloc[:, 0:2] 代表选择第1,2列的所有行
data.iloc[:, 2] 代表选择第3列的所有行

  对于inputs中的类别值或离散值,我们将NaN视为一个类别。由于Alley列只接受两种类型的类别值Pave和NaN,pandas可以自动将此列转换为两列Alley_pave和Alley_nan。Alley列为pave的行为将Alley_pave的值设置为1,Alley_nan的值设置为0;缺失Alley列的会将Alley_pave和Alley_nan分别设置为0和1.

inputs = pd.get_dummies(inputs, dummy_na=True, dtype = int)
print(inputs)

在这里插入图片描述

pd.get_dummies( )是pandas库中用于独热编码(One-Hot Encoding)的函数。它的作用是将分类(离散)变量的每个不同取值都拓展为一个新的二进制编码(0或1),从而方便机器学习模型处理。
dtype可以指定输出的类型,默认情况下,输出的是布尔值(True或False),改为int类型,输出的是0或1

1.3 转换为张量类型

  输入的inputs和outputs中的所有元素都是数值类型,它们可以转换为张量格式。

import torch

X = torch.tensor(inputs.to_numpy(dtype=float))
y = torch.tensor(outputs.to_numpy(dtype=float))
X, y

在这里插入图片描述

二、张量

2.1 张量算法的基本性质

2.1.1 两个形状相同的张量相加

A = torch.arange(20, dtype=torch.float32).reshape(5,4)
B = A.clone() #通过分配新内存,将A的一个副本分配给B
A , A+B

在这里插入图片描述

2.1.2 哈达玛积

  两个矩阵的按元素乘法称为哈达玛积,数学符号为 ⨀ \bigodot

A*B

在这里插入图片描述

2.1.3 与标量相加或相乘

  将张量加上或乘以一个标量不会改变张量的形状,其中张量的每个元素都将与标量相加或相乘。

a = 2
x=torch.arange(24).reshape(2,3,4)
a+x, (a*x).shape

在这里插入图片描述

2.2 降维

A = torch.arange(20).reshape(5,4)
A

在这里插入图片描述
  默认情况下,调用求和函数会沿所有的轴降低张量的维度,使它变为一个标量。可以指定张量沿哪一个轴来通过求和降低维度。

2.2.1 对所有行的元素求和来降维(轴0)

  可以在调用函数时,指定axis=0,由于输入矩阵沿轴0降维以生产输出向量,此输入轴0的维度在输出形状中消失。

A_sum_axis0 = A.sum(axis=0)
A_sum_axis0 , A_sum_axis0 .shape

在这里插入图片描述

2.2.2 对所有列的元素求和来降维(轴1)

A_sum_axis1 = A.sum(axis=1)
A_sum_axis1 , A_sum_axis1 .shape

在这里插入图片描述

2.2.3 对所有元素求和

  沿着行和列对矩阵求和,等价于对矩阵的所有元素求和。

A.sum(axis=[0,1])

在这里插入图片描述

2.2.4 平均值

两种方法 = { 1 、总和除以元素总数来计算平均值 2 、通过调用函数来计算任意形状张量的平均值 两种方法=\begin{cases} 1、总和除以元素总数来计算平均值\\2、通过调用函数来计算任意形状张量的平均值\end{cases} 两种方法={1、总和除以元素总数来计算平均值2、通过调用函数来计算任意形状张量的平均值

A = torch.arange(20, dtype=torch.float32).reshape(5,4)
A
A.mean(), A.sum()/A.numel()

在这里插入图片描述

2.3 非降维求和:保持轴数不变

A = torch.arange(20, dtype=torch.float32).reshape(5,4)
print(A)
sum_A = A.sum(axis=1, keepdims = True)
sum_A

在这里插入图片描述

keepdims为True,表示求和前后shape不变,一般情况下,keepdims为False

  由于sum_A在对每行进行求和后,仍保持两个轴,可以通过广播将A除以sum_A

A / sum_A

在这里插入图片描述
  如果想要沿某个轴计算A的元素的累积总和,可以调用cumsum函数,此函数不会沿任何轴降低输入张量的维度。

A.cumsum(axis=0)

在这里插入图片描述

2.4 点积

  相同位置的按元素乘积的和

x = torch.arange(4, dtype = torch.float32)
y = torch.ones(4, dtype = torch.float32)
x, y ,torch.dot(x, y)

在这里插入图片描述

三、范数

  L2范数是向量元素平方和的平方根
∥ x ∥ 2 = ∑ i = 1 n x i 2 \Vert \bm x \Vert_2=\sqrt{\sum_{i=1}^n x_i^2} x2=i=1nxi2

u = torch.tensor([3.0, -4.0])
torch.norm(u)

在这里插入图片描述
  L1范数表示为向量元素的绝对值之和
∥ x ∥ 1 = ∑ i = 1 n ∣ x i ∣ \Vert \bm x \Vert_1=\sum_{i=1}^n \vert x_i \vert x1=i=1nxi
  与L2范数相比,L1范数受到异常值的影响较小,为了计算L1范数,将绝对值函数和按元素求和函数组合起来。

torch.abs(u).sum()

在这里插入图片描述

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

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

相关文章

ISO15693讲解

ISO15693 工作频率为13.56 MHz的非接触式智能标签卡芯片,该芯片主要针对包裹运送、航空行李、租赁服务以及零售供应链管理等物流系统应用所新研发设计的一系列RFID射频识别芯片。 需求图鉴: 使用TTL模组 串口打印:

Webstorm Idea 系列3分钟安装激活使用教程

1. 下载好自己需要的版本。 自行需要,其他相关idea也一样 2. 点击安装【傻瓜式的安装】 下一步> 选择自己的安装路径 > 下一步直到安装完成 3. go go 3.1 首次使用需要打开后立即关闭 3.2 选择指定的方式 3.3 提示成功 3.4 打开软件查看信息2099 3.5 异常提示 若提示以…

Facebook主页,广告账户,BM被封分别怎么解决?

我们在投放facebook广告的过程中,经常会遇到FB主页,广告账户和BM被封的情况,这三者有啥区别呢?遇到被封的情况又该如何解决,本篇文章会一次性说清楚Facebook主页,广告账户,BM分别是什么&#xf…

LabVIEW中AVI帧转图像数据

在LabVIEW中,有时需要将AVI视频文件的帧转换为图像数据进行进一步处理。下面详细讲解了如何从AVI视频提取单帧并将其转换为图像数据集群,以便与其他图像处理VI兼容。 问题背景: 用户已经拥有能够处理JPEG图像数据集群的VI,现在希…

【C#】自动升级工具

系列文章 【C#】最全业务单据号生成(支持定义规则、流水号、传参数) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787 【C#】日期范围生成器(开始日期、结束日期) 本文链接:https…

资深盘点:国内外知名的ERP管理系统厂商有哪些?

已经考虑引入ERP系统却担心面临以下问题?ERP系统流程僵化难以调整?流程与实际业务脱节?培训不到位、技术支持不及时导致难以实现全员使用、共创?市面上的ERP系统众多不知道如何选择? 今天就根据2024最新市场动态&…

Shader Graph Create Node

一、Artistic 1、Adjustment 1)、Channel Mixer(通道混合) 根据权重对每个通道进行混合。 Contrast(对比度) 可调整对比度 调整对比度可以改变图像的鲜明度和层次感。增加对比度会使图像中的明暗差异更加显著,使图像看起来更加清晰、明亮;减少对比…

从单体到微服务:FastAPI ‘挂载’子应用程序的转变

在现代 Web 应用开发中,模块化架构是一种常见的设计模式,它有助于将大型应用程序分解为更小、更易于管理的部分。FastAPI,作为一个高性能的 Python Web 框架,提供了强大的支持来实现这种模块化设计。通过“挂载”子应用程序&#…

如何用 Helm Chart 安装指定版本的 GitLab Runner?

本分分享如何使用 Helm 来在 Kubernetes 集群上安装极狐GitLab Runner。整体步骤分为:Helm 的安装、vaules.yaml 文件的配置、Runner 的安装、Runner 的测试。 极狐GitLab 为 GitLab 在中国的发行版,中文版本对中国用户更友好。极狐GitLab 支持一键私有…

【新时代概论】新时代概论书目的结构(LP)

文章目录 前言一、结构导论第一章、新时代坚持和发展中国特色社会主义第二章、以中国式现代化全面推进中华民族伟大复兴第三章、坚持党的全面领导第四章、坚持以人民为中心第五章、全面深化改革开放第六章、推动高质量发展第七章、社会主义现代化建设的教育、科技、人才战略第八…

鸿蒙读书笔记1:《鸿蒙操作系统设计原理与架构》

笔记来自新书:《鸿蒙操作系统设计原理与架构》 HarmonyOS采用分层架构,从下到 上依次分为内核层、系统服务层、框架层和应用层。 1. 内核层 内核层主要提供硬件资源抽象和常用软件资源,包括进程/线程管 理、内存管理、文件系统和IPC&#xff…

若依plus-cloud nacos yml 动态获取 配置内容

这是剑走偏锋的写法。 直接上代码 在nacos中配置一个ruoyi-cms.yml 内容中有cms:filepath:******* springcloud配置 package org.dromara.cms.entity;import lombok.RequiredArgsConstructor; import org.springframework.core.env.Environment; import org.springframewo…

电脑怎么录屏?四款录屏工具分享

作为一个刚刚踏入视频创作领域的新手,我一直在寻找一款适合自己的录屏软件。最近,我尝试了四款市面上比较热门的录屏工具。今天,就让我来分享一下我的使用体验,希望能给同样在寻找录屏软件的朋友们一些参考。 一、福昕录屏大师 …

OpenCV运动分析和目标跟踪(1)累积操作函数accumulate()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将一个图像添加到累积图像中。 该函数将 src 或其部分元素添加到 dst 中: dst ( x , y ) ← dst ( x , y ) src ( x , y ) if mask…

为什么矩阵特征值之和等于主对角线元素之和,特征值乘积等于行列式值

首先给出特征值和特征向量的定义。 设A是n阶矩阵,如果数λ和n维非零向量x使关系式 Axλx (1) 成…

DPO: Direct Preference Optimization 介绍

DPO 是 RLHF 的屌丝版本,RLHF 需要加载 4 个模型(2个推理,2个训练),DPO 只需要加载 2 个模型(1个推理,一个训练)。 RLHF: DPO: DPO 原理 DPO 的本质是监督对…

canfd 卡 canfd-422ac在汽车电子测试中的大作用

随着汽车电子的高速发展,车内信息的急剧增多,传统的CAN总线的数据传输能力已经很难满足车辆ECU的数据传输需求了,此时CANFD就应运而生了。![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c3822ac2b2ed4694a58132e0b4743e99.png)CAN…

无需部署,云电脑带你秒变AI绘画大师

在人工智能的浪潮中,AI 绘画逐渐火爆,通过关键字描述就能让AI把你想要的画面完美展示出来。 当前最火的绘画软件当属 Midjonary, Midjourney 界面比较直观,适合新手以及非专业的用户,风格比较多样,可以轻松…

Python “集合” 100道实战题目练习,巩固知识、检查技术

本文主要是作为Python中列表的一些题目,方便学习完Python的集合之后进行一些知识检验,感兴趣的小伙伴可以试一试,含选择题、判断题、实战题、填空题,答案在第五章。 在做题之前可以先学习或者温习一下Python的列表,推荐…

Python selenium 破解腾讯滑块行为验证码

直接上代码: from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import time,re,requests from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from seleniu…