头歌实践平台:机器学习——支持向量回归

第1关:线性可分支持向量机
第2关:线性支持向量机
第3关:非线性支持向量机
第4关:序列最小优化算法
第5关:支持向量回归


关卡

  • 头歌实践平台:机器学习——支持向量回归
  • 第1关
  • 第2关
  • 第3关
  • 第4关
  • 第5关

提示:以下答案可供参考

第1关

1. B、黑线
2. B、0.4
3. C、3x+2y=0
4. B、样本y到超平面的距离为3
5. D、-x+y+1=0
6. AC

第2关

线性支持向量机:

#encoding=utf8
from sklearn.svm import LinearSVCdef linearsvc_predict(train_data,train_label,test_data):'''input:train_data(ndarray):训练数据train_label(ndarray):训练标签output:predict(ndarray):测试集预测标签'''#********* Begin *********# clf = LinearSVC(dual=False)clf.fit(train_data,train_label)predict = clf.predict(test_data)#********* End *********# return predict

第3关

非线性支持向量机:

#encoding=utf8
from sklearn.svm import SVCdef svc_predict(train_data,train_label,test_data,kernel):'''input:train_data(ndarray):训练数据train_label(ndarray):训练标签kernel(str):使用核函数类型:'linear':线性核函数'poly':多项式核函数'rbf':径像核函数/高斯核output:predict(ndarray):测试集预测标签'''#********* Begin *********# clf =SVC(kernel=kernel)clf.fit(train_data,train_label)predict = clf.predict(test_data)#********* End *********# return predict

第4关

序列最小优化算法:

#encoding=utf8
import numpy as np
class smo:def __init__(self, max_iter=100, kernel='linear'):'''input:max_iter(int):最大训练轮数kernel(str):核函数,等于'linear'表示线性,等于'poly'表示多项式'''self.max_iter = max_iterself._kernel = kernel#初始化模型def init_args(self, features, labels):self.m, self.n = features.shapeself.X = featuresself.Y = labelsself.b = 0.0# 将Ei保存在一个列表里self.alpha = np.ones(self.m)self.E = [self._E(i) for i in range(self.m)]# 错误惩罚参数self.C = 1.0#********* Begin *********#    #kkt条件    def _KKT(self, i):y_g = self._g(i)*self.Y[i]if self.alpha[i] == 0:return y_g >= 1elif 0 < self.alpha[i] < self.C:return y_g == 1else:return y_g <= 1# g(x)预测值,输入xi(X[i])def _g(self, i):r = self.bfor j in range(self.m):r += self.alpha[j]*self.Y[j]*self.kernel(self.X[i], self.X[j])return r# 核函数,多项式添加二次项即可def kernel(self, x1, x2):if self._kernel == 'linear':return sum([x1[k]*x2[k] for k in range(self.n)])elif self._kernel == 'poly':return (sum([x1[k]*x2[k] for k in range(self.n)]) + 1)**2    return 0# E(x)为g(x)对输入x的预测值和y的差def _E(self, i):return self._g(i) - self.Y[i]#初始alphadef _init_alpha(self):# 外层循环首先遍历所有满足0<a<C的样本点,检验是否满足KKTindex_list = [i for i in range(self.m) if 0 < self.alpha[i] < self.C]# 否则遍历整个训练集non_satisfy_list = [i for i in range(self.m) if i not in index_list]index_list.extend(non_satisfy_list)for i in index_list:if self._KKT(i):continueE1 = self.E[i]# 如果E2是+,选择最小的;如果E2是负的,选择最大的if E1 >= 0:j = min(range(self.m), key=lambda x: self.E[x])else:j = max(range(self.m), key=lambda x: self.E[x])return i, j#选择alpha参数   def _compare(self, _alpha, L, H):if _alpha > H:return Helif _alpha < L:return Lelse:return _alpha#训练def fit(self, features, labels):'''input:features(ndarray):特征label(ndarray):标签'''self.init_args(features, labels)for t in range(self.max_iter):i1, i2 = self._init_alpha()# 边界if self.Y[i1] == self.Y[i2]:L = max(0, self.alpha[i1]+self.alpha[i2]-self.C)H = min(self.C, self.alpha[i1]+self.alpha[i2])else:L = max(0, self.alpha[i2]-self.alpha[i1])H = min(self.C, self.C+self.alpha[i2]-self.alpha[i1])E1 = self.E[i1]E2 = self.E[i2]# eta=K11+K22-2K12eta = self.kernel(self.X[i1], self.X[i1]) + self.kernel(self.X[i2], self.X[i2]) - 2*self.kernel(self.X[i1], self.X[i2])if eta <= 0:continuealpha2_new_unc = self.alpha[i2] + self.Y[i2] * (E2 - E1) / etaalpha2_new = self._compare(alpha2_new_unc, L, H)alpha1_new = self.alpha[i1] + self.Y[i1] * self.Y[i2] * (self.alpha[i2] - alpha2_new)b1_new = -E1 - self.Y[i1] * self.kernel(self.X[i1], self.X[i1]) * (alpha1_new-self.alpha[i1]) - self.Y[i2] * self.kernel(self.X[i2], self.X[i1]) * (alpha2_new-self.alpha[i2])+ self.b b2_new = -E2 - self.Y[i1] * self.kernel(self.X[i1], self.X[i2]) * (alpha1_new-self.alpha[i1]) - self.Y[i2] * self.kernel(self.X[i2], self.X[i2]) * (alpha2_new-self.alpha[i2])+ self.b if 0 < alpha1_new < self.C:b_new = b1_newelif 0 < alpha2_new < self.C:b_new = b2_newelse:# 选择中点b_new = (b1_new + b2_new) / 2# 更新参数self.alpha[i1] = alpha1_newself.alpha[i2] = alpha2_newself.b = b_newself.E[i1] = self._E(i1)self.E[i2] = self._E(i2)       def predict(self, data):'''input:data(ndarray):单个样本output:预测为正样本返回+1,负样本返回-1'''r = self.bfor i in range(self.m):r += self.alpha[i] * self.Y[i] * self.kernel(data, self.X[i])return 1 if r > 0 else -1#********* End *********#

