支持向量机(SVM)(原理和用法)

一.简介

⽀持向量机是在深度学习流⾏起来之前效果最好的模型。
基本原理是⼆分类线性分类器,但现在也可以解决多分类问题,⾮线性问题,和回归问题。
找到一个决策边界,使边界间隔最大

名词解释:

决策超平面:wx+b=0,超平面(中间实线)

决策边界:虚线所示,也即超平面的上下边界

支持向量:决策边界(虚线)所穿过的点,或者距离决策边界(虚线)最近的点。SVM的核心就是优化决策超平面的参数,使支持向量到决策超平面的距离最大

间隔:两条虚线之间的距离,间隔越大,意味着两类数据的差异越大

二.程序

1.个别参数

sklearn.svm.SVC( c=1.0 ,               #错误样本的惩罚参数
                 kernel='rbf',         #使用何种核算法。linear:线性,poly:多项式,rbf:高斯(正态),sigmod,precomputed:自定义
                 degree=3,             #多项式核函数的阶数
                 gamma='auto',         #当kernel为'rbf','poly','sigmod'时的kernel的系数
                 coef0=0.0,            #kernel函数的常数项。
                 shrinking=True,
                 probability=False,   #是否估计概率,会增加计算时间
                 tol=0.001,           #误差项达到指定值时停止训练,默认值为0.001
)
类的属性:
support_vectors ⽀持向量, support_ ⽀持向量的索引, n_support_ 个数

2.SVM分类

PS:下面是最简单的SVM分类的代码,主要用于熟悉SVM的流程及各函数的作用

from sklearn.svm import SVC                                #SVC表示分类,SVR表示回归
from sklearn.preprocessing import StandardScaler           # 可先做标准化。
from sklearn import datasets
from sklearn.model_selection import train_test_split       #用于划分数据集

# 读数据
iris = datasets.load_iris()               #iris,经典鸢尾花数据集
X = iris.data
y = iris.target

# 标准化
std = StandardScaler()
X_std = std.fit_transform(X)            #对X的数据集进行标准化处理,y是目标值0,1之类不用标准化

# 拆分训练集
X_train, X_test, y_train, y_test = train_test_split(X_std, y, test_size=0.3)   #X_std是标准化之后的x(X = iris.data)的值

# SVM建模
svm_classification = SVC()                            #classification中文意思:分类
svm_classification.fit(X_train, y_train)              #用训练集数据进行训练。fit()函数用于训练模型

# 模型效果
svm_classification.score(X_test, y_test)             #用测试集数据进行测试模型效果。score()函数用于测试模型效果
print(svm_classification.score(X_test, y_test))      #这局代码用于输出测试结果,要不然代码运行完没有输出,看不到

3.SVM回归

from sklearn.svm import SVR                               #SVC表示分类,SVR表示回归
from sklearn.preprocessing import StandardScaler          #标准化库
from sklearn import datasets                              #sklearn内置的数据集
from sklearn.model_selection import train_test_split      #数据集拆分

# 读数据
boston = datasets.load_boston()                           #波士顿房价数据集(sklearn内置数据集)
X = boston.data
y = boston.target

# 标准化
std = StandardScaler()
X_std = std.fit_transform(X)

# 拆分训练集
X_train, X_test, y_train, y_test = train_test_split(X_std, y, test_size=0.3)

# SVM建模
svm_regression = SVR()                             #regression的意思是回归
svm_regression.fit(X_train, y_train)               #用训练集数据进行训练。fit()函数用于训练模型

# 模型效果
svm_regression.score(X_test, y_test)               #用测试集数据进行测试模型效果。score()函数用于测试模型效果。score中文“得分”
print(svm_regression.score(X_test, y_test))        #这局代码用于输出测试结果,要不然代码运行完没有输出,看不到

PS:回归效果不好,主要用于了解步骤

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值