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

  1. 通过 pip 安装 NumPy:
pip install numpy
  1. 基本使用示例
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

  1. 安装和验证命令
pip install matplotlib
import matplotlib
print(matplotlib.__version__)
  1. 导入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)

特征工程

  1. 创建数据集:使用Pandas 库创建一个DataFrame,包含三列数据’A’,‘B’,'C"。
  2. 特征选择:计算各列之间的相关系数,然后选择与C列相关系数大于0.5的列作为特征。
  3. 特征提取:使用PCA(主成分分析)方法对数据进行降维,将数据的维度从3降到2。
  4. 特征缩放:使用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)

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

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

相关文章

MATLAB 中常用的微分函数介绍

MATLAB 中常用的微分函数介绍 在 MATLAB 中&#xff0c;微分运算是数值计算和符号计算中常用的功能。无论是在进行数据分析、优化算法&#xff0c;还是数学建模时&#xff0c;微分都扮演着重要的角色。本文将介绍 MATLAB 中常用的微分函数&#xff0c;并通过简单的示例帮助大家…

按指定位置或关键字批量删除工作表-Excel易用宝

在一个工作簿中有多个工作表&#xff0c;有些工作表不需要了&#xff0c;如果一个一个手动删除&#xff0c;那实在是太慢了&#xff0c;有没有什么好的方法可以批量删除工作表。 批量删除工作表很简单&#xff0c;单击【易用宝】→【工作表】→【批量删除工作表】。 在打开的批…

TypeScript装饰器:从入门到精通

TypeScript装饰器&#xff1a;从入门到精通 什么是装饰器&#xff1f; 装饰器&#xff08;Decorator&#xff09;是TypeScript中一个非常酷的特性&#xff0c;它允许我们在不修改原有代码的情况下&#xff0c;给类、方法、属性等添加额外的功能。想象一下装饰器就像给你的代码…

【SSL证书系列】客户端如何检查中间CA签名是否由根CA签发

客户端通过以下步骤检查中间CA的签名是否由受信任的根CA签发&#xff1a; 1. 证书链的构建 服务器发送的证书链通常包含&#xff1a; • 服务器证书&#xff08;由中间CA签发&#xff09; • 中间CA证书&#xff08;由根CA签发&#xff09; • 根CA证书&#xff08;通常不发送…

【android bluetooth 协议分析 12】【A2DP详解 1】【车机侧蓝牙音乐免切源介绍】

“车机蓝牙音乐免切源” 是近年来车载系统&#xff08;IVI&#xff0c;In-Vehicle Infotainment&#xff09;中常见的一个用户体验优化功能。它主要是为了简化蓝牙音乐播放流程、减少用户操作&#xff0c;提升使用便捷性。 一、什么是“切源”&#xff1f; 在车机系统中&#…

Android usb网络共享详解

Android usb网络共享详解 文章目录 Android usb网络共享详解一、前言二、USB网络共享使用的前提1、Android设备支持adb 并且打开usb开关2、原生Settings能看到USB网络共享开关3、代码中检测USB网络共享是否支持 三、Settings 中USB网络共享代码的部分代码1、Settings\res\xml\t…

Step1

项目 SchedulerSim 已搭建完成 ✅ ⸻ ✅ 你现在拥有的&#xff1a; • &#x1f527; 两种调度器&#xff08;Round Robin SJF&#xff09; • &#x1f4e6; 模拟进程类 Process • &#x1f9f1; 清晰结构&#xff1a;OOP 风格 便于扩展 • ✍️ 主函数已演示调度器运行效…

初探 Skynet:轻量级分布式游戏服务器框架实战

在游戏服务器开发领域&#xff0c;高效、稳定且易于扩展的框架一直是开发者追求的目标。Skynet 作为一款轻量级、高性能的分布式游戏服务器框架&#xff0c;凭借其独特的设计理念和强大的功能&#xff0c;赢得了众多开发者的青睐 一.Skynet底层架构支持 1.Actor erlang 从语言…

Oracle数据库中,WITH..AS 子句用法解析

前言 在Oracle数据库中&#xff0c;WITH子句&#xff08;也成为“子查询因子化” 或“公共表表达式”&#xff0c;Common Table Expression, CTE)用于定义一个临时命名的结果集&#xff0c;这个结果集可以在后续的查询中引用。 一、基本语法 WITH sjtab AS &#xff08;SELE…

