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

时间:2018-02-28 18:42:50

标签: python csv numpy data-structures artificial-intelligence

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

我的代码:

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

我正在寻找的数据结构是list tuplestuplesndarray s的一对(x,y): x ndarray的形状( nx - 1 ,1)填充float s,其中 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]]

3 个答案:

答案 0 :(得分: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]]])

答案 1 :(得分: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]

答案 2 :(得分: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。