深度学习数据处理(可执行代码)

数据预处理常常占用深度学习中很大的一部分,且处理起来费时费力,本文旨在分享常用的一些方法,非常适合小白学习。代码包含import,均测试运行过,可直接食用~

为了方便大家理解处理过程,代码使用机械硬盘数据,包含两个csv文件,每个csv文件中包含多个特征,每个特征分为原始特征和正则化特征两种。
链接:https://pan.baidu.com/s/1IkNnW5XuFfsYOwZ0-yCgOg
提取码:disk



csv文件

  • 遍历单个文件所含文件列表

使用os中的listdir方法返回包含所有文件名的列表,再使用join结合判断是否是文件的方法合成完整csv文件名列表

import os
def files_path(rootpath):
    path_list = []
    if os.path.exists(rootpath):
        dirs = os.listdir(rootpath)#用于返回指定的文件夹包含的文件、即包含的文件夹的名字的列表
        dirs.sort()#作排序
        for dir in dirs:
            parent_path = os.path.join(rootpath, dir)#返回rootpath\dir1....or rootpath\dir2....等等
            if not os.path.isdir(parent_path):#判断对象是否为一个文件,若不是文件
                path_list.append(parent_path)
    return path_list#返回所有csv文件的位置列表
if __name__ == "__main__":
    print(files_path('dataset'))
  • 读取单个csv文件

使用pandas中的read_csv方法

import pandas as pd
df = pd.read_csv('data/data_Q1_2019/2019-01-01.csv')#读取单个csv文件
print(df)

DataFrame数据处理方法

从csv文件中读取的数据即为DataFrame类型。

  • 取DataFrame中关键列数据

这里取的是failure列(待预测特征)和其他关键特征

import pandas as pd
df = pd.read_csv('data/data_Q1_2019/2019-01-01.csv')
columns_specified = []
features = [1, 7, 9, 190, 193, 194, 240, 241, 242]
for feature in features:
    columns_specified += ["smart_{0}_raw".format(feature)]  # 取关键特征列到列表中
columns_specified = ["failure"] + columns_specified
data = data[columns_specified]
  • 取全部列,和80%的行作为训练集

data = data.iloc[:int(0.8 * data.shape[0]), :]  # 取全部列,和80%的行作为训练集
data = data.iloc[int(0.8*data.shape[0]):,:]#选取后20%的行作为测试集
  • 向DataFrame中添加行

使用pandas中concat方法

import pandas as pd
df = pd.read_csv('data/data_Q1_2019/2019-01-01.csv')#读取单个csv文件
data1 = df[df['serial_number'] == 'ZJV0XJQ4']
print(data1)
sample_data = pd.DataFrame(columns=["serial_number"])#这里把columns设置为你想要的特征,建议设置与data1的列特征相同
sample_data = pd.concat([sample_data, data1], axis=0, join='outer', sort=False)
print(sample_data)
  • 取dataFrame中’data’列的第i+1行值方法

使用DataFrame对应的values方法

import pandas as pd
df = pd.read_csv('data/data_Q1_2019/2019-01-01.csv')#读取单个csv文件
sample_data = df
print(type(df))
print(type(sample_data))
print(type(sample_data['date']))
print(sample_data['date'].values[0])#取列 为“date”的第1行的值
print(sample_data['date'].values[3])#取列 为“date”的第4行的值

结果:

<class 'pandas.core.frame.DataFrame'>
<class 'pandas.core.frame.DataFrame'>
<class 'pandas.core.series.Series'>
2019-01-01
2019-01-01

我们所知道的values方法一般用于列表,那么series(序列)和list(列表)有什么区别呢?


列表

  • 分隔符

使用split方法将data/data_Q1_2019\2019-03-01.csv以“\”分隔为列表[data/data_Q1_2019,2019-03-01.csv],下面用到\为了转义。

import os
import re

