【问题标题】:Why does the fit method in sklearn's LinearRegression only accept 2D array for the x-values, but 1D arrays for the y-values?为什么sklearn线性回归中的拟合方法只接受x值的二维数组,而y值的一维数组?
【发布时间】:2020-08-05 15:13:17
【问题描述】:

基本上只是标题。当我将脚趾浸入sklearn 库时,我感到很奇怪。有对此的解释吗?

【问题讨论】:

  • 我想这是为了泛化目的。在回归中,X 可以是多维的,如果它只有一维,它仍然可以表示为二维数组。 Y 只包含一个信号,因此只能是一维数组。允许使用独特的格式可以避免编写处理其他格式的“if”循环,并降低在代码更深处出现意外错误的风险。
  • 这可能是一个新手问题,但是为什么Y不能是一个多维数组呢?
  • 这意味着您正在进行多目标回归,即同时从同一训练集中预测多个信号。在这种情况下,Y 将是一个多维数组,实际上是sklearn has an implementation for it,您可以看到 Y 是一个多维数组。然而,这是非常不寻常的,因为大多数回归问题都不会从中受益。 sklearn 中的实现只是一个训练多个单目标回归器的包装器。
  • 事实上虽然LinearRegression确实接受一个2D目标数组,在这种情况下它会执行一个多元线性回归
  • 是的,我问这个问题的主要原因是因为我对为什么 x 值需要是 2D 数组感到困惑,但就像@A Co 说的那样,这只是为了保持一致性.

标签: python machine-learning scikit-learn linear-regression numpy-ndarray


【解决方案1】:

这正是 scikit-learn afaik 中 ML 模型的 fit 方法的设计选择方式。主要是为了与输入形状的规范保持一致:(n_samples, n_features):

X : {array-like, sparse matrix} of shape (n_samples, n_features)
     Training vector, where n_samples is the number of samples and
     n_features is the number of features.

check_array 的顶部也明确指出了引发错误的验证步骤:

Input validation on an array, list, sparse matrix or similar.
By default, the input is checked to be a non-empty 2D array containing
only finite values. If the dtype of the array is object, attempt
converting to float, raising on failure.

LinearRegression 确实实际上接受2D目标数组,在这种情况下它将执行多元线性回归。

【讨论】:

    猜你喜欢
    • 2020-04-20
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多