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 實作,因此在懲罰和損失函數的選擇上更具彈性,並且應該能更好地擴展到大量的樣本。

LinearSVRSVR 之間的主要差異在於預設使用的損失函數,以及這兩個實作之間截距正規化的處理方式。

此類別支援密集和稀疏輸入。

請在使用者指南中閱讀更多資訊。

在 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_samplesn_featuresloss 的值自動選擇參數的值。如果 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

fitsample_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

scoresample_weight 參數的中繼資料路由。

返回:
self物件

更新後的物件。