四、线性支持向量机算法(LinearSVC,Linear Support Vector Classification)(有监督学习)

news2024/10/6 20:30:45

线性支持向量机,Linear Support Vector Classification.
与参数内核为线性的SVC类似(SVC(kernel=‘linear’)),但使用liblinear而非libsvm实现,因此在选择惩罚和损失函数时更具灵活性,并能更好地扩展到大量样本

SVC(kernel=’linear’)LinearSVC()是类似的,只不过LinearSVC()是通过liblinear实现的;而SVC(kernel=’linear’)通过libsvm实现的;相较于SVC(kernel=’linear’),LinearSVC)(在选择惩罚和损失函数时更具灵活性,并能更好地扩展到大量样本

一、算法思路

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

二、官网API

官网API

class sklearn.svm.LinearSVC(penalty='l2', loss='squared_hinge', *, dual='warn', tol=0.0001, C=1.0, multi_class='ovr', fit_intercept=True, intercept_scaling=1, class_weight=None, verbose=0, random_state=None, max_iter=1000)

这里的参数还是比较多的,具体的参数使用,可以根据官网给的demo进行学习,多动手尝试;这里就以一些常用的参数进行说明。
导包:from sklearn.svm import LinearSVC

①惩罚项penalty

惩罚项的选择,指定惩罚中使用的规范
l2惩罚是SVC使用的标准,l1会导致coef_向量稀疏
正则化说白了就是对损失函数的一种约束限制

在线性回归中,L1正则化也称为Lasso回归,可以产生稀疏模型
在线性回归中,L2正则化也称为Ridge回归,可以获得很小的参数,防止过拟合
指定惩罚中使用的规范。l2 “惩罚是 SVC 使用的标准。l1” 会导致 coef_ 向量稀疏。

l1’:添加L1正则化
l2’:添加L2正则化,默认,L2正则化是SVC的使用标准
SVC()中可以选择None,而LinearSVC()中没有

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

使用方式

LinearSVC(penalty='l2')

②损失函数loss

loss,指定损失函数
hinge是标准SVM损失函数(如SVC类使用,而squared_hinge是hinge损失函数的平方

不支持 penalty=‘l1’ 和 loss=‘hinge’ 的组合
因为penalty='l2’是SVC的使用标准,loss='hinge’是标准SVM损失函数,只有这样配套的才可以搭配使用

hinge’:标准SVM损失函数
squared_hinge’:hinge损失函数的平方

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

使用方式

LinearSVC(loss='squared_hinge')

③正则化参数C

正则化强度与C成反比,惩罚是L2正则化的平方,C是一个浮点数类型

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

使用方式

LinearSVC(C=2.0)

④随机种子random_state

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

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

使用方式

LinearSVC(random_state=42)

⑤最终构建模型

LinearSVC(penalty=‘l2’,loss=‘squared_hinge’,C=2.0,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 LinearSVC
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,)

④构建LinearSVC模型

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

lsvc = LinearSVC(penalty='l2',loss='squared_hinge',C=2.0,random_state=42)

⑤模型训练

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

lsvc.fit(X_train,y_train)

⑥模型评估

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

y_pred = lsvc.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 = lsvc.score(X_test,y_test)#得分
print(score)

⑦模型测试

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

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

⑧保存模型

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

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

⑨加载和使用模型

lsvc_yy = joblib.load('./lsvc.model')

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

完整代码

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

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 LinearSVC
from sklearn.metrics import confusion_matrix, classification_report, accuracy_score

fiber = 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)

lsvc = LinearSVC(penalty='l2',loss='squared_hinge',C=2.0,random_state=42)
lsvc.fit(X_train,y_train)

y_pred = lsvc.predict(X_test)
accuracy = np.mean(y_pred==y_test)
print(accuracy)
score = lsvc.score(X_test,y_test)#得分
print(score)

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

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

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

相关文章

【沐风老师】3DMAX路径拖尾光线刀光效果插件GhostTrails教程

3DMAX路径拖尾光线刀光效果插件GhostTrails,是3dsmax的动画挤出修改器。它非常适合风格化的运动模糊效果、轮胎轨迹、Tron光循环和许多其他用途。 【适用版本】 3dMax2010 - 2024 【安装方法】 1.将对应版本的GhostTrails 插件复制到 3dmax 插件目录(如…

原创动画《优弧,你小子!》

💥 背景 体验效果直接翻到第三章:成果体验 先来介绍一下优弧:掘金平台管理员丨首席客服君丨运营负责人 👨‍✈️ 现在优弧到底是妹子还是汉子仍是一个未解之谜,网上众说纷纭。他说:优弧是个200来斤的胖子&a…

AIGC赋能甄知燕千云员工AI助手,升级企业智创之旅

燕千云数智化业务服务平台发布了1.24.0版本,此次版本升级了燕千云智能工单,增加了一键外呼功能,并且优化了在线客服接入了失败通知,满足不同的用户需求,此次还升级了智能助理,知识中心等功能,满…

[计算机入门] Windows附件程序介绍(影音类)

3.12 附件程序介绍(影音类) 3.12.1 附件程序介绍 附件程序是在安装完Windows系统后,系统自带的一些非常常用且重要的软件程序。可以通过下面的方式搜索并打开附件程序(以打开画图程序为例): 1、点击左下角windows菜单: 2、直接输入要打开…

基于 SpringBoot+Vue的电影影城管理系统,附源码,数据库

文章目录 第一章 简介第二章 技术栈第三章 功能分析第四章 系统设计第5章 系统详细设计六 源码咨询 第一章 简介 本影城管理系统,是基于 Java SpringBoot 开发的。主要包括二大功能模块,即用户功能模块和管理员功能模块。 (1)管…

在win系统安装部署svn服务及客户端使用

1. 安装svn服务端 1.1. 下载svn服务端 进入SVN服务端官网,并下载: 1.2. 下载后双击即可安装,选择下一步 1.3. 同意许可,选择下一步 1.4. 选择安装SVN的组件,默认,下一步 1.5. 设置安装路径、仓库路径、…

Python爬虫实战:用简单四步爬取小红书图片

小红书是一个热门的社交分享平台,汇聚了大量精美的图片。如果您希望保存或使用这些图片,本文将为您详细介绍如何使用Python爬虫轻松爬取小红书图片。 一、安装必要的库 在开始之前,确保您已经安装了以下Python库: requests&#…

http的get与post

get方法: 这个网址可以获取配置信息(我把部分位置字符改了,现在打不开了,不然会被追责) http://softapi.s103.cn/addons/Kmdsoft/Index/config?productwxdk&partner_id111122&osWindows&os_version11&am…

Nginx之QPS限制模块解读

目录 基本介绍 模块配置具体解读 limit_req_zone limit_req 原理:漏桶算法 基本介绍 NGINX通过limit_req_zone和limit_req两条指令来实现速率限制。指令limit_req_zone定义了限速的参数,指令limit_req在所在的location使能定义的速率。 QPS即每秒…

ChatGPT AIGC 非常实用的AI工具集合大全

实战AI 工具箱 AIGC ChatGPT 职场案例60集, Power BI 商业智能 68集, 数据库Mysql8.0 54集 数据库Oracle21C 142集, Office, Python ,ETL Excel 2021 实操,函数,图表,大屏可视化 案例实战 http://t.csdn.cn/zBytu

工厂进销存软件怎么选?

本文将为大家讲解:工厂进销存软件怎么选? 工厂的进销存管理对于生产和供应链的顺畅运作至关重要。为了更好地管理库存、优化生产和确保及时交货,工厂需要选择一款合适的进销存软件。本文将介绍工厂应该考虑的关键因素,以帮助他们…

统一系统脆弱性管理平台:让“网络安全漏洞”无处遁形

网络安全漏洞是网络节点的系统软件或应用软件在逻辑设计上的缺陷,漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使网络攻击者能够在未授权的情况下访问或破坏系统。 网络安全漏洞被利用了,危害极大。正是因为如此&…

华为云云耀云服务器L实例评测 | Docker 部署 Reids容器

文章目录 一、使用Docker部署的好处二、Docker 与 Kubernetes 对比三、云耀云服务器L实例 Docker 部署 Redis四、可视化工具连接Redis⛵小结 一、使用Docker部署的好处 Docker的好处在于:在不同实例上运行相同的容器 Docker的五大优点: 持续部署与测试…

电脑C盘爆红怎么办?(小白篇)

文章目录 前言:1、清理临时和系统文件2、更改电脑默认软件安装位置3、微信、QQ文件存储路径放在其它盘4、卸载一些不常用的软件彩蛋 前言: C盘作为电脑的系统盘,如果出现爆满或者剩余空间很小整个C盘变红,这样会导致电脑系统运行…

二次号查询API:检测手机号是否二次入网,提高用户信任度

引言 在数字时代,个人数据的安全和隐私保护变得至关重要。用户信任是在线业务成功的基石,而其中一个关键方面是保护用户的个人信息不受滥用和侵犯。为了增强用户信任度,越来越多的企业和服务提供商正在采用手机号是否二次入网检测API&#x…

【湖科大教书匠】计算机网络随堂笔记第4章(计算机网络网络层)

目录 4.1、网络层概述 简介 要实现网络层任务,需要解决一下主要问题: 网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”) 网络层寻址问题 路由选择问题 路由器收到数据后,是依据什么来决定将数据包从自己…

es6模块化,怎么判断当前文件使用的是es6的模块化还是commenjs的模块化

es6的模块化,文件中的this,指向undefined,不是指向window import.meta - JavaScript | MDN

Linux学习之HIS部署(4)

ElasticSearch部署 ElasticSearch资源 RabbitMQ资源 ElasticSearch服务部署 #OpenJDK环境部署 [rootServices ~]# yum clean all; yum repolist -v ... Total packages: 8,265 [rootServices ~]# yum -y install java-1.8.0-openjdk-devel.x86_64 #安装OpenJDk ... Compl…

nodejs在pdf中绘制表格

需求 之前我已经了解过如何在pdf模板中填写字段了 nodejs根据pdf模板填入中文数据并生成新的pdf文件https://blog.csdn.net/ArmadaDK/article/details/132456324 但是当我具体使用的时候,我发现我的模板里面有表格,表格的长度是不固定的,所…