为什么scikit-learn对于不同的回归变量需要不同的数据形状?
在使用时,我总是发现自己在重塑数据sklearn
,这很烦人并且使我的代码很难看。为什么不能使库能够处理各种数据形状并进行适当的解释?例如,要使用线性回归器,我需要
from sklearn.linear_model import LinearRegression
x = np.random.rand(10).reshape(-1,1)
y = np.random.rand(10).reshape(-1,1)
regr = LinearRegression()
regr.fit(x,y)
但是,如果我想使用支持向量回归器,则无需重塑自变量:
from sklearn.svm import SVR
x = np.random.rand(10).reshape(-1,1)
y = np.random.rand(10)
regr = SVR()
regr.fit(x,y)
我认为以这种方式设计库是有原因的。谁能照亮我?
-
当你这样做
y = np.random.rand(10)
,y是 一个维数组
中[10,]
。它是行向量还是列向量都没有关系。它只是一个只有一个维度的向量。
它是“ numpy哲学 ”的一部分。而sklearn取决于numpy。至于您的评论:
为什么sklearn无法自动理解,如果我将其传递给n_samples = n和n_features = 1的形状(n,)
sklearn 可能无法 仅基于X数据推断
n_samples=n and n_features=1
(n_samples=1 and n_features=n
)是否绕过()。如果传递了y,则可以这样做,这可以使清楚n_samples
。但这意味着更改所有依赖于这种语义的代码,并且可能会破坏很多事情,因为这 严重
sklearn
依赖于numpy
操作。您可能还需要检查以下讨论类似问题的链接。