如何在python中的同一文件中将输出矩阵保存在for循环中,然后使用岭回归

时间:2017-03-08 23:09:51

标签: python numpy regression pickle

我基本上有一个for循环,其每次迭代的输出是1000维数组以及矢量标识符([001],[010]或[100]之一))。我希望将数组与相应的矢量标识符一起存储在文件中的每次迭代中,这样当我加载文件时,第一列是数组,第二列是标识符。

我尝试将其存储在矩阵中(比如M):并说:

M=np.zeros((1000,2))
for i in range(1000):
    some operation that outputs 1x100 array X and 1x3 identifier Y
    M[i][0]=X
    M[i][1]=Y
np.save('output.txt', M)
像这样......

我明白为什么分配不起作用。酸洗也会返回错误。知道如何存储它吗?

然后我想使用岭回归来找到大小为100x3的一个矩阵Wout,这样它最适合在所有1000个数据集上优化的X.Wout = Y.知道怎么做吗?

1 个答案:

答案 0 :(得分:0)

看起来您正在尝试创建这样的列表:

In [140]: M=[]
In [141]: for i in range(5):
     ...:     X = np.arange(i,i+4)
     ...:     Y = [0,1,1]
     ...:     M.append([X,Y])
     ...:     
In [142]: M
Out[142]: 
[[array([0, 1, 2, 3]), [0, 1, 1]],
 [array([1, 2, 3, 4]), [0, 1, 1]],
 [array([2, 3, 4, 5]), [0, 1, 1]],
 [array([3, 4, 5, 6]), [0, 1, 1]],
 [array([4, 5, 6, 7]), [0, 1, 1]]]

可以将其转换为2d对象数组:

In [143]: Ma=np.array(M, object)
In [144]: Ma
Out[144]: 
array([[array([0, 1, 2, 3]), [0, 1, 1]],
       [array([1, 2, 3, 4]), [0, 1, 1]],
       [array([2, 3, 4, 5]), [0, 1, 1]],
       [array([3, 4, 5, 6]), [0, 1, 1]],
       [array([4, 5, 6, 7]), [0, 1, 1]]], dtype=object)
In [145]: Ma.shape
Out[145]: (5, 2)
In [146]: Ma[:,0]
Out[146]: 
array([array([0, 1, 2, 3]), array([1, 2, 3, 4]), array([2, 3, 4, 5]),
       array([3, 4, 5, 6]), array([4, 5, 6, 7])], dtype=object)