当前位置: 首页 > news >正文

找到【SVM】中最优的惩罚项系数C

        因为本来SVM是想找到间隔最大的分割面,所以C越大,SVC会选择边际更小的,能够更好的分类所有训练点的决策边界,不过模型的训练时间也会越长。如果C的设定值较小,那SVC会尽量最大化边界,决策功能会更简单,但代价是训练的准确度。

我们先来调线性核函数:

#调线性核函数
score = []
C_range = np.linspace(0.01,30,50)
for i in C_range:clf = SVC(kernel="linear",C=i,cache_size=5000).fit(Xtrain,Ytrain)score.append(clf.score(Xtest,Ytest))
print(max(score), C_range[score.index(max(score))])
plt.plot(C_range,score)
plt.show()

输出结果为:0.9766081871345029 1.2340816326530613

可以看到准确率最高是97%以上。接下来我们来看看在rbf上的结果:

score = []
C_range = np.linspace(0.01,30,50)
for i in C_range:clf = SVC(kernel="rbf",C=i,gamma = 0.012742749857031322,cache_size=5000).fit(Xtrain,Ytrain)score.append(clf.score(Xtest,Ytest))print(max(score), C_range[score.index(max(score))])
plt.plot(C_range,score)
plt.show()

输出结果为:0.9824561403508771 6.130408163265306

既然最高的得分所对应的C值是6,那么我们可以在5-7之间进一步细化,看能否找到一个更好的局部最优:

#进一步细化
score = []
C_range = np.linspace(5,7,50)
for i in C_range:clf = SVC(kernel="rbf",C=i,gamma = 
0.012742749857031322,cache_size=5000).fit(Xtrain,Ytrain)score.append(clf.score(Xtest,Ytest))print(max(score), C_range[score.index(max(score))])
plt.plot(C_range,score)
plt.show()

输出结果为:0.9824561403508771 5.938775510204081

可以看到,98.2456%就是我们最好的得分。

相关文章:

  • Python中CAN通讯学习
  • Appium 移动端自动化测试,触摸(TouchAction) 与多点触控(MultiAction)
  • QT学习之QT概述
  • -Xms8g -Xmx8g -Xmn3g 生产事故-记一次特殊的OOM排查
  • 深入理解 Django 模板系统
  • asp.net生产线远程故障诊断系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
  • Hadoop知识点全面总结
  • 3.4、Linux小程序:进度条
  • px、rpx、em以及rem的区别与用法
  • linux的美化工具 oh-my-zsh的安装与使用 神器工具
  • 使用 Java Timer 实现任务调度
  • 3D 线激光相机的激光条纹中心提取方法
  • 你一般什么时候使用GPT
  • 如何在CPU上进行高效大语言模型推理
  • fpga时序相关概念与理解
  • 【译】JS基础算法脚本:字符串结尾
  • [译]前端离线指南(上)
  • 【刷算法】从上往下打印二叉树
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • docker python 配置
  • exif信息对照
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • js中的正则表达式入门
  • leetcode98. Validate Binary Search Tree
  • 测试如何在敏捷团队中工作?
  • 程序员最讨厌的9句话,你可有补充?
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 提醒我喝水chrome插件开发指南
  • 一个项目push到多个远程Git仓库
  • 异步
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​secrets --- 生成管理密码的安全随机数​
  • ​批处理文件中的errorlevel用法
  • #NOIP 2014# day.1 T2 联合权值
  • #微信小程序:微信小程序常见的配置传值
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (04)odoo视图操作
  • (145)光线追踪距离场柔和阴影
  • (floyd+补集) poj 3275
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .NET Reactor简单使用教程
  • .net 无限分类
  • .NET 中创建支持集合初始化器的类型
  • .NET 中的轻量级线程安全
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理