将人工智能训练数据(.csv)读取到Python中的特定数据结构

问题描述 投票:-1回答:3

我是python的新手,我正在尝试执行一个简单的任务,即读取.csv文件并将其保存在特定的数据结构中。我正在使用numpy来加载数据,我得到了ndarrayndarray,这不是我想要的。

我的代码:

import numpy
filename = '../HTRU2/HTRU_2.csv'
raw_data = open(filename, 'rU')
data = numpy.loadtxt(raw_data, delimiter=',')

我正在寻找的数据结构是listtuplestuples是一对(x,y)的ndarrays:x是一个ndarray形状(nx - 1,1)填充floats,其中nx是文件中每行的元素数减去1; y是形状(1,1)的ndarray,它保持线的最后一个元素(也是float)。

您可能会认为这是我编写的一些疯狂的数据结构,但它实际上非常有用,因为我的最终目标是将其置于神经网络中(如果您了解NN,您可能已经猜到了元组实际上是一对输入/输出,两者都是列矩阵)。我不能改变数据结构。

文件样本:

140.5625,55.68378214,-0.234571412,-0.699648398,3.199832776,19.11042633,7.975531794,74.24222492,0
102.5078125,58.88243001,0.465318154,-0.515087909,1.677257525,14.86014572,10.57648674,127.3935796,0

每个元组看起来像这样:

#     x                      y
[[140.5625]               
[55.68378214]
[-0.234571412]
[-0.699648398]
[3.199832776]
[19.11042633]
[7.975531794]
[74.24222492]]     ,      [[0]]
python csv numpy data-structures artificial-intelligence
3个回答
1
投票
In [60]: data = np.arange(12).reshape(3,4)
In [61]: data
Out[61]: 
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
In [62]: data.tolist()
Out[62]: [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
In [63]: [tuple(l) for l in _]
Out[63]: [(0, 1, 2, 3), (4, 5, 6, 7), (8, 9, 10, 11)]
In [64]: [tuple(np.array(i) for i in l) for l in __]
Out[64]: 
[(array(0), array(1), array(2), array(3)),
 (array(4), array(5), array(6), array(7)),
 (array(8), array(9), array(10), array(11))]
In [65]: [tuple(np.array(i) for i in l) for l in data]
Out[65]: 
[(array(0), array(1), array(2), array(3)),
 (array(4), array(5), array(6), array(7)),
 (array(8), array(9), array(10), array(11))]

但是你真的需要一个元组层吗?为什么不添加维度:

In [67]: data.reshape(3,4,1)
Out[67]: 
array([[[ 0],
        [ 1],
        [ 2],
        [ 3]],

       [[ 4],
        [ 5],
        [ 6],
        [ 7]],

       [[ 8],
        [ 9],
        [10],
        [11]]])

0
投票
import pandas as pd
filename = '../HTRU2/HTRU_2.csv'
df = pd.read_csv(filename, encoding="utf-8")

第二个论点可能是不必要的

最后:

df = [tuple(x) for x in df.values]

0
投票

我找到了一个解决方案:

import numpy
filename = '../HTRU2/test.csv'
file = open(filename, 'rU')
data = numpy.loadtxt(file, delimiter=',')
training_data = list()
for test in data:
    training_data.append((test[:-1].reshape(8, 1), test[-1].reshape(1, 1)))

输入神经元的数量为8,输出神经元的数量为1。

© www.soinside.com 2019 - 2024. All rights reserved.