第5关

支持向量回归:

#encoding=utf8
from sklearn.svm import SVRdef svr_predict(train_data,train_label,test_data):'''input:train_data(ndarray):训练数据train_label(ndarray):训练标签output:predict(ndarray):测试集预测标签'''#********* Begin *********#svr = SVR(kernel='rbf',C=100,gamma= 0.001,epsilon=0.1)svr.fit(train_data,train_label)predict = svr.predict(test_data)#********* End *********#return predict

头歌实践平台:机器学习——支持向量回归相关推荐

  1. 机器学习——支持向量回归(SVR)

    机器学习--支持向量回归(SVR) educoder平台练习题 如果博客中图片加载失败可点击链接跳转至实训详情 https://www.educoder.net/shixuns/b6yi97f2/ch ...

  2. 头歌实践平台(python数据结构)(1-6)

    第1关:栈抽象数据类型及其实现 任务描述 相关知识 栈抽象数据类型 List 的操作方法 编程要求 测试说明 任务描述 本关任务:编写代码实现栈的基本操作. 相关知识 为了完成本关任务,你需要掌握: ...

  3. 四、分支结构(头歌实践平台)

    第1关:Java分支结构之 if-else 任务描述 本小节需要你完成一个判断学员成绩等级的小程序,效果如下: 相关知识 生活中,我们经常需要先做判断,然后才决定是否要做某件事情.例如,如果考试成绩大 ...

  4. 头歌实践平台——一维数组与二维数组练习

    第1关:排序问题 任务描述 本关任务:将十个数进行从大到小的顺序进行排列 样例输入: 1 2 3 4 5 6 7 8 9 10 样例输出: 10 9 8 7 6 5 4 3 2 1 法一 调用函数 # ...

  5. 头歌实践平台:招聘大数据——数据分析

    第1关:数据分析--行业/公司人才稀缺数据分析 import org.apache.spark.sql.{SaveMode, SparkSession}object zhaopin_fenxi1 {d ...

  6. 头歌实践教学平台-Linux网络实战(一)-DNS配置(Ubuntu系统)——保姆级教程

    头歌实践教学平台-Linux网络实战(一)-DNS配置(Ubuntu系统) ***写在前面*** 知识补充 相关知识 实验环境准备 安装DNS服务器并开启服务 一.标题配置域名和IP的正解与反解zon ...

  7. 头歌实践教学平台 MIPS CPU设计(HUST)

    实验简介 本实训项目将帮助学生掌握 CPU 控制器设计的基本原理,能利用硬布线控制器的设计原理在 Logisim 平台中设计实现支持五条指令的 MIPS 单周期 CPU,该处理器能运行简单的内存冒泡排 ...

  8. 【机器学习系列】之支持向量回归SVR

    作者:張張張張 github地址:https://github.com/zhanghekai [转载请注明出处,谢谢!] [机器学习系列]之SVM硬间隔和软间隔 [机器学习系列]之SVM核函数和SMO ...

  9. 头歌实践教学平台上如何建项目且通过git上传

    头歌实践教学平台上如何建项目且通过git上传 目标:在头歌上建立项目test,并通过git工具将文件上传至头歌中. (1) 首先在https://code.educoder.net/explore页面 ...

  10. 【机器学习】支持向量回归

    有任何的书写错误.排版错误.概念错误等,希望大家包含指正. 在阅读本篇之前建议先学习: [机器学习]支持向量机[上]硬间隔 [机器学习]支持向量机[下]软间隔与核函数 支持向量回归 支持向量回归(su ...

最新文章

  1. 【视频】V4L2之应用流程
  2. 12小时进制的时间输出的编辑代码
  3. android内存碎片化怎么处理,安卓越用越卡毛病有解了!ColorOS内存反碎片化引擎让手机久用不卡...
  4. EasyX实现推箱子游戏
  5. Docker部署微服务详解
  6. 实战:使用IPSec保护服务器安全
  7. 数学天桥之中值定理|北京有文化的天桥
  8. 负载均衡集群HAProxy讲解篇
  9. Geatpy自定义初始种群
  10. Macaca自动化测试Android和IOS应用
  11. html调用摄像头ios,html5调用摄像头
  12. getch方法_getch()函数
  13. 【Python量化】蒙特卡洛模拟法预测股价走势
  14. galgame安卓_史上最强教程!教你如何在安卓和ios上运行GALgame!
  15. Cisco命令合集-1
  16. 加拿大IC VOC和无线产品IC ID认证
  17. C#专用集合类StringCollection与StringDictionary
  18. ec20 以太网_整车通讯系统——车载以太网系统系列文章(第一篇)
  19. TypeScript 初学者指南
  20. math库是python语言的数学模块对不对_12.下列属于math库中的数学函数的是( )。

热门文章

  1. 为什么要学习鸿蒙,HarmonyOS不只是操作系统
  2. android分享截屏到微信,Android截屏分享功能
  3. 通俗易懂的Matlab线性规划求解详解
  4. Matlab Four-Wheel Drive Testbed
  5. 人工神经网络算法有哪些,人工神经网络算法优点
  6. 学生宿舍管理系统需求分析
  7. 微信小程序 图片上传预览删除
  8. Android如何制作本地音乐播放器,简单实现Android本地音乐播放器
  9. Biopython -- Parsing BLAST output
  10. linux查看rss内存,linux rss 内存