pytorch 数据预处理和常用工具
文章目录
- NumPy
- Numpy数据结构
- 安装和使用NumPy
- Matplotlib的安装和导入
- 安装和导入Matplotlib
- 绘制基础图画
- 折线图
- 散点图
- 柱状图
- 图例
- 数据清洗
- 据清洗的作用
- Pandas进行数据清洗
- Pandas数据结构
- Series 数据结构
- DataFrame数据结构
- Pandas数据清洗常用代码
- 特征工程
- 主成分分析
- 线性判别分析
- Scikit-learn数据预处理
- 数据标准化
- 特征工程
NumPy
- NumPy(Numerical Python) 是科学计算基础库,提供大量科学计算相关功能,比如数据统计,随机数生成等。其提供最核心类型为多维数组类型(ndarray),支持大量的维度数组与矩阵运算,Numpy支持向量处理ndarray对象,提高程序运算速度。
- 多维数组支持:NumPy 提供了灵活且高效的多维数组(ndarray)结构,支持从一维到高维的数据存储。
- 高效的数学运算:内置了大量的数学函数,能够在数组上进行快速的向量化计算。
- 线性代数和随机数生成:提供了丰富的线性代数运算(矩阵乘法、特征值分解等)和随机数生成器。
- 集成性:与其他科学计算库(如SciPy、Pandas、Matplotlib)无缝衔接。
Numpy数据结构
ndarray是NumPy库的核心数据结构,用于表示多维数组。
- 维度:ndarray可以具有任意数量的维度,从一维(向量)到三维(立体)、四维甚至更高。每个维度的大小称为轴长。
- 形状:ndarray对象具有一个描述其维度大小的元组,称为形状(Shape)。例如,二维数组的形状可能是(3,4),表示有3行4列。
- 数据类型:ndarray中的所有元素都必须是相同的数据类型。数据可以是整数、浮点数、复数等。
- 内存布局:ndarray在内存中是连续存储的,这意味着它允许高效的数据访问和操作。
- 索引和切片:ndarray支持使用方括号进行索引和切片,这允许你访问、修改或操作数组的特定部分。
- 广播:ndarray支持广播功能,这是一种机制,允许在不同形状的数组之间进行数学运算。
- 数学运算:ndarray支持各种数学运算,如加法、减法、乘法、除法等,这些运算可以逐元素应用于数组中的每个元素。
- 函数:NumPy提供了许多内置函数,可以对ndarray执行各种操作,如求和、求平均值、求最大值、求最小值等。
- 通用函数:NumPy还提供了通用函数(ufunc),这些函数可以对ndarray中的每个元素执行操作,而不需要循环。
安装和使用NumPy
- 通过 pip 安装 NumPy:
pip install numpy
- 基本使用示例
import numpy as np#创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("数组维度:", arr.ndim) # 输出:2
print("数组形状:", arr.shape) # 输出:(2, 3)
print("元素类型:", arr.dtype) # 输出:int64#数组运算
result = np.dot(arr.T, arr) # 计算矩阵乘法
print("结果:\n", result)
import numpy as np#创建一个二维数组
arr_a = np.array([[1, 2, 3], [4, 5, 6]])
arr_b = np.array([1, 2, 3])
c=np.add(arr_a, arr_b)print(c)
import numpy as np#创建一个二维数组
arr = np.array([[1, 2], [4, 5]])
print(arr[0])
print(arr[1])
Matplotlib的安装和导入
- Matplotlib是一个用于绘制图形的Python库,可用于实现数据的可视化展示。
安装和导入Matplotlib
- 安装和验证命令
pip install matplotlib
import matplotlib
print(matplotlib.__version__)
- 导入Matplotlib和解决中文报错
import matplotlib.pyplot as plt
# 设置支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号显示问题,确保在图表中正确显示负号
plt.rcParams['axes.unicode_minus'] = False
绘制基础图画
折线图
import matplotlib.pyplot as plt# 设置支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号显示问题,确保在图表中正确显示负号
plt.rcParams['axes.unicode_minus'] = False
#定义x和y的值
x=[1,2,3,4,5]
y=[2,4,6,8,10]
#使用折线图展示x和y的关系
plt.plot(x,y)
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('折线图')
#显示图表
plt.show()
散点图
#%% md
## 散点图
#%%
import matplotlib.pyplot as plt
# 设置支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号显示问题,确保在图表中正确显示负号
plt.rcParams['axes.unicode_minus'] = False
#定义x和y的值
x=[1,2,3,4,5]
y=[2,4,6,8,10]
#使用折线图展示x和y的关系
plt.scatter(x,y)
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('折线图')
#显示图表
plt.show()
柱状图
plt.show()
#%%
import matplotlib.pyplot as plt
# 设置支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号显示问题,确保在图表中正确显示负号
plt.rcParams['axes.unicode_minus'] = False
#定义x和y的值
x=[1,2,3,4,5]
y=[2,4,6,8,10]
#使用折线图展示x和y的关系
plt.bar(x,y)
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('折线图')
#显示图表
plt.show()
图例
import matplotlib.pyplot as plt
# 设置支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号显示问题,确保在图表中正确显示负号
plt.rcParams['axes.unicode_minus'] = False
#定义x和y的值
x=[1,2,3,4,5]
y_1=[2,4,6,8,10]
y_2=[3,5,7,9,11]#使用折线图展示x和y的关系
plt.plot(x,y_1,label='数据1')
plt.plot(x,y_2,label='数据2')
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('折线图')
# 添加图例
plt.legend()
#显示图表
plt.show()
数据清洗
- 数据清洗是数据预处理的一部分,主要是对数据进行审查和校验,以确保其准确性、完整性、一致性和可靠性。
据清洗的作用
- 数据清洗是机器学习和深度学习中的一个重要步骤,对模型的性能有着决定性的影响。
- 尽管深度学习模型,尤其是深度神经网络具有很强的特征学习能力,可以在一定程度上容忍数据的不完美,但这并不意味着可以完全忽略数据清洗的步骤。良好的数据预处理可以帮助模型更快地收敛,提高训练效率,同时也可以防止模型过拟合。
- 据清洗主要包括以下内容:
- 删除重复信息:识别并去除数据中的重复记录,这些可能是由于数据录入错误或系统错误产生的。
- 纠正错误:查找并修正数据中的错误,例如小数点位置错误、拼写错误或其他录入错误。
- 提供数据一致性:确保数据集中的信息是一致的,比如统一日期格式或文本的大小写,以便可以进行有效的比较和分析。
- 处理无效值或缺失值:对于数据中的无效值或缺失值,需要决定是删除还是填充这些值,以保持数据的完整性。
- 消除异常值:检测并处理那些不符合常规模式的值,这些可能是由于测量错误或其他原因造成的。
- 数据转换和格式化:对数据进行调整,以满足特定的分析需求,例如日期的转换、数值的标准化等。
- 可以使用Python中的NumPy、Pandas或Scikit-learn库实现数据清洗。
Pandas进行数据清洗
- Pandas是一个用于数据分析的Python库,是Python中进行数据处理和分析的一个强大工具,它提供了快速、灵活且直观的数据结构,特别适合处理关系型和标记型数据。
Pandas的重要特性。 - 数据结构:Pandas提供了两种主要的数据结构:Series和DataFrame。Series是一种一维的标签化数组;而DataFrame是一种二维的表格型数据结构,可以想象成一个Excel表格或数据库中的表。
- 数据处理:Pandas提供了大量的函数和方法,使得数据的清洗、转换和分析变得更加高效和便捷。这些功能包括但不限于数据筛选、排序、分组、合并以及时间序列分析等。
- 数据可视化:Pandas与Matplotlib等绘图库紧密结合,提供了一些内置的绘图功能,方便用户对数据进行可视化分析。
Pandas数据结构
Series 数据结构
- Series是一种强大的一维数据结构,它不仅能够存储数据,还提供了丰富的方法和操作,使得数据分析变得更加高效和便捷。
- Series具有多个特性:多种创建方式,切片和索引,缺失值检测,自动对齐
import pandas as pd
s=pd.Series([1,2,3,4,5])
print(s)
0 1
1 2
2 3
3 4
4 5
dtype: int64
DataFrame数据结构
- DataFrame是Pandas库的核心数据结构,它类似于一个二维表格,可以存储多种类型的数据,并且具有很多方便进行数据处理的功能。
- DataFrame的关键特性包括:二维标签化数据结构,潜在的异质性,数据处理,数据分析,数据存储,查询便捷
- 潜在的异质性:DataFrame中的每列可以是不同的数据类型,包括数值、字符串或布尔值等。
- DataFrame是Pandas库中的一个类,用于创建二维表格型数据结构。
- data是一个包含数据的字典或列表,其中字典的键表示列名,字典的值表示对应列的数据。如果data是一个列表,则每个元素代表一行数据。
import pandas as pddata={'Name':['Alice','Bob','Charlie'],'Age':[25,30,35],'City': ['New York','London','Paris']
}
s=pd.DataFrame(data)
print(s)
Pandas数据清洗常用代码
import pandas as pd
# 读取数据
data=pd.read_csv('data.csv')
data=pd.read_excel('data.csv')# 查看前5行信息
print(data.head())#删除含有缺失值的行
data.dropna(inplace=True)
#使用平均值填充缺失值
data.fillna(data.mean(),inplace=True)#检测重复行
duplicatess=data.duplicated()
#删除重复行
data.drop_duplicates(inplace=True)
# 去除异常值
data = data[(np.abs(stats.zscore(data['column_to_clean'])) < 3)]# 数据类型转换
data['date']= pd.to_datetime(data['date'])#筛选年龄大于或等于18岁的记录
filtered_data = data[data['age'] >= 18]
#按年龄升序排列
sorted_data = filtered_data.sort_values(by='age', ascending=True)#假设有两个数据集:data1和data2
merged_data = pd.merge(datal, data2, on='customer_id')
特征工程
- 特征工程是指对原始数据进行预处理、选择、修改和构建新的特征的过程,以便提高模型的性能。这个过程包括数据清洗、特征选择、特征转换和降维等。
- 特征工程的作用包括:提高模型性能,减少过拟合,提高训练速度,数据清洗,特征选择,降维。
主成分分析
- 主成为分析(PCA)是一种数据降维技术,它的核心目的是通过变换找到数据中最重要的特征,也就是主成分,以减少数据的复杂性,同时保留大部分信息。主成分分析就像是用一个滤镜来优化你的照片,只保留最精华的部分,去掉那些不重要的杂乱背景,使得图片更加清晰和突出重点。
线性判别分析
- 线性判别分析是一种统计方法,它用于找到能够最大化不同类别数据之间差异的方向。这种方法在机器学习和统计中被广泛用于降维和分类。
- 线性判别分析就是找到一个能够最好地区分不同类别的方向,通过这个方向可以简化数据,同时保留最重要的区分信息。
Scikit-learn数据预处理
- Scikit-learn是一个开源的、广泛使用的机器学习工具包,其提供了丰富的机器学习算法,例如回归、聚类、降维等,同时还支持数据预处理、模型评估及参数调优等功能。
pip install scikit-learn
数据标准化
- Min-Max标准化(极差法):这种方法通过将原始数据按照最小值和最大值进行线性变换,使得转换后的数据落在一个特定的区间内,通常是[0,1]。这种方法简单直观,适用于大多数情况,特别是当数据分布相对均匀时。
- Z-score标准化(标准差法):这种方法基于原始数据的均值和标准差进行转换,使得转换后的数据具有零均值和单位方差。这种方法适用于数据分布近似正态分布的情况,可以有效地消除不同量纲和数量级的影响。
#导入相关库
import numpy as np
from sklearn.preprocessing import StandardScaler
#创建一个示例数据集
data =np.array([[1,2],[3,4],[5,6]])
#初始化StandardScaler对象
scaler = StandardScaler()
#使用fit_transform方法对数据进行标准化
normalized_data = scaler.fit_transform(data)
print("原始数据:")
print(data)
print("标准化后的数据:")
print(normalized_data)
特征工程
- 创建数据集:使用Pandas 库创建一个DataFrame,包含三列数据’A’,‘B’,'C"。
- 特征选择:计算各列之间的相关系数,然后选择与C列相关系数大于0.5的列作为特征。
- 特征提取:使用PCA(主成分分析)方法对数据进行降维,将数据的维度从3降到2。
- 特征缩放:使用StandardScaler对数据进行标准化处理,使得每一列的数据都符合标准正态分布。
import pandas as pd
from sklearn.preprocessing import StandardScaler
#创建数据集
data = pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]})
#特征选择(以相关系数为例)
correlations = data.corr().abs()
features = correlations[correlations['C'] > 0.5].index.tolist()
#特征提取(以PCA为例)
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
data_pca = pca.fit_transform(data)
#特征缩放
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data)
#显示处理后的数据
print("特征选择结果:",features)
print("特征提取结果:",data_pca)
print("特征缩放结果:",data_scaled)
相关文章:
pytorch 数据预处理和常用工具
文章目录 NumPyNumpy数据结构安装和使用NumPy Matplotlib的安装和导入安装和导入Matplotlib绘制基础图画折线图散点图柱状图图例 数据清洗据清洗的作用Pandas进行数据清洗Pandas数据结构Series 数据结构DataFrame数据结构 Pandas数据清洗常用代码 特征工程主成分分析线性判别分…...
如何界定合法收集数据?
首席数据官高鹏律师团队 在当今数字化时代,数据的价值日益凸显,而合法收集数据成为了企业、机构以及各类组织必须严守的关键准则。作为律师,深入理解并准确界定合法收集数据的范畴,对于保障各方权益、维护法律秩序至关重要。 一…...
企业对数据集成工具的需求及 ETL 工具工作原理详解
当下,数据已然成为企业运营发展过程中的关键生产要素,其重要性不言而喻。 海量的数据分散在企业的各类系统、平台以及不同的业务部门之中,企业要充分挖掘这些数据背后所蕴含的巨大价值,实现数据驱动的精准决策,数据集…...
内核深入学习3——分析ARM32和ARM64体系架构下的Linux内存区域示意图与页表的建立流程
内核深入学习3——ARM32/ARM64在Linux内核中的实现(2) 今天我们来讨论的是一个硬核的内容,也是一个老生常谈的话题——那就是分析ARM32和ARM64体系架构下的Linux内存区域示意图的内容。对于ARM64的部分,我们早就知道一个基本的…...
MapReduce基本介绍
核心思想 分而治之:将大规模的数据处理任务分解成多个可以并行处理的子任务,然后将这些子任务分配到不同的计算节点上进行处理,最后将各个子任务的处理结果合并起来,得到最终的结果。 工作流程 Map 阶段: 输入数据被…...

