簡體   English   中英

為什么在這種情況下我需要使用 ravel() ?

[英]Why do I need to use ravel() in this case?

我真的很困惑為什么在將數據擬合到 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,)

y視為一個二維矩陣,盡管它只有一列。 但是fit方法期望y是一個平面數組。 這就是為什么您必須使用ravel將 2d 轉換為 1d 數組的原因。

在機器學習論文和教科書中,將y寫成矩陣是很常見的,因為它可以簡化矩陣相乘時的符號。 但是你也可以把它寫成一個簡單的一維向量。 你可以說它沒有區別,因為在任何一種情況下它實際上只有一個維度,但是在數學上和在 Python 實現中,矩陣和向量是兩個不同的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM