最短语法使用numpy 1d-array作为sklearn X.

时间:2016-03-05 08:50:44

标签: python numpy scikit-learn

我经常有两个numpy 1d数组,xy,并希望使用它们执行一些快速的sklearn拟合+预测。

 import numpy as np
 from sklearn import linear_model

 # This is an example for the 1d aspect - it's obtained from something else.
 x = np.array([1, 3, 2, ...]) 
 y = np.array([12, 32, 4, ...])

现在我想做一些像

这样的事情
 linear_model.LinearRegression().fit(x, y)...

问题在于expects an X which is a 2d column array。出于这个原因,我通常会喂它

 x.reshape((len(x), 1))

我发现这很麻烦且难以阅读。

是否有一些较短的方法将1d数组转换为2d列数组(或者,让sklearn接受1d数组)?

1 个答案:

答案 0 :(得分:7)

您可以对数组进行切片,创建newaxis

x[:, None]

此:

>>> x = np.arange(5)
>>> x[:, None]
array([[0],
       [1],
       [2],
       [3],
       [4]])

相当于:

>>> x.reshape(len(x), 1)
array([[0],
       [1],
       [2],
       [3],
       [4]])

如果您发现它更具可读性,则可以使用转置矩阵:

np.matrix(x).T

如果你想要一个数组:

np.matrix(x).T.A