支持向量回归预测怎么做_机器学习100天-Day1603SVM回归
说明:本文依据《Sklearn 与 TensorFlow 机器学习实用指南》完成,所有版权和解释权均归作者和翻译成员所有,我只是搬运和做注解。
第五章是对支持向量机SVM的系统介绍,阐述支持向量机的核心概念,怎么使用这个强大的模型,以及它是如何工作的。
这应该是第三次做这方面的内容了,贴出另一个比较全面的SVM进阶博客。
https://blog.csdn.net/v_JULY_v/article/details/7624837
支持向量机(SVM)是个非常强大并且有多种功能的机器学习模型,能够做线性或者非线性的分类,回归,甚至异常值检测。机器学习领域中最为流行的模型之一,是任何学习机器学习的人必备的工具。SVM特别适合应用于复杂但中小规模数据集的分类问题。
本章使用数据为Sklearn中iris数据
源代码已经同步在github中
https://github.com/jwc19890114/-02-learning-file-100days
3. SVM回归
SVM 算法应用广泛:不仅仅支持线性和非线性的分类任务,还支持线性和非线性的回归任务。
读到这里突然忘记回归任务和分类任务的区别了……
- 回归问题的应用场景(预测的结果是连续的,例如预测明天的温度25度)。回归问题通常是用来预测一个值。另外,回归分析用在神经网络上,其最上层是不需要加上softmax函数的,而是直接对前一层累加即可。回归是对真实值的一种逼近预测。
- 分类问题的应用场景(预测的结果是离散的,例如预测明天天气类型-阴,晴,雨)。分类问题是用于将事物打上一个标签,通常结果为离散值。
OK,我们继续。
SVM算法应用于回归任务,技巧在于“逆转目标”,不是试图找到两类之间的最大margin,而是在限制间隔违规情况下,尽量放置更多的样本在间隔上。间隔宽度由超参数C控制。下面使用SVR来实现SVM回归。(这就是为什么Sklearn里面svm有一个SVC和SVR,SVC是分类,SVR是回归)
import numpy as npfrom sklearn.svm import LinearSVRimport matplotlib.pyplot as pltnp.random.seed(42)m=50X=2*np.random.rand(m,1)y=(4+3*X+np.random.randn(m,1)).ravel()#初始化线性支持向量机回归svm_reg=LinearSVR(epsilon=1.5, random_state=42)svm_reg.fit(X,y)
作为对比,生成了两个SVM回归模型,其中一个epsilon=1.5,另一个0.5
svm_reg1 = LinearSVR(epsilon=1.5, random_state=42)svm_reg2 = LinearSVR(epsilon=0.5, random_state=42)svm_reg1.fit(X, y)svm_reg2.fit(X, y)def find_support_vectors(svm_reg,X,y): y_pred=svm_reg.predict(X) off_margin=(np.abs(y-y_pred)>=svm_reg.epsilon) return np.argwhere(off_margin)svm_reg1.support_=find_support_vectors(svm_reg1,X,y)svm_reg2.support_=find_support_vectors(svm_reg2,X,y)eps_x1=1eps_y_pred=svm_reg1.predict([[eps_x1]])def plot_svm_regression(svm_reg, X, y, axes): x1s = np.linspace(axes[0], axes[1], 100).reshape(100, 1) y_pred = svm_reg.predict(x1s) plt.plot(x1s, y_pred, "k-
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)