#以上写过的获取文件包含的csv文件列表方法
def files_path(rootpath):
    path_list = []
    if os.path.exists(rootpath):
        dirs = os.listdir(rootpath)#用于返回指定的文件夹包含的文件、即包含的文件夹的名字的列表
        dirs.sort()#作排序
        for dir in dirs:
            parent_path = os.path.join(rootpath, dir)#返回rootpath\dir1....or rootpath\dir2....等等
            if not os.path.isdir(parent_path):#判断对象是否为一个文件,若不是文件
                path_list.append(parent_path)
    return path_list#返回所有csv文件的位置列表
if __name__ == "__main__":
    print(files_path('dataset'))

path_list = files_path('data/data_Q1_2019')
for path in path_list:
    t = re.split(r'\\', path)  # 对file_path中的元素进行分割
    print(type(t))
    print("t[-1] = \n")
    print(t[-1])

持续更新…

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 在 C 语言中实现深度学习模型可以使用一些开源的库,比如 Caffe、TensorFlow 等。这些库都提供了一系列的函数和工具,帮助你定义、训练和测试深度学习模型。 首先,你需要准备好训练数据和测试数据。训练数据用于训练深度学习模型,测试数据用于评估模型的准确性。 然后,你需要使用 C 语言编写程序,使用这些库中的函数来定义深度学习模型的结构。这通常包括确定模型的输入和输出,以及模型中间的各个层的结构。 接下来,你可以使用训练数据来训练模型。这一过程通常包括多次迭代训练数据,并使用各种优化算法来最小化模型的错误率。 最后,你可以使用测试数据来评估模型的准确性。如果模型的表现满意,就可以将它用于实际应用中。 希望这些信息对你有帮助! ### 回答2: 使用C语言实现一个深度学习模型的可执行算法相对来说比较困难。因为深度学习模型通常依赖于大规模的矩阵运算和复杂的神经网络结构,而C语言并不擅长处理这些复杂的计算和数据结构。 C语言主要用于系统级编程和底层开发,它更适合与硬件进行交互以及执行高性能的计算任务。如果想要实现一个深度学习模型,通常会选择使用更适合进行科学计算和机器学习的语言,如Python、C++、Java等。 在C语言中实现一个深度学习模型需要自行处理矩阵运算、激活函数、神经网络的构建等一系列复杂的计算任务,这不仅工作量大而且容易出错。相比之下,使用Python等高级语言编写深度学习模型会更加简洁和方便,因为它们提供了更丰富的科学计算库(如NumPy、TensorFlow、PyTorch)和高级的深度学习框架。 总结来说,使用C语言实现一个深度学习模型可执行算法相对复杂且不够高效,建议选择更适合的高级语言和深度学习框架。 ### 回答3: 使用C语言实现一个深度学习模型的可执行算法是具有一定挑战性的任务。深度学习模型通常使用Python等高级语言实现,因为这些语言提供了丰富的库和框架来简化深度学习的开发和训练过程。然而,对于特定的应用场景,使用C语言来实现深度学习模型也是可行的。 使用C语言来实现深度学习模型,首先需要编写底层的计算和矩阵运算库。这是因为深度学习模型的训练和推理过程主要涉及到大规模的矩阵乘法和非线性激活函数等计算。在编写这些库时,需要考虑高效的内存管理和并行计算等问题,以提高算法的性能。 其次,需要编写深度学习模型的前向传播和反向传播算法。前向传播算法用于将输入数据通过神经网络的各层进行计算,得到输出结果;反向传播算法则用于根据损失函数的梯度更新网络的权重参数。这部分编程涉及到矩阵运算和各种激活函数的计算,需要正确实现这些计算以保证算法的正确性和有效性。 最后,还需要实现一些辅助功能,例如数据预处理、参数初始化和模型保存等。这些功能能够提高算法的鲁棒性和实用性。 由于C语言相对于高级语言来说缺乏一些便利的特性,例如自动内存管理和现成的深度学习库,所以使用C语言实现深度学习模型的算法会更加复杂和繁琐。但是,对于一些嵌入式设备和资源有限的场景,使用C语言来实现深度学习模型是一种合理的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂java杰尼龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值