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 估算器实例 |