从支持向量回归中找到回归方程

时间:2019-07-16 17:12:27

标签: python scikit-learn regression svm

我目前正在使用Python的scikit-learn创建支持向量回归模型,而我想知道如何根据预测变量找到目标变量的显式回归方程。它不必简单或漂亮,但是Python是否有一种方法必须输出(特别是对于多项式内核)?我对使用SVR相当陌生,并且我不确定在回归拟合后,如何期望回归方程看起来像来自测试观察的预测。

我已经安装了一个SVR模型,该模型可以预测我满意的性能,并且我已经使用GridSearchCV调整了超参数。但是,对于独立优化,我需要根据预测变量显示目标变量的显式形式,并且不知道如何找到该方程式。

from sklearn.svm import SVR
svr = SVR(kernel = 'poly', C = best_params['C'], epsilon = best_params['epsilon'], gamma = best_params['gamma'], coef0 = 0.1, shrinking = True, tol = 0.001, cache_size = 200, verbose = False, max_iter = -1)
svr.fit(x,y)

其中x是我的观测矩阵,y是我的观测目标值向量,而best_params是GridSearchCV找到的输出(最优超参数)。

Python是否有任何方法可以输出用于从一组预测变量预测未来目标值的SVR模型的结果方程式?还是如果我将内核指定为多项式类型,是否有直接使用SVR发现的值来自己创建方程式的简单方法?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果使用线性核,则可以输出系数。

例如

from sklearn.svm import SVR
import numpy as np
n_samples, n_features = 1000, 5
rng = np.random.RandomState(0)
coef = [1,2,3,4,5]
X = rng.randn(n_samples, n_features)
y = coef * X
y = y.sum(axis = 1) + rng.randn(n_samples)
clf = SVR(kernel = 'linear', gamma='scale', C=1.0, epsilon=0.2)
clf.fit(X, y) 
clf.coef_
array([[0.97626634, 2.00013793, 2.96205576, 4.00651352, 4.95923782]])