SVR#
- class sklearn.svm.SVR(*, kernel='rbf', degree=3, gamma='scale', coef0=0.0, tol=0.001, C=1.0, epsilon=0.1, shrinking=True, cache_size=200, verbose=False, max_iter=-1)[原始碼]#
Epsilon-支持向量迴歸。
模型中的自由參數為 C 和 epsilon。
此實作基於 libsvm。擬合時間複雜度與樣本數的平方成正比,因此難以擴展到超過幾萬個樣本的數據集。對於大型數據集,請考慮改用
LinearSVR
或SGDRegressor
,可能在Nystroem
轉換器或其他核函數近似之後。請參閱使用者指南以了解更多資訊。
- 參數:
- kernel{‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’} 或可呼叫物件,預設值為 ‘rbf’
指定演算法中使用的核函數類型。如果未指定,則使用 ‘rbf’。如果給定可呼叫物件,則用於預先計算核矩陣。如需不同核函數類型的直觀視覺化,請參閱使用線性和非線性核函數的支援向量迴歸 (SVR)
- degreeint,預設值為 3
多項式核函數 (‘poly’) 的次數。必須是非負數。所有其他核函數都會忽略此參數。
- gamma{‘scale’, ‘auto’} 或 float,預設值為 ‘scale’
‘rbf’、‘poly’ 和 ‘sigmoid’ 的核係數。
如果傳遞
gamma='scale'
(預設),則會使用 1 / (n_features * X.var()) 作為 gamma 的值,如果為 ‘auto’,則使用 1 / n_features
如果為 float,則必須是非負數。
在版本 0.22 中變更:
gamma
的預設值已從 ‘auto’ 變更為 ‘scale’。- coef0float,預設值為 0.0
核函數中的獨立項。它僅在 ‘poly’ 和 ‘sigmoid’ 中有意義。
- tolfloat,預設值為 1e-3
停止條件的容差。
- Cfloat,預設值為 1.0
正規化參數。正規化的強度與 C 成反比。必須嚴格為正值。懲罰是平方 l2。如需直觀地了解縮放正規化參數 C 的影響,請參閱縮放 SVC 的正規化參數。
- epsilonfloat,預設值為 0.1
epsilon-SVR 模型中的 epsilon。它指定 epsilon 管,在訓練損失函數中,預測值與實際值的距離在 epsilon 範圍內的點不產生任何懲罰。必須是非負數。
- shrinkingbool,預設值為 True
是否使用縮減啟發式方法。請參閱使用者指南。
- cache_sizefloat,預設值為 200
指定核快取的大小(以 MB 為單位)。
- verbosebool,預設值為 False
啟用詳細輸出。請注意,此設定會利用 libsvm 中每個程序的執行階段設定,如果啟用,可能無法在多執行緒環境中正常運作。
- max_iterint,預設值為 -1
求解器中迭代的硬性限制,如果沒有限制,則為 -1。
- 屬性:
coef_
形狀為 (1, n_features) 的 ndarray當
kernel="linear"
時,指派給特徵的權重。- dual_coef_形狀為 (1, n_SV) 的 ndarray
決策函數中支援向量的係數。
- fit_status_int
如果正確擬合,則為 0,否則為 1(會引發警告)
- intercept_形狀為 (1,) 的 ndarray
決策函數中的常數。
- n_features_in_int
在 fit 期間看到的特徵數量。
在版本 0.24 中新增。
- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在 fit 期間看到的特徵名稱。僅當
X
的特徵名稱都是字串時才定義。在版本 1.0 中新增。
- n_iter_int
為了擬合模型,最佳化常式執行的迭代次數。
在版本 1.1 中新增。
n_support_
形狀為 (1,),dtype=int32 的 ndarray每個類別的支援向量數。
- shape_fit_形狀為 (n_dimensions_of_X,) 的整數元組
訓練向量
X
的陣列維度。- support_形狀為 (n_SV,) 的 ndarray
支援向量的索引。
- support_vectors_形狀為 (n_SV, n_features) 的 ndarray
支援向量。
另請參閱
Nu 支持向量迴歸器
使用 libsvm 實作的迴歸支援向量機,使用參數來控制支援向量的數量。
線性支持向量迴歸器
使用 liblinear 實作的可擴充線性迴歸支援向量機。
參考文獻
範例
>>> from sklearn.svm import SVR >>> from sklearn.pipeline import make_pipeline >>> from sklearn.preprocessing import StandardScaler >>> import numpy as np >>> n_samples, n_features = 10, 5 >>> rng = np.random.RandomState(0) >>> y = rng.randn(n_samples) >>> X = rng.randn(n_samples, n_features) >>> regr = make_pipeline(StandardScaler(), SVR(C=1.0, epsilon=0.2)) >>> regr.fit(X, y) Pipeline(steps=[('standardscaler', StandardScaler()), ('svr', SVR(epsilon=0.2))])
- property coef_#
當
kernel="linear"
時,指派給特徵的權重。- 傳回值:
- 形狀為 (n_features, n_classes) 的 ndarray
- fit(X, y, sample_weight=None)[原始碼]#
根據給定的訓練資料擬合 SVM 模型。
- 參數:
- X形狀為 (n_samples, n_features) 或 (n_samples, n_samples) 的類陣列、稀疏矩陣
訓練向量,其中
n_samples
是樣本數,n_features
是特徵數。對於 kernel=”precomputed”,X 的預期形狀為 (n_samples, n_samples)。- y形狀為 (n_samples,) 的類陣列
目標值(分類中的類別標籤,迴歸中的實數)。
- sample_weight形狀為 (n_samples,) 的類陣列,預設值為 None
每個樣本的權重。重新縮放每個樣本的 C。較高的權重會強制分類器將更多重點放在這些點上。
- 傳回值:
- self物件
已擬合的估計器。
註解
如果 X 和 y 不是 C 順序且連續的 np.float64 陣列,而且 X 不是 scipy.sparse.csr_matrix,則可能會複製 X 和/或 y。
如果 X 是密集陣列,則其他方法將不支援稀疏矩陣作為輸入。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請檢查使用者指南,了解路由機制的運作方式。
- 傳回值:
- routingMetadataRequest
封裝路由資訊的
MetadataRequest
。
- get_params(deep=True)[原始碼]#
取得此估計器的參數。
- 參數:
- deepbool,預設值=True
若為 True,將回傳此估計器及其包含的子物件(也是估計器)的參數。
- 傳回值:
- paramsdict
參數名稱對應到其值的字典。
- property n_support_#
每個類別的支援向量數。
- predict(X)[原始碼]#
對 X 中的樣本執行迴歸。
對於單類別模型,會回傳 +1 (內部值) 或 -1 (外部值)。
- 參數:
- X形狀為 (n_samples, n_features) 的類陣列 (array-like) 或稀疏矩陣 (sparse matrix)
對於 kernel=”precomputed”,X 的預期形狀為 (n_samples_test, n_samples_train)。
- 傳回值:
- y_pred形狀為 (n_samples,) 的 ndarray
預測的值。
- 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
的期望值、忽略輸入特徵的常數模型,會得到 0.0 的 \(R^2\) 分數。- 參數:
- 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
相對於
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$') SVR [原始碼]#
請求傳遞給
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$') SVR [原始碼]#
請求傳遞至
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物件
已更新的物件。