五、核支持向量机算法(NuSVC,Nu-Support Vector Classification)(有监督学习)

和支持向量分类(Nu-Support Vector Classification),与 SVC 类似,但使用一个参数来控制支持向量的数量,其实现基于libsvm

一、算法思路

本质都是SVM中的一种优化,原理都类似,详细算法思路可以参考博文:三、支持向量机算法(SVC,Support Vector Classification)(有监督学习)

二、官网API

官网API

class sklearn.svm.NuSVC(*, nu=0.5, kernel='rbf', degree=3, gamma='scale', coef0=0.0, shrinking=True, probability=False, tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape='ovr', break_ties=False, random_state=None)

导包:from sklearn.svm import NuSVC

①边际误差分数nu

边际误差分数的上限和支持向量分数的下限,用来控制支持向量的数目和边际误差;nu范围应为(0,1],默认值为0.5

具体官网详情如下:
在这里插入图片描述

使用方法

NuSVC(nu=0.5)

②核函数kernel

linear’:线性核函数,速度快;只能处理数据集样本线性可分,不能处理线性不可分。
poly’:多项式核函数,可将数据集样本升维,从低维空间映射到高维空间;参数较多,计算量大
rbf’:高斯核函数,和多项式核函数一样,可将样本升维;相较于多项式核函数来说,参数较少;默认值
'sigmoid’:sigmoid 核函数;当选用 sigmoid 核函数时,SVM 可实现的是多层神经网络
precomputed’:核矩阵;使用用户给定的核函数矩阵(n*n)
也可以自定义自己的核函数,然后进行调用即可

具体官网详情如下:
在这里插入图片描述

使用方法

NuSVC(kernel='sigmoid')

③多项式核函数的阶数degree

多项式核函数的阶数;该参数只对多项式核函数(poly)有用;若是其他的核函数,系统会自动忽略该参数

具体官网详情如下:
在这里插入图片描述

使用方式

NuSVC(kernel='poly',degree=2)

④核系数gamma

rbf、poly 和 sigmoid核函数的核系数,该参数只针对这三个核函数,需要注意
scale’:默认值,具体的计算公式看下面的详细官网详情
auto’:具体的计算公式看下面的详细官网详情
或者是其他的浮点数均可

具体官网详情如下:
在这里插入图片描述

使用方式

NuSVC(gamma='auto')

⑤随机种子random_state

如果要是为了对比,需要控制变量的话,这里的随机种子最好设置为同一个整型数

具体官网详情如下:
在这里插入图片描述

使用方式

NuSVC(random_state=42)

⑥最终构建模型

NuSVC(nu=0.5,kernel=‘rbf’,gamma=‘auto’,random_state=42)

三、代码实现

①导包

这里需要评估、训练、保存和加载模型,以下是一些必要的包,若导入过程报错,pip安装即可

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
import joblib
%matplotlib inline
import seaborn as sns
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.svm import NuSVC
from sklearn.metrics import confusion_matrix, classification_report, accuracy_score

②加载数据集

数据集可以自己简单整个,csv格式即可,我这里使用的是6个自变量X和1个因变量Y
在这里插入图片描述

fiber = pd.read_csv("./fiber.csv")
fiber.head(5) #展示下头5条数据信息

在这里插入图片描述

③划分数据集

前六列是自变量X,最后一列是因变量Y

常用的划分数据集函数官网API:train_test_split
在这里插入图片描述
test_size:测试集数据所占比例
train_size:训练集数据所占比例
random_state:随机种子
shuffle:是否将数据进行打乱
因为我这里的数据集共48个,训练集0.75,测试集0.25,即训练集36个,测试集12个

X = fiber.drop(['Grade'], axis=1)
Y = fiber['Grade']X_train, X_test, y_train, y_test = train_test_split(X,Y,train_size=0.75,test_size=0.25,random_state=42,shuffle=True)print(X_train.shape) #(36,6)
print(y_train.shape) #(36,)
print(X_test.shape) #(12,6)
print(y_test.shape) #(12,)

④构建NuSVC模型

参数可以自己去尝试设置调整

nusvc = NuSVC(nu=0.5,kernel='rbf',gamma='auto',random_state=42)

⑤模型训练

就这么简单,一个fit函数就可以实现模型训练

nusvc.fit(X_train,y_train)

⑥模型评估

把测试集扔进去,得到预测的测试结果

y_pred = nusvc.predict(X_test)