屏幕与触摸调试
本章配套视频介绍: 《28-屏幕与触摸设置》 【鲁班猫】28-屏幕与触摸设置_哔哩哔哩_bilibili LubanCat-RK3588系列板卡都支持mipi屏以及hdmi显示屏的显示。 19.1. 旋转触摸屏 参考文章 触摸校准 参考文章 旋转触摸方向 配置触摸旋转方向 1 2 # 1.查看触摸输入设备 xinput…...

使用 百度云大模型平台 做 【提示词优化】
1. 百度云大模型平台 百度智能云千帆大模型平台  平台功能:演示了阿里云大模型的百炼平台,该平台提供Prompt工程功能,支持在线创建和优化Prompt模板模板类型:平台提供多种预制模板,同时也支持用户自定义…...
C 语言_常见排序算法全解析
排序算法是计算机科学中的基础内容,本文将介绍 C 语言中几种常见的排序算法,包括实现代码、时间复杂度分析、适用场景和详细解析。 一、冒泡排序(Bubble Sort) 基本思想:重复遍历数组,比较相邻元素,将较大元素交换到右侧。 代码实现: void bubbleSort(int arr[], i…...

IJCAI 2025 | 高德首个原生3D生成基座大模型「G3PT」重塑3D生成的未来
国际人工智能联合会议(IJCAI)是人工智能领域最古老、最具权威性的学术会议之一,自1969年首次举办以来,至今已有近六十年的历史。它见证了人工智能从萌芽到蓬勃发展的全过程,是全球人工智能研究者、学者、工程师和行业专…...

Samtec助力电视广播行业
【摘要前言】 现代广播电视技术最有趣的方面之一就是界限的模糊。过去,音频和视频是通过射频电缆传输的模拟技术采集的,而现在,数字世界已经取代了模拟技术。物理胶片和磁带已让位于数字存储设备和流媒体。 在这个过程中,连接器…...

密码学--仿射密码
一、实验目的 1、通过实现简单的古典密码算法,理解密码学的相关概念 2、理解明文、密文、加密密钥、解密密钥、加密算法、解密算法、流密码与分组密码等。 二、实验内容 1、题目内容描述 ①随机生成加密密钥,并验证密钥的可行性 ②从plain文件读入待…...
生成式图像水印研究综述
生成式图像水印研究综述 一、引言二、生成式图像水印研究背景三、生成式图像水印算法研究进展3.1 基于流模型的方案3.2 基于生成对抗网络的方案3.3 基于扩散模型的方案3.3.1 修改图像数据3.3.2 调整生成模型3.3.3 修改隐变量空间四、算法的性能与评价指标五、常用数据集六、本章…...
TCP协议详细讲解及C++代码实例
目录 一. TCP协议详细讲解及C代码实例1、TCP协议概述2、TCP通信流程1) 三次握手2) 数据传输3) 四次挥手 3、关键点解析1) 套接字创建2) 三次握手实现3) 数据传输4) 四次挥手实现 4、TCP与UDP对比 一. TCP协议详细讲解及…...
深度剖析:Vue2 项目兼容第三方库模块格式的终极解决方案
当我们为 Vue2 项目引入某些现代 JavaScript 库时,常常会遇到这样的报错: error in ./node_modules/some-lib/lib/index.mjs Cant import the named export xxx from non EcmaScript module这类问题的本质是模块格式的世纪之争 —— ES Moduleÿ…...
APISQL免费版安装教程(视频)
APISQL 一款通用的API开发管理软件,支持将主流数据库中的表、视图、SQL语句、存储过程等快速封装为标准的 RESTful API,支持多种安全认证方式和可视化管理界面。适用于接口开发、系统集成、数据共享等场景。 支持主流数据库的表、视图、自定义函数、存储…...

