2 数据操作和数据预处理

1 N维数组样例

N维数组是机器学习和神经网络最主要的数据样式。

1.1 标量

标量是一个数据也可以说是一个元素,标量是0维的。

image-20250819095236092

1.2 向量

向量一般是很多个数据的集合,也就是很多个标量的一个组合,向量是一维的。

image-20250819095719759

1.3 矩阵

矩阵是很多个向量的一个集合,矩阵是二维的。

image-20250819100413071

1.4 其他

这里主要就是一些3到5维的一些数组样例

image-20250819100541798

通常在进行学习的过程中最主要的就是4d的一个数组也就是一堆RGB的图片。

2 数组的创建

  • 形状
  • 元素的数据类型
  • 每个元素的具体数据

3 访问元素

image-20250819100734197

对于二维数组而言\\
一个元素的访问 &:[1,2]\\
一行元素的访问 &:[1:,]\\
一列元素的访问 &:[,:1]\\
子区域的访问 &:[1:3,1:]\\
子区域的访问&:[::3,::2]\\

4 数据操作

2.1. 数据操作 — 动手学深度学习 2.0.0 documentation

在进行操作之前需要先引入pytorch库函数

import torch

引入好了之后便可以进行相对应的一些操作了

x = torch.arange(12) #生成一个组单位向量

x.shape #访问向量的形状

x.numel() #元素的个数

x.reshape(3,4) #更改向量的类型 这里变成了三行四列了

torch.zeros((2,3,4)) #创建全零的张量

torch.ones((3,4,5)) #创建全一的张量

torch.tensor([[2,1,3,2],[4,5,3,5]]) #为张量的每一个元素进行赋值

x=torch.tensor([1,2,3,4])
y=torch.tensor([2,2,2,2])
x+y,x-y,x*y,x/y,x**y
#可以对元素进行数学的运算 当然是元素对元素的计算

x = torch.arrage(12,dtype=torch.float32).reshape((3,4))
y=torch.tensor([[2,3,4,5],[1,2,3,4],[2,4,5,6]])
torch.cat((x,y),dim=0)
torch.cat((x,y),dim = 1)
#将张量进行合并 0是按行合并 1是按列合并

x==y
#用逻辑运算符构建二维张量

x.sum()
#求和 只有一个元素的标量了

a = torch.arange(3).reshape((3,1))
b = torch.arange(2).reshape((1,2))
a+b
#形状不一样的相加怎么办呢,直接变成最高的一个张量就是直接就三行两列了
简单的说就是将a复制成一个三成二的矩阵
b复制成一个三成二的矩阵

x[-1] , x[1:3] , x[1,2]
#元素的访问

x[0:2,:] = 12
#多个元素的赋值 区域赋值

before = id(Y)
Y=Y+X
id(Y) == before
#相当于C的指针 id相当于取地址符 析构 难度比较高

A = X.numpy()
B=torch.tensor(A)
type(A) , type(B)
#将torch的转换成numpy的张量

a = torch.tensor([3.5])
a,a.item(),float(a),int(a)
#将大小为1的一个标量转换成python的量

5 数据的预处理

2.2. 数据预处理 — 动手学深度学习 2.0.0 documentation

列举完了pytorch的相关内容,现在我将数据预处理的东西也在下面进行处理以及举例

import os
import pandas as pd
!pip install pandas
data = pd.read_csv(data_file)
print(data)

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('NA , Pave , 127500\n') #每行表示一个数据样本
    f.write('2 , NA , 106000\n')
    f.write('2 , NA , 178100\n')
    f.write('NA , NA , 140000\n')
#并从创建的csv文件中加载原始的数据集
inputs,outputs = data.iloc[: , 0:2],data.iloc[:2]
inputs = inputs.fillna(inputs.mean())

在使用的过程中会进行适当的数据补齐的处理方法,而这主要有两种方法:

  1. 直接删掉当前行或者当前列
  2. 对缺失的数据进行适当的插值处理
inputs = pd.get_dummies(inputs , dummy_na = True)
    print(inputs)
   #对于inputs中的类别值或离散值,我们将NAN视为一个类别
   import torch
   x , y = torch.tensor(inputs.values) , torch.tensor(outputs.values)
   x,y

至此现在inputs和outputs中的所有条目都是数值的类型,他们可以转换为张量的格式

一般在深度学习之中我们用的是32位浮点型

posted @ 2025-08-22 13:13  AxonoSensei  阅读(7)  评论(0)    收藏  举报