看看预测结果和实际测试集结果是否一致,一致为1否则为0,取个平均值就是准确率

accuracy = np.mean(y_pred==y_test)
print(accuracy)

也可以通过score得分进行评估,计算的结果和思路都是一样的,都是看所有的数据集中模型猜对的概率,只不过这个score函数已经封装好了,当然传入的参数也不一样,需要导入accuracy_score才行,from sklearn.metrics import accuracy_score

score = nusvc.score(X_test,y_test)#得分
print(score)

⑦模型测试

拿到一条数据,使用训练好的模型进行评估
这里是六个自变量,我这里随机整个test = np.array([[16,18312.5,6614.5,2842.31,25.23,1147430.19]])
扔到模型里面得到预测结果,prediction = nusvc.predict(test)
看下预测结果是多少,是否和正确结果相同,print(prediction)

test = np.array([[16,18312.5,6614.5,2842.31,25.23,1147430.19]])
prediction = nusvc.predict(test)
print(prediction) #[2]

⑧保存模型

nusvc是模型名称,需要对应一致
后面的参数是保存模型的路径

joblib.dump(nusvc, './nusvc.model')#保存模型

⑨加载和使用模型

nusvc_yy = joblib.load('./nusvc.model')test = np.array([[11,99498,5369,9045.27,28.47,3827588.56]])#随便找的一条数据
prediction = nusvc_yy.predict(test)#带入数据,预测一下
print(prediction) #[4]

完整代码

模型训练和评估,不包含⑧⑨。

from sklearn.svm import NuSVC
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_splitfiber = pd.read_csv("./fiber.csv")
# 划分自变量和因变量
X = fiber.drop(['Grade'], axis=1)
Y = fiber['Grade']
#划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, Y, random_state=0)nusvc = NuSVC(nu=0.5,kernel='rbf',gamma='auto',random_state=42)
nusvc.fit(X_train,y_train)#模型拟合
y_pred = nusvc.predict(X_test)#模型预测结果
accuracy = np.mean(y_pred==y_test)#准确度
score = nusvc.score(X_test,y_test)#得分
print(accuracy)
print(score)test = np.array([[23,97215.5,22795.5,2613.09,29.72,1786141.62]])#随便找的一条数据
prediction = nusvc.predict(test)#带入数据,预测一下
print(prediction)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/87558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10分钟让你拿下Linux常用命令,网安运维测试人员必掌握!

文章目录 一、目录操作 1、批量操作 二、文件操作三、文件内容操作(查看日志,更改配置文件) 1、grep(检索文件内容)2、awk(数据统计)3、sed(替换文件内容)4、管道操作符|5、cut(数据裁剪) 四、系统日志位置五、创建与删除软连接六、压缩和解压…

虹科案例 | ELPRO帮助客户实现符合GDP标准的温度监测和高效的温度数据管理

文章来源:虹科环境监测技术 点击阅读原文:https://mp.weixin.qq.com/s/wwIPx_GK3ywqWr5BABC4KQ 在本案例研究中,虹科ELPRO帮助客户 ● 实施了温度监测解决方案,以一致的数据结构获取各国和各种运输方式的数据; ● 通过将温度数据上…

https跳过SSL认证时是不是就是不加密的,相当于http?

https跳过SSL认证时是不是就是不加密的,相当于http?,其实不是,HTTPS跳过SSL认证并不相当于HTTP,也不意味着没有加密。请注意以下几点: HTTPS(Hypertext Transfer Protocol Secure)本质上是在HTTP的基础上…

【postgresql】ERROR: column “xxxx.id“ must appear in the GROUP BY

org.postgresql.util.PSQLException: ERROR: column "xxx.id" must appear in the GROUP BY clause or be used in an aggregate function 错误:列“XXXX.id”必须出现在GROUP BY子句中或在聚合函数中使用 在mysql中是正常使用的,在postgre…

数字IC笔试千题解--单选题篇(二)

前言 出笔试题汇总,是为了总结秋招可能遇到的问题,做题不是目的,在做题的过程中发现自己的漏洞,巩固基础才是目的。 所有题目结果和解释由笔者给出,答案主观性较强,若有错误欢迎评论区指出,资料…

投资理财知识分享:100个金融知识专业术语

大家好,我是财富智星,今天跟大家分享一下投资理财知识方面100个金融知识专业术语,希望能帮助大家了解更多金融知识。 1. 股票:代表对一家公司所有权的证券。 2. 债券:公司或政府发行的借款证券。 3. 投资组合&#xff…

