sklearn.svm.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=True, verbose=0, random_state=None, max_iter=1000)
線性支持向量回歸。
類似于帶有參數kernel ='linear'的SVR,但它是根據liblinear而不是libsvm來實現的,因此它在選擇懲罰函數和損失函數時具有更大的靈活性,能夠更好的適應大量的樣本。
這個類同時支持連續數據和離散數據。
在用戶指南中閱讀更多內容。
版本0.16中的新功能。
參數 | 說明 |
---|---|
epsilon | 浮點數, 默認= 0.0 Epsilon參數作用于對ε不敏感的損失函數中。注意,該參數的值取決于目標變量y的尺度,如果不確定,請設置 epsilon=0 。 |
tol | 浮點數,默認= 1e-4 殘差收斂條件。 |
C | 浮點數,默認= 1.0 正則化參數。正則化的強度與C成反比。必須嚴格為正。 |
loss | {'epsilon_insensitive','squared_epsilon_insensitive'},默認='epsilon_insensitive' 指定損失函數。對ε不敏感的損失函數(標準SVR)為L1損失,而對ε不敏感的平方損失函數(“ squared_epsilon_insensitive”)為L2損失。 |
fit_intercept | 布爾值,默認=True 是否計算該模型的截距項。如果設置為false,則在計算中將不使用截距項(也就是說數據應已居中)。 |
intercept_scaling | 浮點數,默認=1 當self.fit_intercept為True時,實例向量x變為[x,self.intercept_scaling],即在實例向量上附加一個定值為intercept_scaling的“合成”特征。請注意,截距項將變為intercept_scaling*綜合特征權重 與所有其他特征一樣,合成特征權重也要經過l1 / l2正則化。為了減輕正則化對合成特征權重(同時也對對截距項)的影響,必須增加intercept_scaling。 |
dual | 布爾值,默認= True 選擇使用什么算法來解決對偶或原始優化問題。當n_samples> n_features時,首選dual = False。 |
verbose | 整數型,默認值= 0 是否啟用詳細輸出。請注意,此參數針對liblinear中運行每個進程時設置,如果啟用,則可能無法在多線程上下文中正常工作。 |
random_state | 整數型或RandomState的實例,默認=None 控制用于數據抽取時的偽隨機數生成。在多個函數調用之間傳遞可重復輸出的整數值。請參閱詞匯表。 |
max_iter | 整數值,默認= 1000 要運行的最大迭代次數。 |
屬性 | 說明 |
---|---|
coef_ | 當n_classes == 2時是形狀為(n_features)的數組,否則是形狀為(n_classes,n_features)的數組 分配給特征的權重(原始問題的系數),僅在線性內核的情況下可用。 coef_ 是一個繼承自raw_coef_ 的只讀屬性,它遵循liblinear的內部存儲器布局。 |
intercept_ | 當n_classes == 2時為(1)的數組,否則為(n_classes)的數組 決策函數中的常量。 |
n_iter_ | 整數型 所有類的最大迭代次數。 |
另見:
使用與該類相同的庫實現支持向量機分類器(liblinear)。
使用libsvm實現支持向量機回歸:內核可以是非線性的,但是它的SMO算法不能像LinearSVC那樣擴展到大量樣本。
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]) |
根據給定的訓練數據擬合模型 |
get_params ([deep]) |
獲取當前估計量的參數 |
predict (X) |
使用線性模型進行預測 |
score (X,y [,sample_weight]) |
返回預測的決定系數R ^ 2 |
set_params (**params) |
設置當前估計量的參數。 |
__init__(*, epsilon=0.0, tol=0.0001, C=1.0, loss='epsilon_insensitive', fit_intercept=True, intercept_scaling=1.0, dual=True, verbose=0, random_state=None, max_iter=1000
初始化self。請參閱help(type(self)獲取準確的說明。
fit(X, y, sample_weight=None)
根據給定的訓練數據擬合模型。
參數: | 說明 |
---|---|
X | 形如(n_samples, n_features)的數組或者稀疏矩陣 訓練向量,其中樣本數量中的n_samples和n_features為feature的數量 |
y | 形如 (n_samples,)的數組 相對于X的目標向量 |
sample_weight | 形如(n_samples,)的數組, 默認=None 分配給單個樣本的權重數組。如果沒有提供,則每個樣品都給予單位權重。 新版本0.18 |
返回值 | 說明 |
---|---|
self | object 估計器的一個實例。 |
get_params(deep=True)
獲取當前估計量的參數
參數 | 說明 |
---|---|
deep | bool, default = True 如果為真,則將返回此估計器和其所包含子對象的參數 |
返回值 | 說明 |
---|---|
params | mapping of string to any 參數名被映射至他們的值 |
predict(X)
[源碼]
使用線性模型進行預測。
參數 | 說明 |
---|---|
X | 形如(n_samples, n_features)的數組或者稀疏矩陣 樣本 |
返回值 | 說明 |
---|---|
C | 形如(n_samples,)的數組 返回預測的值 |
score(X, y, sample_weight=None)
[源碼]
返回預測的決定系數R^2。
定義決定系數R^2為(1 - 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_fitting)的數組,其中n_samples_fitting是用于擬合估計器的樣本數量。 |
y | 形如(n_samples,) 或者 (n_samples, n_outputs)的數組 X中結果為真的標簽 |
sample_weight | 形如(n_samples,)的數組,默認=None 樣本的權重 |
返回值 | 說明 |
---|---|
score | 浮點數 self.predict(X) wrt. y的R^2 |
注:
調用回歸變量上的score時,使用的R2 score(0.23版本)中的multioutput='uniform_average'來保持與r2_score的默認值一致。這影響了所有多輸出回歸的score
方法(除了 MultiOutputRegressor
)。
set_params(**params)
該方法適用于簡單估計器和嵌套對象(如管道)。后者具有形式為 <component>__<parameter>
的參數,這樣就可以更新嵌套對象的每個組件。
參數 | 說明 |
---|---|
params | 字典 估算器參數 |
返回值 | 說明 |
---|---|
self | object 估算器實例 |