什么是卫星电话?卫星电话与普通电话有什么区别?

在信息时代&#xff0c;通信技术已渗透到人类生活的方方面面&#xff0c;但传统地面通信网络仍存在盲区&#xff0c;无论是海洋、沙漠、高山&#xff0c;还是灾害现场&#xff0c;普通手机往往因基站信号无法覆盖而失效。此时&#xff0c;卫星电话便成为连接世界的“生命线”。…

【C/C++】高阶用法_笔记

1. 模板元编程&#xff08;TMP&#xff09;与编译时计算 (1) 类型萃取与 SFINAE 类型萃取&#xff08;Type Traits&#xff09;&#xff1a;利用模板特化在编译时推断类型属性。 template<typename T> struct is_pointer { static constexpr bool value false; };templ…

鸿蒙OSUniApp 实现一个精致的日历组件#三方框架 #Uniapp

使用 UniApp 实现一个精致的日历组件 前言 最近在开发一个约会小程序时&#xff0c;需要实现一个既美观又实用的日历组件。市面上虽然有不少现成的组件库&#xff0c;但都不太符合我们的设计需求。于是&#xff0c;我决定从零开始&#xff0c;基于 UniApp 自己实现一个功能完…

PyQt5完整指南:从入门到实践

引言 PyQt5是Python编程语言的一个GUI&#xff08;图形用户界面&#xff09;工具包&#xff0c;它是Qt5应用程序框架的Python绑定。Qt是一个跨平台的C应用程序开发框架&#xff0c;被广泛用于开发GUI程序和非GUI程序。PyQt5让Python开发者能够使用Python语言享受到Qt框架的强大…

Excel的详细使用指南

### **一、Excel基础操作** #### **1. 界面与基本概念** - **工作簿&#xff08;Workbook&#xff09;**&#xff1a;一个Excel文件&#xff08;扩展名.xlsx&#xff09;。 - **工作表&#xff08;Worksheet&#xff09;**&#xff1a;工作簿中的单个表格&#xff08;默认名…

Linux grep -r 查找依赖包是否存在依赖类 Class

方法一&#xff1a;通过 Linux &#xff0c;grep -r ClassPath 命令 grep -f org.apache.kafka.connect.source.SourceRecord在 jar 包所在 lib 或者 lib/plugins 目录下执行&#xff0c;grep -r&#xff0c; flink-sql-connector-sqlserver-cdc-3.3.0.jar 中此 kafka Source…

碎片笔记|AI生成图像溯源方法源码复现经验(持续更新中……)

前言&#xff1a;本篇博客分享一些溯源方法的复现经验&#xff0c;希望能帮助到大家&#x1f389;。 目录 1. Close-set AttributionRepmixDe-FakeDNA-Net 2. Open-set AttributionPOSE 3. Single-Model AttributionOCC-CLIPLatentTracer 1. Close-set Attribution Repmix 论…

SAP Fiori Elements Object Page

🏰 SAP Fiori Elements Object Page:魔法积木城堡的建造秘密 想象一下,你曾经去过一个神奇的乐高主题公园,在那里,城堡会根据你的设计图纸自动搭建,而你只需要提供一张设计说明书,不必亲自摆放每一块积木!这就是SAP Fiori Elements Object Page的渲染魔法! 🧙‍♂…

Git 用户名与邮箱配置全解析:精准配置——基于场景的参数选择

目录 一、配置查看&#xff1a;理解多层级配置体系二、精准配置&#xff1a;基于场景的参数选择1. 仓库级配置&#xff08;推荐&#xff09;2. 用户级配置3. 系统级配置 三、历史提交信息修改1. 修改最近一次提交2. 修改多个历史提交&#xff08;危险操作&#xff09; 五、配置…

Fabric系列 - SoftHSM 软件模拟HSM

在 fabric-ca-server 上使用软件模拟的 HSM(密码卡) 功能 安装 SoftHSMv2 教程 SoftHSMv2 默认的配置文件 /etc/softhsm2.conf默认的token目录 /var/lib/softhsm/tokens/ 初始化和启动fabric-ca-server&#xff0c;需要设置一个管理员用户的名称和密码 初始化令牌 # 初始…

医学影像系统的集成与工作流优化

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…