当前位置:   article > 正文

【机器学习】使用scikitLearn进行SVM支持向量机进行回归_sklearnsvm回归参数设置

sklearnsvm回归参数设置

SVM支持向量机进行分类与回归操作:
【机器学习】使用scikitLearn进行SVM支持向量机进行回归
如果将分类用SVM算法的优化目标反转,使尽可能多的数据集实例出现在虚线中部,同时减少虚线外出现实例的数量。

对于线性回归,有参数epsilon:

from sklearn.svm import LinearSVR
svm_reg = LinearSVR(epsilon=1.5, random_state=42)
svm_reg.fit(X, y)
  • 1
  • 2
  • 3

关于epsilon参数:越大虚线范围越宽。如果不确定,使用默认值0.epsilon越大,模型泛化能力越好,其值与预测值的大小相关。
在这里插入图片描述
该模型为epsilon不敏感,在固定epsilon的情况下,在虚线内添加更多实例,不改变回归结果。

对于非线性数据集,可以采用核技巧进行回归:

from sklearn.svm import SVR
svm_poly_reg = SVR(kernel="poly", degree=2, C=100, epsilon=0.1, gamma="scale")
svm_poly_reg.fit(X, y)
  • 1
  • 2
  • 3

在固定epsilon的情况下,C值越大,对错分情况非惩罚越大,泛化性越差。
使用下列代码绘制下图:

fig, axes = plt.subplots(ncols=2, figsize=(9, 4), sharey=True)
plt.sca(axes[0])
plot_svm_regression(svm_poly_reg1, X, y, [-1, 1, 0, 1])
plt.title(r"$degree={}, C={}, \epsilon = {}$".format(svm_poly_reg1.degree, svm_poly_reg1.C, svm_poly_reg1.epsilon), fontsize=18)
plt.ylabel(r"$y$", fontsize=18, rotation=0)
plt.sca(axes[1])
plot_svm_regression(svm_poly_reg2, X, y, [-1, 1, 0, 1])
plt.title(r"$degree={}, C={}, \epsilon = {}$".format(svm_poly_reg2.degree, svm_poly_reg2.C, svm_poly_reg2.epsilon), fontsize=18)
save_fig("svm_with_polynomial_kernel_plot")
plt.show(
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/135578
推荐阅读
相关标签
  

闽ICP备14008679号