【问题标题】:Why do I need to use ravel() in this case?为什么在这种情况下我需要使用 ravel() ?
【发布时间】:2021-06-03 20:28:03
【问题描述】:

我真的很困惑为什么在将数据拟合到 SGDRegressor 之前需要使用 ravel()。

这是代码:

from sklearn.linear_model import SGDRegressor
sgd_reg = SGDRegressor(max_iter = 1000, tol = 1e-3, penalty = None, eta0= 0.1)
sgd_reg.fit(X, y.ravel())

这些是 X 和 y 的形状:

>>> X.shape
(100, 1)

>>> y.shape
(100, 1)

>>> y.ravel().shape
(100,)

【问题讨论】:

    标签: python scikit-learn sgd


    【解决方案1】:

    y 视为一个二维矩阵,尽管它只有一列。但是fit 方法期望y 是一个平面数组。这就是为什么您必须使用ravel 将二维数组转换为一维数组的原因。

    在机器学习论文和教科书中很常见将y写成矩阵,因为它可以简化矩阵相乘时的符号。但是你也可以把它写成一个简单的一维向量。你可以说它没有区别,因为在任何一种情况下它实际上只有一个维度,但在数学上和 Python 实现中,矩阵和向量是两个不同的对象。

    【讨论】:

      猜你喜欢
      • 2013-01-25
      • 1970-01-01
      • 2016-08-08
      • 2016-07-17
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      相关资源
      最近更新 更多