课程来源:百度飞桨

飞桨AI Studio - 人工智能学习实训社区 (baidu.com)

目录

飞桨AI Studio - 人工智能学习实训社区 (baidu.com)

数据处理

1.读入数据

绝对地址、相对地址

读取数据

数据形状变换

数据集和训练集的划分

数据归一化

封装函数loaddata


数据处理

数据处理包含五个部分:数据导入、数据形状变换、数据集划分、数据归一化处理和封装load data函数。数据预处理后,才能被模型调用。

1.读入数据

绝对地址、相对地址

如果引用绝对地址需加  r'绝对地址'

path.append(r'E:\Downloads\绝对地址\demo') # 添加路径

相对地址

../ 表示当前文件所在的目录的上一级目录

./ 表示当前文件所在的目录(可以省略)

/ 表示当前站点的根目录(域名映射的硬盘目录)

读取数据

numpy.fromfile

numpy.fromfile(file, dtype=float, count=-1, sep='', offset=0)

从文本或二进制文件中的数据构造一个数组。

读取已知数据类型的二进制数据以及解析简单格式化的文本文件的一种高效方法。使用tofile方法写入的数据可以使用此函数读取。

参数

file :file 或 str 或 Path

打开文件对象或文件名。

在1.17.0版中进行了更改:pathlib.Path现在接受对象。

dtype :data-type, 可选

返回数组的数据类型。对于二进制文件,

它用于确定文件中各项的大小和字节顺序。

支持大多数内置数字类型,并且可能支持扩展名类型。

1.18.0版中的新功能:复杂dtypes。

count :int

要读取的项目数。-1表示所有项目(即完整文件)。

sep :str

如果文件是文本文件,则项目之间的分隔符。

空(“”)分隔符表示文件应被视为二进制文件。

分隔符中的空格(“”)匹配零个或多个空格字符。

仅由空格组成的分隔符必须至少匹配一个空格。

offset :int

与文件当前位置的偏移量(以字节为单位)。

默认值为0。仅允许用于二进制文件。

1.17.0版中的新功能。

参考:Python numpy.fromfile函数方法的使用-CJavaPy

数据形状变换

  • numpy.arange(n).reshape(a, b)    依次生成n个自然数,并且以a行b列的数组形式显示
  • mat (or array).reshape(c, -1)     必须是矩阵格式或者数组格式,才能使用 .reshape(c, -1) 函数, 表示将此矩阵或者数组重组,以 c行d列的形式表示
  • numpy.arange(a,b,c).reshape(m,n)  :将array的维度变为m 行 n列。

参考:Python的reshape的用法:reshape(1,-1)_wamg潇潇的博客-CSDN博客_python reshape

数据集和训练集的划分

注意划分比例,一般为7/3或 8/2为训练集/测试集

数据归一化

1.训练集和测试集都需要做统一的归一化操作

2.对测试集进行归一化操作时,所用最大、最小、平均值均为训练集上的数据

封装函数loaddata

注意封装后返回值

附完整数据处理代码:

# 数据处理部分,共有五个步骤
# 1.读入数据
# 导入需要用到的package
import numpy as np
import json
# 读入训练数据
datafile = 'D:\PycharmProjects\pytorch学习\波士顿房价预测\housing.data'
data = np.fromfile(datafile, sep=' ')
# print(data)  # [6.320e-03 1.800e+01 2.310e+00 ... 3.969e+02 7.880e+00 1.190e+01],共506*14条数据为一行# 2.数据形状变换
# 读入之后的数据被转化成1维array,其中array的第0-13项是第一条数据,第14-27项是第二条数据,以此类推....
# 这里对原始数据做reshape,变成N x 14的形式
feature_names = [ 'CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE' , 'DIS' , 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV' ]
feature_num = len(feature_names)
# print(feature_num)  # feature_num=14
data = data.reshape([data.shape[0] // feature_num, feature_num])
# print(data.shape)  # (506, 14)
# print(data[0])  # 对应数据集第一行14个数据# 3.数据集划分
ratio = 0.8  # 所有数据中作为训练集的比例
offset = int(data.shape[0] * ratio)
training_data = data[:offset]  # 切片操作,从第0个到offset-1个
# print(training_data.shape)  # (404, 14)# 4.数据归一化处理
# 计算train数据集的最大值,最小值,平均值
maximums, minimums, avgs = training_data.max(axis=0), training_data.min(axis=0), training_data.sum(axis=0) / training_data.shape[0]
# print(maximums,minimums,avgs) 得到每一列的最大值、最小值、平均值
# 对数据进行归一化处理
for i in range(feature_num):#print(maximums[i], minimums[i], avgs[i])data[:, i] = (data[:, i] - minimums[i]) / (maximums[i] - minimums[i])  # 所有的值都在0-1之间了# 5.封装成load data函数
# 封装成函数的目的是方便以后的模型调用
def load_data():# 从文件导入数据datafile = 'D:\PycharmProjects\pytorch学习\波士顿房价预测\housing.data'data = np.fromfile(datafile, sep=' ')# 每条数据包括14项,其中前面13项是影响因素,第14项是相应的房屋价格中位数feature_names = [ 'CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', \'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV' ]feature_num = len(feature_names)# 将原始数据进行Reshape,变成[N, 14]这样的形状data = data.reshape([data.shape[0] // feature_num, feature_num])# 将原数据集拆分成训练集和测试集# 这里使用80%的数据做训练,20%的数据做测试# 测试集和训练集必须是没有交集的ratio = 0.8offset = int(data.shape[0] * ratio)training_data = data[:offset]# 计算训练集的最大值,最小值,平均值maximums, minimums, avgs = training_data.max(axis=0), training_data.min(axis=0), \training_data.sum(axis=0) / training_data.shape[0]# 对数据进行归一化处理for i in range(feature_num):#print(maximums[i], minimums[i], avgs[i])data[:, i] = (data[:, i] - minimums[i]) / (maximums[i] - minimums[i])# 训练集和测试集的划分比例training_data = data[:offset]test_data = data[offset:]return training_data, test_data# 获取数据
training_data, test_data = load_data()
x = training_data[:, :-1]  # 去掉最后一列数据,每组数据变成13个
y = training_data[:, -1:]  # 最后一列数据

零基础入门深度学习——数据处理相关推荐

  1. AI Studio 飞桨 零基础入门深度学习笔记6.3-手写数字识别之数据处理

    AI Studio 飞桨 零基础入门深度学习笔记6.3-手写数字识别之数据处理) 概述 前提条件 读入数据并划分数据集 扩展阅读:为什么学术界的模型总在不断精进呢? 训练样本乱序.生成批次数据 校验数 ...

  2. AI Studio 飞桨 零基础入门深度学习笔记1-深度学习的定义

    AI Studio 飞桨 零基础入门深度学习-笔记 人工智能.机器学习.深度学习的关系 机器学习 机器学习的实现 机器学习的方法论 案例:牛顿第二定律 确定模型参数 模型结构介绍 深度学习 神经网络的 ...

  3. 零基础入门深度学习(二):用一个案例掌握深度学习方法

    导读 本课程是百度官方开设的零基础入门深度学习课程,主要面向没有深度学习技术基础或者基础薄弱的同学,帮助大家在深度学习领域实现从0到1+的跨越.从本课程中,你将学习到: 深度学习基础知识 numpy实 ...

  4. 【二】零基础入门深度学习:用一个案例掌握深度学习方法

    (给机器学习算法与Python学习加星标,提升AI技能) 作者 | 毕然  百度深度学习技术平台部主任架构师 内容来源 | 百度飞桨深度学习集训营 本文转自飞桨PaddlePaddle 导读 从本课程 ...

  5. AI Studio 飞桨 零基础入门深度学习笔记2-基于Python编写完成房价预测任务的神经网络模型

    AI Studio 飞桨 零基础入门深度学习笔记2-基于Python编写完成房价预测任务的神经网络模型 波士顿房价预测任务 线性回归模型 线性回归模型的神经网络结构 构建波士顿房价预测任务的神经网络模 ...

  6. 【一】零基础入门深度学习:用numpy实现神经网络训练

    (给机器学习算法与Python学习加星标,提升AI技能) 作者 | 毕然 百度深度学习技术平台部主任架构师 内容来源 | 百度飞桨深度学习集训营 本文转自飞桨PaddlePaddle 本课程是百度官方 ...

  7. 零基础入门深度学习的五篇经典教程

    零基础入门深度学习>系列文章旨在讲帮助爱编程的你从零基础达到入门级水平.零基础意味着你不需要太多的数学知识,只要会写程序就行了,没错,这是专门为程序员写的文章.虽然文中会有很多公式你也许看不懂, ...

  8. 零基础入门深度学习(5) - 循环神经网络

    往期回顾 在前面的文章系列文章中,我们介绍了全连接神经网络和卷积神经网络,以及它们的训练和使用.他们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的.但是,某些任务需要能够更好的 ...

  9. 零基础入门深度学习(7) - 递归神经网络

    无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就o ...

最新文章

  1. 如何区分两列中不同数据_如何在VESTA中区分不同表面层的原子
  2. nvidia 英伟达 显卡 GPU 的计算能力
  3. 华为开源只用加法的神经网络:实习生领衔打造,效果不输传统CNN | CVPR 2020 Oral...
  4. 记录一次bug解决过程:eclipse Installed JREs 配置引出的问题
  5. RandomAccessFile简介与使用
  6. NSString、NSArray、NSDic常用方法汇总
  7. wordpress多站点主站调用分站最新文章_企业网站SEO最新的7个优化步骤!
  8. 从零开始学视觉Transformer (11):目标检测DETR-2
  9. php unset函数_PHP | 使用unset()函数从数组中删除元素
  10. Linux思维导图及命令速查表8张
  11. 解决精简版的XP下,无法使用运程桌面
  12. 同济大学 线性代数 第六版 pdf_线性代数同济大学第六版第一章课后习题答案
  13. python制作电子签名
  14. 服务器如何防止DDoS攻击?
  15. 怎么做ssl证书配置?
  16. 安卓编程基础——列表
  17. CPU FPU DSP MPU的概念介绍
  18. Nginx是如何处理一个请求的呢?如何通过不同于80的端口开启Nginx?
  19. 计算机原理(戴梅萼)
  20. 什么是DDos攻击,如何有效缓解DDos攻击?

热门文章

  1. linux 磁盘管理3板斧,df、du、fdisk:Linux磁盘管理三板斧的使用心得(2)
  2. php 命名空间 函数调用,PHP 命名空间 namespace 函数调用 类引用 详解
  3. python3利用pandas读取excel的列取出最大最小值
  4. GraphScope、Neo4j与TigerGraph单机环境下性能对比
  5. 基于vuex的物业管理系统APP及网页后台设计
  6. 分布式存储能成为存储市场增长的主要驱动力
  7. 在线免费词云图制作网站汇总
  8. java 探花交友项目day5 推荐好友列表 MongoDB集群 发布动态,查询动态 圈子功能
  9. vivado下使用ILA抓取波形
  10. java编程中缩进的意思,解释Java 的语句缩进,请详述,并举例说明(用初级Java程序)...