SpringBoot整合MQTT实战:基于EMQX实现双向设备通信(附源码)
简言: 在万物互联的时代,MQTT协议凭借其轻量级、高效率的特性,已成为物联网通信的事实标准。本教程将带领您在Ubuntu系统上搭建EMQX 5.9.0消息服务器,并使用Spring Boot快速实现两个客户端的高效通信。通过本指南,您将…...

从零开始掌握FreeRTOS(2)链表之节点的定义
目录 节点 节点定义 节点实现 根节点 根节点定义 精简节点定义 根节点实现 在上篇文章,我们完成了 FreeRTOS 的移植。在创建任务之前,我们需要先了解FreeRTOS的运转机制。 FreeRTOS是一个多任务系统,由操作系统来管理执行每个任务。这些任务全都挂载到一个双向循…...
Java的While循环写的出票简单程序
import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner in new Scanner(System.in);int balance 0;while(true){System.out.print("请投币: ");int amount in.nextInt();balance balance amount;if(balance >10 )…...
详解Windows(十一)——网络连接设置
Windows网络连接设置完全指南 1. Windows网络连接基础 网络连接类型 有线连接: 通过网线将电脑连接到路由器或调制解调器优点:连接稳定,速度快,延迟低适合:需要高速稳定网络的场景,如游戏、大文件下载、…...
多线程爬虫语言选择与实现
之前文中有人提到:想要一个简单易用、能快速实现多线程爬虫的方案,而且目标是小网站,基本可以确定对反爬虫措施要求不高,这些就比较简单了。 以往我肯定要考虑常见的编程语言中哪些适合爬虫。Python、JavaScript(Node…...

【数据结构】——双向链表
一、链表的分类 我们前面学习了单链表,其是我们链表中的其中一种,我们前面的单链表其实全称是单向无头不循环链表,我们的链表从三个维度进行分类,一共分为八种。 1、单向和双向 可以看到第一个链表,其只能找到其后一个…...
AI助力:零基础开启编程之旅
一、代码调试 三步解决BUG 1. 错误信息翻译 指令模板: 错误诊断模式我遇到【编程语言】报错“粘贴报错信息“ 请: 用小白能懂的话解释问题本质标注可能引发该错误的三个场景给出最可能的修复方案和其他备选方案 2. 上下文分析 进阶指令 结合上下文代…...

mybatis中${}和#{}的区别
先测试,再说结论 userService.selectStudentByClssIds(10000, "wzh or 11");List<StudentEntity> selectStudentByClssIds(Param("stuId") int stuId, Param("field") String field);<select id"selectStudentByClssI…...
【计算机组成原理】第二部分 存储器--分类、层次结构
文章目录 分类&层次结构0x01 分类按存储介质分类按存取方式分类按在计算机中的作用分类 0x02 层次结构 分类&层次结构 0x01 分类 按存储介质分类 半导体存储器磁表面存储器磁芯存储器光盘存储器 按存取方式分类 存取时间与物理地址无关(随机访问&#…...

抗量子计算攻击的数据安全体系构建:从理论突破到工程实践
在“端 - 边 - 云”三级智能协同理论中,端 - 边、边 - 云之间要进行数据传输,网络的安全尤为重要,为了实现系统总体的安全可控,将构建安全网络。 可先了解我的前文:“端 - 边 - 云”三级智能协同平台的理论建构与技术实…...
正则表达式: 从基础到进阶的语法指南
正则表达式语法详解 前言一、基础概念二、基础元字符2.1 字符匹配2.2 字符类2.3 预定义字符类 三、重复匹配3.1 贪婪与非贪婪匹配3.2 精确重复匹配 四、边界匹配4.1 行首与行尾匹配4.2 单词边界匹配 五、分组与引用5.1 分组5.2 反向引用5.3 命名分组 六、逻辑运算符6.1 或运算 …...

uniapp|实现手机通讯录、首字母快捷导航功能、多端兼容(H5、微信小程序、APP)
基于uniapp实现带首字母快捷导航的通讯录功能,通过拼音转换库实现汉字姓名首字母提取与分类,结合uniapp的scroll-view组件与pageScrollTo API完成滚动定位交互,并引入uni-indexed-list插件优化索引栏性能。 目录 核心功能实现动态索引栏生成联系人列表渲染滚动定位联动性…...

【Linux】基础IO(二)
📝前言: 上篇文章我们对Linux的基础IO有了一定的了解,这篇文章我们来讲讲IO更底层的东西: 重定向及其原理感受file_operation文件缓冲区 🎬个人简介:努力学习ing 📋个人专栏:Linux…...
SpringBoot异步处理@Async深度解析:从基础到高阶实战
一、异步编程基础概念 1.1 同步 vs 异步 特性同步异步执行方式顺序执行,阻塞调用非阻塞,调用后立即返回线程使用单线程完成所有任务多线程并行处理响应性较差,需等待前任务完成较好,可立即响应新请求复杂度简单直观较复杂&#…...

【生存技能】ubuntu 24.04 如何pip install
目录 原因解决方案说明关于忽略系统路径 在接手一个新项目需要安装python库时弹出了以下提示: 原因 这个报错是因为在ubuntu中尝试直接使用 pip 安装 Python 包到系统环境中,ubuntu 系统 出于稳定性考虑禁止了这种操作 这里的kali是因为这台机器的用户起名叫kali…...