使用自己的csv文件数据进行神经网络学习时的数据处理

有时在进行进行神经网络训练时,需要自己导入本地的csv数据,此篇文章介绍如何导入数据,读取数据,设置训练集和测试集的大小,以及获取样本的features和tags
首先使用panda导入数据。

import pandas as pd
dataset = pd.read_csv('dataset.csv')

一般的csv数据第一行是表头
在这里插入图片描述
使用

dataset = dataset.values

就可以将数据转化成一个去掉表头的标准numpy二维数组。
然后就可以设置训练集和测试集的长度

train_size = int(len(dataset) * 0.8)  # 这里按照8:2进行训练和测试
test_size = len(dataset) - train_size

由于源数据可能标签集中,如果顺序提取训练集或者测试集的话可能导致比如训练集标签大多数是1,测试集标签基本都是0的情况,所以进行分割数据时可以打乱数据后再按比例分割
可以使用torch中提供的data方法

import torch.utils.data as Data
train_dataset, test_dataset = Data.random_split(dataset, [train_size, test_size])

训练集和测试集分割完成,注意此时的数据类型还是numpy类型,可以使用b = torch.from_numpy(a)
直接将numpy数据转化为torch数据类型。也可以使用DataLoader方法进行批量读取数据

from torch.utils.data import DataLoader
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=False)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)

此处我设置的每次读取64个数据,即batch_size=64,因为之前已经使用random_split打乱数据了,所以此处的shuffle就设置为false,即不随机读取。

好了,截至目前已经成功搞好训练集train_loader和测试集test_loader。在将这些数据带入到我们设置的网络中时,可能需要分割样本的特征features以及样本的标签tag,一般标签是在一行数据的最后一个位置。
遍历数据集时,

for data in train_loader:
    featurs = data[:, :-1]
    tags = data[:, -1:]
	

一个维度一个逗号,如果使用该维度的全部,比如在此处是索取所有的行,就加一个冒号即可。
此处提取第一列到最后倒数第二列,此处-1即是最后一列, :-1不包含最后一列,就像2:6表示[2, 6)
如果提取最后一列,就可以使用上面提取tags的用法,这样就不用在源数据上数有多少列,也不容易出错。

  • 28
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
CNN神经网络是一种用于图像识别和分类的深度学习模型,但是也可以用于处理CSV格式的数据预测。下面是一个基本的示例代码,展示了如何使用CNN神经网络CSV数据进行预测。 首先,我们需要导入必要的库和模块,包括TensorFlow和Keras。然后,我们可以开始定义模型。 ```python import numpy as np import pandas as pd import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers # 读取CSV数据 data = pd.read_csv('data.csv') # 分离特征和标签 X = data.iloc[:, :-1] # 特征 y = data.iloc[:, -1] # 标签 # 将特征和标签转换为NumPy数组 X = np.array(X) y = np.array(y) # 数据预处理 X = X.reshape(X.shape[0], X.shape[1], 1) # 将特征形状转换为适合CNN输入的形状 y = keras.utils.to_categorical(y) # 将标签进行one-hot编码 # 创建CNN模型 model = keras.Sequential() model.add(layers.Conv1D(filters=32, kernel_size=3, activation='relu', input_shape=(X.shape[1], 1))) model.add(layers.MaxPooling1D(pool_size=2)) model.add(layers.Flatten()) model.add(layers.Dense(10, activation='relu')) model.add(layers.Dense(y.shape[1], activation='softmax')) # 编译和训练模型 model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) model.fit(X, y, epochs=10, batch_size=32) # 预测新的CSV数据 new_data = pd.read_csv('new_data.csv') new_X = np.array(new_data) new_X = new_X.reshape(new_X.shape[0], new_X.shape[1], 1) predictions = model.predict(new_X) # 输出预测结果 for i in range(len(predictions)): print(np.argmax(predictions[i])) ``` 在以上代码中,我们首先从CSV文件中读取原始数据,并将其分为特征和标签。接下来,我们将特征和标签转换为NumPy数组,为了适应CNN模型,我们使用`X.shape[0], X.shape[1], 1`将特征形状转换为适当的形状。然后,我们对标签进行one-hot编码。 然后,我们定义了一个简单的CNN模型,包括一个卷积层,最大池化层,平坦层和两个全连接层。我们使用'Adam'优化器和交叉熵损失函数进行模型的编译和训练。 最后,我们读取一个新的CSV数据文件进行预测。我们将预测结果输出到控制台。 这只是一个简单的示例,你可以根据你的具体数据和需求进行相应的修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值