【机器学习】使用scikitLearn进行SVM支持向量机进行回归

36 篇文章 5 订阅
27 篇文章 3 订阅
本文介绍了如何使用scikit-learn库实现SVM支持向量机进行线性和非线性回归。通过调整epsilon参数,可以控制模型的宽容度,影响虚线范围和模型的泛化能力。在非线性数据集上,通过核技巧如多项式核函数,可以解决复杂回归问题。示例代码展示了不同参数设置对回归效果的影响,并强调了C参数对模型惩罚力度和泛化能力的决定作用。
摘要由CSDN通过智能技术生成

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

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

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

关于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)

在固定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(

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颢师傅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值