LinearSVR#
- class sklearn.svm.LinearSVR(*, epsilon=0.0, tol=0.0001, C=1.0, loss='epsilon_insensitive', fit_intercept=True, intercept_scaling=1.0, dual='auto', verbose=0, random_state=None, max_iter=1000)[source]#
線性支持向量迴歸。
與參數 kernel=’linear’ 的 SVR 相似,但它是根據 liblinear 而非 libsvm 實作,因此在懲罰和損失函數的選擇上更具彈性,並且應該能更好地擴展到大量的樣本。
LinearSVR
和SVR
之間的主要差異在於預設使用的損失函數,以及這兩個實作之間截距正規化的處理方式。此類別支援密集和稀疏輸入。
請在使用者指南中閱讀更多資訊。
在 0.16 版本中新增。
- 參數:
- epsilonfloat,預設值=0.0
epsilon 不敏感損失函數中的 epsilon 參數。請注意,此參數的值取決於目標變數 y 的尺度。如果不確定,請設定
epsilon=0
。- tolfloat,預設值=1e-4
停止條件的容差。
- Cfloat,預設值=1.0
正規化參數。正規化的強度與 C 成反比。必須為嚴格正數。
- loss{‘epsilon_insensitive’, ‘squared_epsilon_insensitive’},預設值=’epsilon_insensitive’
指定損失函數。epsilon 不敏感損失(標準 SVR)是 L1 損失,而平方 epsilon 不敏感損失('squared_epsilon_insensitive')是 L2 損失。
- fit_interceptbool,預設值=True
是否擬合截距。如果設定為 True,則會擴展特徵向量以包含截距項:
[x_1, ..., x_n, 1]
,其中 1 對應於截距。如果設定為 False,則計算中不會使用截距(即,預期資料已居中)。- intercept_scalingfloat,預設值=1.0
當
fit_intercept
為 True 時,實例向量 x 會變成[x_1, ..., x_n, intercept_scaling]
,即在實例向量後面附加一個常數值等於intercept_scaling
的「合成」特徵。截距變成 intercept_scaling * 合成特徵權重。請注意,liblinear 在內部會懲罰截距,將其視為特徵向量中的任何其他項。為了減少正規化對截距的影響,可以將intercept_scaling
參數設定為大於 1 的值;intercept_scaling
的值越高,正規化對它的影響就越小。然後,權重會變成[w_x_1, ..., w_x_n, w_intercept*intercept_scaling]
,其中w_x_1, ..., w_x_n
表示特徵權重,截距權重會依intercept_scaling
縮放。這種縮放允許截距項與其他特徵相比具有不同的正規化行為。- dual“auto” 或 bool,預設值=”auto”
選擇演算法以解決對偶或原始最佳化問題。當 n_samples > n_features 時,優先選擇 dual=False。
dual="auto"
會根據n_samples
、n_features
和loss
的值自動選擇參數的值。如果n_samples
<n_features
且最佳化器支援選取的loss
,則 dual 將會設定為 True,否則將會設定為 False。在 1.3 版本中變更:
"auto"
選項已在 1.3 版本中新增,並且將在 1.5 版本中成為預設值。- verboseint,預設值=0
啟用詳細輸出。請注意,此設定會利用 liblinear 中每個行程的執行階段設定,如果啟用此設定,則可能無法在多執行緒環境中正常運作。
- random_stateint、RandomState 實例或 None,預設值=None
控制用於隨機調整資料的虛擬隨機數字產生。傳遞 int 以便在多次函數呼叫中產生可重複的輸出。請參閱詞彙表。
- max_iterint,預設值=1000
要執行的最大迭代次數。
- 屬性:
- coef_ndarray,形狀為 (n_features),如果 n_classes == 2,否則為 (n_classes, n_features)
分配給特徵的權重(原始問題中的係數)。
coef_
是從raw_coef_
衍生的唯讀屬性,它遵循 liblinear 的內部記憶體配置。- intercept_ndarray,形狀為 (1),如果 n_classes == 2,否則為 (n_classes)
決策函數中的常數。
- n_features_in_int
在 fit 期間看到的特徵數量。
在 0.24 版本中新增。
- feature_names_in_ndarray,形狀為 (
n_features_in_
,) 在 fit 過程中看到的特徵名稱。 只有當
X
的特徵名稱都是字串時才會定義。在 1.0 版本中新增。
- n_iter_int
跨所有類別執行的最大迭代次數。
另請參閱
LinearSVC
使用與此類別相同的程式庫 (liblinear) 實現的支援向量機分類器。
SVR
使用 libsvm 實現的支援向量機迴歸:核心可以是⾮線性,但其 SMO 演算法⽆法像
LinearSVR
一樣擴展到⼤量樣本。sklearn.linear_model.SGDRegressor
SGDRegressor 可以通過調整懲罰和損失參數來優化與 LinearSVR 相同的成本函數。此外,它需要的記憶體更少,允許增量(線上)學習,並實現各種損失函數和正規化機制。
範例
>>> from sklearn.svm import LinearSVR >>> from sklearn.pipeline import make_pipeline >>> from sklearn.preprocessing import StandardScaler >>> from sklearn.datasets import make_regression >>> X, y = make_regression(n_features=4, random_state=0) >>> regr = make_pipeline(StandardScaler(), ... LinearSVR(random_state=0, tol=1e-5)) >>> regr.fit(X, y) Pipeline(steps=[('standardscaler', StandardScaler()), ('linearsvr', LinearSVR(random_state=0, tol=1e-05))])
>>> print(regr.named_steps['linearsvr'].coef_) [18.582... 27.023... 44.357... 64.522...] >>> print(regr.named_steps['linearsvr'].intercept_) [-4...] >>> print(regr.predict([[0, 0, 0, 0]])) [-2.384...]
- fit(X, y, sample_weight=None)[原始碼]#
根據給定的訓練資料擬合模型。
- 參數:
- X形狀為 (n_samples, n_features) 的類陣列或稀疏矩陣
訓練向量,其中
n_samples
是樣本數量,n_features
是特徵數量。- y形狀為 (n_samples,) 的類陣列
相對於 X 的目標向量。
- sample_weight形狀為 (n_samples,) 的類陣列,預設值為 None
分配給個別樣本的權重陣列。如果未提供,則每個樣本都會被賦予單位權重。
在 0.18 版本中新增。
- 返回:
- self物件
估計器的實例。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查看 使用者指南 了解路由機制如何運作。
- 返回:
- routingMetadataRequest
封裝路由資訊的
MetadataRequest
。
- get_params(deep=True)[原始碼]#
取得此估計器的參數。
- 參數:
- deepbool,預設值為 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
樣本權重。
- 返回:
- scorefloat
self.predict(X)
相對於y
的 \(R^2\)。
註解
在回歸器上呼叫
score
時使用的 \(R^2\) 分數從 0.23 版本開始使用multioutput='uniform_average'
,以與r2_score
的預設值保持一致。這會影響所有多輸出回歸器的score
方法(除了MultiOutputRegressor
)。
- set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') LinearSVR [原始碼]#
請求傳遞至
fit
方法的中繼資料。請注意,只有在
enable_metadata_routing=True
時,此方法才相關(請參閱sklearn.set_config
)。請參閱使用者指南 了解路由機制的運作方式。每個參數的選項如下
True
:要求中繼資料,如果提供,則傳遞給fit
。如果未提供中繼資料,則忽略此請求。False
:不要求中繼資料,並且元估計器不會將其傳遞給fit
。None
:不要求中繼資料,如果使用者提供,則元估計器會引發錯誤。str
:中繼資料應使用此給定的別名而非原始名稱傳遞給元估計器。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留現有的請求。這允許您變更某些參數的請求,而不是其他參數。新增於 1.3 版本。
注意
只有當此估計器被用作元估計器的子估計器時,此方法才相關,例如在
Pipeline
中使用。否則,它沒有任何效果。- 參數:
- sample_weightstr、True、False 或 None,預設值=sklearn.utils.metadata_routing.UNCHANGED
fit
中sample_weight
參數的中繼資料路由。
- 返回:
- self物件
更新後的物件。
- set_params(**params)[原始碼]#
設定此估計器的參數。
此方法適用於簡單的估計器以及巢狀物件(例如
Pipeline
)。後者的參數形式為<component>__<parameter>
,因此可以更新巢狀物件的每個元件。- 參數:
- **paramsdict
估計器參數。
- 返回:
- self估計器實例
估計器實例。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') LinearSVR [原始碼]#
請求傳遞至
score
方法的中繼資料。請注意,只有在
enable_metadata_routing=True
時,此方法才相關(請參閱sklearn.set_config
)。請參閱使用者指南 了解路由機制的運作方式。每個參數的選項如下
True
:要求中繼資料,如果提供,則傳遞給score
。如果未提供中繼資料,則忽略此請求。False
:不要求中繼資料,並且元估計器不會將其傳遞給score
。None
:不要求中繼資料,如果使用者提供,則元估計器會引發錯誤。str
:中繼資料應使用此給定的別名而非原始名稱傳遞給元估計器。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留現有的請求。這允許您變更某些參數的請求,而不是其他參數。新增於 1.3 版本。
注意
只有當此估計器被用作元估計器的子估計器時,此方法才相關,例如在
Pipeline
中使用。否則,它沒有任何效果。- 參數:
- sample_weightstr、True、False 或 None,預設值=sklearn.utils.metadata_routing.UNCHANGED
score
中sample_weight
參數的中繼資料路由。
- 返回:
- self物件
更新後的物件。