使用Python格式化和切片数组 - 为线性回归准备数据

时间:2018-02-07 11:32:09

标签: python arrays numpy scikit-learn linear-regression

我知道这是一个非常基本的问题,但我正在努力格式化一个元组。 我有一个csv文件,其头部是:

id   x1  x2  x3  y1 y2
 1   23  45  31  2  5
 2   34  5   21  3  12
 3   234 4   26  4  20
....

我正在构建一个多目标线性回归模型(我将使用来自scikit learn的MultiOutputRegressor),所以我想将数据拆分为X(然后将在训练集和测试集中拆分)并将目标指向Y.我导入像这样的csv:

with open('data.csv', newline='') as csvfile:
    data = list(csv.reader(csvfile))

所以我得到了一个数组列表。但是如何访问数组中的元素?我的X集将是字段x1,x2,x3的所有值(然后我会选择一些X行来构建Xtrain);我的Y集将是y1,y2的所有值。 我的最终目标是:

X= [[23 45 31]
    [34 5 21]
    [234 4 26]
    ...]

Y=[[2,5]
   [3,12]
   [4,20] 
   ...]

我怎样才能做到这一点? 或者:我如何按照我在稀疏矩阵中所说的结构对数据进行分组,这是scikit学习线性回归函数的有效参数?

2 个答案:

答案 0 :(得分:3)

您可以使用numpy操作数组:

import numpy as np
data = np.array(data)    # Transform list to numpy array
data = data[1:,]         # Keep all lines except the header (first line)
y_col_index = 3
X = data[:,:y_col_index] # Select the first columns
Y = data[:,y_col_index:] # Select the last columns

答案 1 :(得分:0)

Victor Daplasse的回答可能更简单,但我总是喜欢使用pandas来阅读和预处理csv文件。

import pandas as pd
import numpy as np

data = pd.read_csv('data.csv')
X = np.array(data[['x1', 'x2', 'x3']])
Y = np.array(data[['y1', 'y2']])