線性回歸#
- class sklearn.linear_model.LinearRegression(*, fit_intercept=True, copy_X=True, n_jobs=None, positive=False)[原始碼]#
普通最小平方法線性回歸。
LinearRegression 會擬合一個線性模型,其係數 w = (w1, …, wp) 會最小化數據集中觀測到的目標值與線性近似預測的目標值之間的殘差平方和。
- 參數:
- fit_interceptbool, default=True
是否計算此模型的截距。如果設定為 False,則在計算中不會使用截距(即,預期資料已置中)。
- copy_Xbool, default=True
如果為 True,則會複製 X;否則可能會被覆寫。
- n_jobsint, default=None
用於計算的作業數量。只有在問題足夠大時,才會提供加速,也就是首先
n_targets > 1
,其次X
是稀疏的,或者positive
設定為True
時。None
表示 1,除非在joblib.parallel_backend
環境中。-1
表示使用所有處理器。有關更多詳細資訊,請參閱詞彙表。- positivebool, default=False
設定為
True
時,會強制係數為正數。此選項僅支援密集陣列。在 0.24 版本中新增。
- 屬性:
- coef_形狀為 (n_features, ) 或 (n_targets, n_features) 的陣列
線性回歸問題的估計係數。如果在擬合過程中傳遞多個目標值 (y 為 2D),則這是形狀為 (n_targets, n_features) 的 2D 陣列,如果僅傳遞一個目標值,則這是長度為 n_features 的 1D 陣列。
- rank_int
矩陣
X
的秩。僅當X
為密集時才可用。- singular_形狀為 (min(X, y),) 的陣列
X
的奇異值。僅當X
為密集時才可用。- intercept_float 或形狀為 (n_targets,) 的陣列
線性模型中的獨立項。如果
fit_intercept = False
,則設定為 0.0。- n_features_in_int
在 fit 期間看到的特徵數量。
在 0.24 版本中新增。
- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在 fit 期間看到的特徵名稱。僅當
X
具有全部為字串的特徵名稱時才定義。在 1.0 版本中新增。
另請參閱
Ridge
嶺迴歸通過對係數的大小施加 l2 正規化懲罰來解決普通最小平方法的一些問題。
Lasso
Lasso 是一個線性模型,它使用 l1 正規化來估計稀疏係數。
ElasticNet
彈性網是一個使用係數的 l1 和 l2 範數正規化來訓練的線性迴歸模型。
注意事項
從實作的角度來看,這只是簡單的普通最小平方法 (scipy.linalg.lstsq) 或非負最小平方法 (scipy.optimize.nnls) 包裝成預測器物件。
範例
>>> import numpy as np >>> from sklearn.linear_model import LinearRegression >>> X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]]) >>> # y = 1 * x_0 + 2 * x_1 + 3 >>> y = np.dot(X, np.array([1, 2])) + 3 >>> reg = LinearRegression().fit(X, y) >>> reg.score(X, y) 1.0 >>> reg.coef_ array([1., 2.]) >>> reg.intercept_ np.float64(3.0...) >>> reg.predict(np.array([[3, 5]])) array([16.])
- fit(X, y, sample_weight=None)[原始碼]#
擬合線性模型。
- 參數:
- X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}
訓練資料。
- y形狀為 (n_samples,) 或 (n_samples, n_targets) 的類陣列
目標值。如有必要,將會轉換為 X 的 dtype。
- sample_weight形狀為 (n_samples,) 的類陣列,預設為 None
每個樣本的個別權重。
在 0.17 版本中新增: 參數 sample_weight 支援 LinearRegression。
- 返回:
- self物件
已擬合的估計器。
- get_metadata_routing()[原始碼]#
取得此物件的元資料路由。
請查看關於路由機制如何運作的使用者指南。
- 返回:
- routingMetadataRequest
封裝路由資訊的
MetadataRequest
。
- get_params(deep=True)[原始碼]#
取得此估計器的參數。
- 參數:
- deepbool, default=True
如果為 True,則會傳回此估計器的參數和所包含的子物件,這些子物件是估計器。
- 返回:
- paramsdict
對應到其值的參數名稱。
- predict(X)[原始碼]#
使用線性模型進行預測。
- 參數:
- X形狀為 (n_samples, n_features) 的類陣列或稀疏矩陣
樣本。
- 返回:
- C形狀為 (n_samples,) 的陣列
傳回預測值。
- score(X, y, sample_weight=None)[原始碼]#
傳回預測的決定係數。
決定係數 \(R^2\) 定義為 \((1 - \frac{u}{v})\),其中 \(u\) 是殘差平方和
((y_true - y_pred)** 2).sum()
,而 \(v\) 是總平方和((y_true - y_true.mean()) ** 2).sum()
。最佳可能分數為 1.0,且可能為負數(因為模型可能任意地更差)。一個總是預測y
的期望值,而忽略輸入特徵的常數模型,其 \(R^2\) 分數會是 0.0。- 參數:
- X形狀類似陣列 (n_samples, n_features)
測試樣本。對於某些估算器,這可能是一個預先計算的核矩陣或形狀為
(n_samples, n_samples_fitted)
的泛型物件列表,其中n_samples_fitted
是估算器擬合中使用的樣本數。- y形狀類似陣列 (n_samples,) 或 (n_samples, n_outputs)
X
的真實值。- sample_weight形狀為 (n_samples,) 的類陣列,預設為 None
樣本權重。
- 返回:
- score浮點數
相對於
y
的self.predict(X)
的 \(R^2\)。
注意事項
當在迴歸器上呼叫
score
時使用的 \(R^2\) 分數,從 0.23 版本開始使用multioutput='uniform_average'
,以保持與r2_score
的預設值一致。這會影響所有多輸出迴歸器(除了MultiOutputRegressor
)的score
方法。
- set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') LinearRegression [原始碼]#
請求傳遞給
fit
方法的中繼資料。請注意,只有當
enable_metadata_routing=True
時,此方法才相關(請參閱sklearn.set_config
)。請參閱 使用者指南,了解路由機制如何運作。每個參數的選項如下
True
:請求中繼資料,並在提供時傳遞給fit
。如果未提供中繼資料,則會忽略此請求。False
:不請求中繼資料,且元估算器不會將其傳遞給fit
。None
:不請求中繼資料,如果使用者提供中繼資料,則元估算器會引發錯誤。str
:中繼資料應以給定的別名(而非原始名稱)傳遞給元估算器。
預設值(
sklearn.utils.metadata_routing.UNCHANGED
)保留現有的請求。這可讓您變更某些參數的請求,而不變更其他參數的請求。於 1.3 版本新增。
注意
只有當此估算器用作元估算器的子估算器時,此方法才相關,例如在
Pipeline
中使用。否則,它沒有任何作用。- 參數:
- sample_weight字串、True、False 或 None,預設值=sklearn.utils.metadata_routing.UNCHANGED
用於
fit
中的sample_weight
參數的中繼資料路由。
- 返回:
- self物件
已更新的物件。
- set_params(**params)[原始碼]#
設定此估算器的參數。
此方法適用於簡單估算器以及巢狀物件(例如
Pipeline
)。後者具有<component>__<parameter>
形式的參數,因此可以更新巢狀物件的每個元件。- 參數:
- **params字典
估算器參數。
- 返回:
- self估算器實例
估算器實例。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') LinearRegression [原始碼]#
請求傳遞給
score
方法的中繼資料。請注意,只有當
enable_metadata_routing=True
時,此方法才相關(請參閱sklearn.set_config
)。請參閱 使用者指南,了解路由機制如何運作。每個參數的選項如下
True
:請求中繼資料,並在提供時傳遞給score
。如果未提供中繼資料,則會忽略此請求。False
:不請求中繼資料,且元估算器不會將其傳遞給score
。None
:不請求中繼資料,如果使用者提供中繼資料,則元估算器會引發錯誤。str
:中繼資料應以給定的別名(而非原始名稱)傳遞給元估算器。
預設值(
sklearn.utils.metadata_routing.UNCHANGED
)保留現有的請求。這可讓您變更某些參數的請求,而不變更其他參數的請求。於 1.3 版本新增。
注意
只有當此估算器用作元估算器的子估算器時,此方法才相關,例如在
Pipeline
中使用。否則,它沒有任何作用。- 參數:
- sample_weight字串、True、False 或 None,預設值=sklearn.utils.metadata_routing.UNCHANGED
用於
score
中的sample_weight
參數的中繼資料路由。
- 返回:
- self物件
已更新的物件。