00-MySQL数据库的使用-上

一 数据库基础知识 先谈发音 MySQL如何发音?在国内MySQL发音有很多种,Oracle官方文档说 他们念作 My sequal[si:kwəl]。 数据库基本概念 数据 数据(Data)是指对客观事物进行描述并可以鉴别的符号,这 些符号是可识别…

分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测(SE注意力机制)

分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测(SE注意力机制) 目录 分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测(SE注意力机制)分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.MATLA…

loadEnv是vite的工具函数

loadEnv()函数返回一个对象,这个对象就是根据开发模式还是生产环境加载的.env.development文件里的环境变量,有系统自带的也有自己手写的 loadEnv(第1个参数,第2个参数,第3个参数) 注意:第3个参数如果是“”空字符…

LL库实现正交编码器数据采集

1,首先打开STM32CubeMX,配置一下工程,这里使用的芯片是STM32F103C8T6。 我这里选择了定时器2和3,因为我有两个电机,在定时器模式这边,我们在Combined Channels这个选项里面我们选择Encoder Mode&#xff0c…

OpenCV实现图像的礼帽和黑帽

礼帽运算 黑帽运算 参数 cv.morphologyEx(img,op,kernel)参数: img : 要处理的图像op: 处理方式 代码实现 import numpy as np import cv2 as cv import matplotlib.pyplot as plt from pylab import mplmpl.rcParams[font.sans-serif] [SimHei]#读取图像img1 …

Hyper-V 虚拟机CentOS配置网络(三)

总目录 https://preparedata.blog.csdn.net/article/details/132877836 文章目录 总目录一、创建交换机二、共享网络给交换机三、虚拟机配置交换机四、配置CentOS网络 一、创建交换机 二、共享网络给交换机 打开物理宿主机的控制面板的网络链接中心,此时已经多了一…

【从0学习Solidity】52. EIP712 类型化数据签名

【从0学习Solidity】 52. EIP712 类型化数据签名 博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页&#…

配电室电力监控系统:实时掌握电力运行状况

配电室是电力系统的重要组成部分,负责将发电厂输送的电力分配到各个用电终端。随着电力需求的不断增长,配电室的规模和复杂性也在增加。为了确保电力系统的稳定运行,采用配电室电力监控系统变得至关重要。 一、配电室电力监控系统概述 力…

TCP 和 UDP哪个更好

传输控制协议 (TCP) 和用户数据报协议 (UDP) 是互联网的基础支柱,支持从网络源到目的地的不同类型的数据传输。TCP更可靠,而UDP优先考虑速度和效率。本文解释了两种协议的工作原理,并详细讨论了…

【遥遥领先】Eolink IDEA 插件:零代码入侵,自动生成接口

省流版: Eolink 有 IDEA 插件吗? 有,而且遥遥领先!我们在一年半之前就发布了,而且功能更丰富! IDEA 插件市场搜索“Eolink Apikit”即可安装使用。 🚀使用指引:Eolink - IntelliJ ID…

virtualbox无界面打开linux虚拟机的bat脚本,以及idea(代替Xshell)连接linux虚拟机的方法

virtualbox无界面打开linux虚拟机的bat脚本,以及idea连接linux虚拟机的方法 命令行运行代码成功运行的效果图 idea连接linux虚拟机的方法【重要】查看虚拟机的IP地址idea中选择菜单(该功能可代替Xshell软件)配置设置连接成功进入idea中的命令…

Java on Azure Tooling 8月更新|以应用程序为中心的视图支持及 Azure 应用服务部署状态改进

作者:Jialuo Gan - Program Manager, Developer Division at Microsoft 排版:Alan Wang 大家好,欢迎阅读 Java on Azure 工具的八月更新。在本次更新中,我们将推出新的以应用程序为中心的视图支持,帮助开发人员在一个项…

德大黄鱼开捕 年产量20万吨 京东超市多举措保障黄鱼品质

作为“中国大黄鱼之都”,宁德大黄鱼占全国大黄鱼总产值产量均在90%以上。有关方面预计,今年全年宁德大黄鱼产量达20万吨,年增产10%,直接经济产值超百亿元。 宁德大黄鱼开捕活动,由宁德市政府、宁德渔业协会、京东超市…

leetCode 968.监控二叉树(利用状态转移+贪心)

968. 监控二叉树 - 力扣(LeetCode) 给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。 >>解题思路: 重要线索->题目示例中的摄…