数据处理"/>
深度学习中的数据处理
现在将一些有关数据处理的库函数以及用法总结如下,希望能对以后有所帮助。
作为深度学习的第一步,一定是要将各种各样的数据从本地或者云端导入到我们的模型中,所以数据的处理一定是很重要的一部分。这里首先将numpy库中的一些有关函数总结如下,之后会补充基于paddlepaddle框架下的数据处理知识。
一、理论部分
简单来说数据的预处理需要经过以下几个步骤,数据载入,数据分割和数据归一化,本博文会以“波士顿房价预测”为例,梳理一遍数据处理的整体思路,并会将所用到的函数在后补充相关用法。
首先我们用记事本打开这个数据文件,看看这个数据文件里面的内容到底是什么。打开之后我们会发现它是由十四列数据组成的。这十四列分别是评价波士顿房价的估计参数(具体可以从网上找到这里不再赘述),因此我们首先需要把本地的文件导入到我们的编辑器中,这时候我们就需要使用一些函数来帮助我们完成操作。
1.数据载入
这次我们选择fromfile()对数据进行读取,读取之后我们对数据打印看看是什么样子的。
import numpy as np
import json
# 读入训练数据
datafile = r'C:\Users\DL\housing.data'
data = np.fromfile(datafile, sep=' ')
print(data)
print(type(data))
print(np.shape(data))np.savetxt(r'C:\Users\DL\fromfile_load.txt',data)
打印读取的结果如下,
发现他是一个有7084行的一个数组,把数据保存到记事本里可以看到他的排列如下图所示。
通过fromfile把我们的数据成功进行载入,经过这个函数我们发现他把所有的数据都装载进了一列,组成了一个一维数组,显然这样的格式显然是不利于我们进行进一步操作的,于是我们应该对数据进行整形,方便我们的进一步处理。
数据原本是由13个参数和一个结果构成,那我们需要把这7084个行,按照它本来的顺序进行转化,将其整形为[N,14]的二维数组。这样我们就可以根据不同的参数获取相应的结果。同时我们将每一组的参数名称作为index对数据进行划分。
feature_names = [ 'CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE','DIS','RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV' ]
feature_num = len(feature_names)
data = data.reshape([data.shape[0] // feature_num, feature_num])
print(data)
np.savetxt(r'C:\Users\小郭哥\DL\date_reshape.txt',data)
可以得到如下结果,发现已经按照我们的需求把不同参数所对应的数据进行分开。这时候我们就完成了数据预处理的第一步,对数据的载入。
2、数据分割
为了对我们训练出来的参数进行验证,因此我们需要把数据集划分成训练集和测试集,通过训练集对参数的大小进行训练,通过测试集对参数的准确性进行确认。在这里我们通过排列顺序,将数据集按照百分之八十分给训练集,百分之二十给测试集的方式进行划分。
x=data
print(x.shape[0])
#一共有506份数据,提取百分之八十作为训练集--404
ratio = 0.8
offset = int(data.shape[0]*ratio)
training_data = data[:offset]
test_data = data[offset:]
print(training_data.shape)
3、数据归一化
为了使模型训练更高效,我们会对数据进行归一化处理,使得每个特征的取值缩放到[-0.5,0.5],我们采用如下方式进行归一化:用每一个数据减去数据集的均值再除数据中最大值和最小值的差。因为每一个数据都处于相同的区间中,所以他们的权重刚好代表了其在最终预测结果中所占的比重。
max = training_data.max(axis=0)
min = training_data
更多推荐
深度学习中的数据处理
发布评论