【问题标题】:Finding regression equation from support vector regression从支持向量回归中找到回归方程
【发布时间】:2019-11-25 11:49:42
【问题描述】:

我目前正在使用 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 找到的值自己创建方程?

谢谢!

【问题讨论】:

    标签: python scikit-learn regression svm


    【解决方案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]])
    

    【讨论】:

    • 感谢您的回答!有没有办法对多项式内核执行此操作?
    • 如果内核不是线性的,那么python就不会输出coef_,问题就复杂了。您可能需要同时使用内核函数和 Duel_coef 来获得超平面的正确函数。更多数学解法,可以查看link
    猜你喜欢
    • 2020-01-18
    • 2019-06-07
    • 2019-05-11
    • 1970-01-01
    • 2013-08-21
    • 2019-02-01
    • 2014-07-03
    • 1970-01-01
    • 2018-12-23
    相关资源
    最近更新 更多