当前位置:网站首页>机器学习之支持向量机实例,线性核函数 多项式核函数 RBF高斯核函数 sigmoid核函数
机器学习之支持向量机实例,线性核函数 多项式核函数 RBF高斯核函数 sigmoid核函数
2022-08-04 18:41:00 【51CTO】
支持向量机实例
1.线性核函数
def test_SVC_linear():
'''
测试 SVC 的用法。这里使用的是最简单的线性核
:param data: 可变参数。它是一个元组,这里要求其元素依次为训练样本集、测试样本集、训练样本的标记、测试样本的标记
:return: None
'''
iris = datasets. load_iris()
X_train, X_test, y_train, y_test = train_test_split( iris. data, iris. target, test_size = 0.25,
random_state = 0, stratify = iris. target)
cls = SVC( kernel = 'linear')
cls. fit( X_train, y_train)
print( 'Coefficients:%s, intercept %s' %( cls. coef_, cls. intercept_))
print( 'Score: %.2f' % cls. score( X_test, y_test))
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
2.多项式核函数
def test_SVC_poly():
'''
测试多项式核的 SVC 的预测性能随 degree、gamma、coef0 的影响.
:param data: 可变参数。它是一个元组,这里要求其元素依次为训练样本集、测试样本集、训练样本的标记、测试样本的标记
:return: None
'''
iris = datasets. load_iris()
X_train, X_test, y_train, y_test = train_test_split( iris. data, iris. target, test_size = 0.25,
random_state = 0, stratify = iris. target)
fig = plt. figure()
### 测试 degree ####
degrees = range( 1, 20)
train_scores =[]
test_scores =[]
for degree in degrees:
cls = SVC( kernel = 'poly', degree = degree, gamma = 'auto')
cls. fit( X_train, y_train)
train_scores. append( cls. score( X_train, y_train))
test_scores. append( cls. score( X_test, y_test))
ax = fig. add_subplot( 1, 3, 1) # 一行三列
ax. plot( degrees, train_scores, label = "Training score ", marker = '+' )
ax. plot( degrees, test_scores, label = " Testing score ", marker = 'o' )
ax. set_title( "SVC_poly_degree ")
ax. set_xlabel( "p")
ax. set_ylabel( "score")
ax. set_ylim( 0, 1.05)
ax. legend( loc = "best", framealpha = 0.5)
### 测试 gamma ,此时 degree 固定为 3####
gammas = range( 1, 20)
train_scores =[]
test_scores =[]
for gamma in gammas:
cls = SVC( kernel = 'poly', gamma = gamma, degree = 3)
cls. fit( X_train, y_train)
train_scores. append( cls. score( X_train, y_train))
test_scores. append( cls. score( X_test, y_test))
ax = fig. add_subplot( 1, 3, 2)
ax. plot( gammas, train_scores, label = "Training score ", marker = '+' )
ax. plot( gammas, test_scores, label = " Testing score ", marker = 'o' )
ax. set_title( "SVC_poly_gamma ")
ax. set_xlabel( r"$\gamma$")
ax. set_ylabel( "score")
ax. set_ylim( 0, 1.05)
ax. legend( loc = "best", framealpha = 0.5)
### 测试 r ,此时 gamma固定为10 , degree 固定为 3######
rs = range( 0, 20)
train_scores =[]
test_scores =[]
for r in rs:
cls = SVC( kernel = 'poly', gamma = 10, degree = 3, coef0 = r)
cls. fit( X_train, y_train)
train_scores. append( cls. score( X_train, y_train))
test_scores. append( cls. score( X_test, y_test))
ax = fig. add_subplot( 1, 3, 3)
ax. plot( rs, train_scores, label = "Training score ", marker = '+' )
ax. plot( rs, test_scores, label = " Testing score ", marker = 'o' )
ax. set_title( "SVC_poly_r ")
ax. set_xlabel( r"r")
ax. set_ylabel( "score")
ax. set_ylim( 0, 1.05)
ax. legend( loc = "best", framealpha = 0.5)
plt. show()
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
3.RBF高斯核函数
ef test_SVC_rbf():
'''
测试 高斯核的 SVC 的预测性能随 gamma 参数的影响
:param data: 可变参数。它是一个元组,这里要求其元素依次为训练样本集、测试样本集、训练样本的标记、测试样本的标记
:return: None
'''
iris = datasets. load_iris()
X_train, X_test, y_train, y_test = train_test_split( iris. data, iris. target, test_size = 0.25,
random_state = 0, stratify = iris. target)
gammas = range( 1, 20)
train_scores =[]
test_scores =[]
for gamma in gammas:
cls = SVC( kernel = 'rbf', gamma = gamma)
cls. fit( X_train, y_train)
train_scores. append( cls. score( X_train, y_train))
test_scores. append( cls. score( X_test, y_test))
fig = plt. figure()
ax = fig. add_subplot( 1, 1, 1)
ax. plot( gammas, train_scores, label = "Training score ", marker = '+' )
ax. plot( gammas, test_scores, label = " Testing score ", marker = 'o' )
ax. set_title( "SVC_rbf")
ax. set_xlabel( r"$\gamma$")
ax. set_ylabel( "score")
ax. set_ylim( 0, 1.05)
ax. legend( loc = "best", framealpha = 0.5)
plt. show()
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
4.sigmoid核函数
def test_SVC_sigmoid():
'''
测试 sigmoid 核的 SVC 的预测性能随 gamma、coef0 的影响.
:param data: 可变参数。它是一个元组,这里要求其元素依次为训练样本集、测试样本集、训练样本的标记、测试样本的标记
:return: None
'''
iris = datasets. load_iris()
X_train, X_test, y_train, y_test = train_test_split( iris. data, iris. target, test_size = 0.25,
random_state = 0, stratify = iris. target)
fig = plt. figure()
### 测试 gamma ,固定 coef0 为 0 ####
gammas = np. logspace( - 2, 1)
train_scores =[]
test_scores =[]
for gamma in gammas:
cls = SVC( kernel = 'sigmoid', gamma = gamma, coef0 = 0)
cls. fit( X_train, y_train)
train_scores. append( cls. score( X_train, y_train))
test_scores. append( cls. score( X_test, y_test))
ax = fig. add_subplot( 1, 2, 1)
ax. plot( gammas, train_scores, label = "Training score ", marker = '+' )
ax. plot( gammas, test_scores, label = " Testing score ", marker = 'o' )
ax. set_title( "SVC_sigmoid_gamma ")
ax. set_xscale( "log")
ax. set_xlabel( r"$\gamma$")
ax. set_ylabel( "score")
ax. set_ylim( 0, 1.05)
ax. legend( loc = "best", framealpha = 0.5)
### 测试 r,固定 gamma 为 0.01 ######
rs = np. linspace( 0, 5)
train_scores =[]
test_scores =[]
for r in rs:
cls = SVC( kernel = 'sigmoid', coef0 = r, gamma = 0.01)
cls. fit( X_train, y_train)
train_scores. append( cls. score( X_train, y_train))
test_scores. append( cls. score( X_test, y_test))
ax = fig. add_subplot( 1, 2, 2)
ax. plot( rs, train_scores, label = "Training score ", marker = '+' )
ax. plot( rs, test_scores, label = " Testing score ", marker = 'o' )
ax. set_title( "SVC_sigmoid_r ")
ax. set_xlabel( r"r")
ax. set_ylabel( "score")
ax. set_ylim( 0, 1.05)
ax. legend( loc = "best", framealpha = 0.5)
plt. show()
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
代码:
import numpy as np
from sklearn import datasets
from sklearn. model_selection import train_test_split
from sklearn. svm import SVC
import matplotlib. pyplot as plt
def test_SVC_linear():
'''
测试 SVC 的用法。这里使用的是最简单的线性核
:param data: 可变参数。它是一个元组,这里要求其元素依次为训练样本集、测试样本集、训练样本的标记、测试样本的标记
:return: None
'''
iris = datasets. load_iris()
X_train, X_test, y_train, y_test = train_test_split( iris. data, iris. target, test_size = 0.25,
random_state = 0, stratify = iris. target)
cls = SVC( kernel = 'linear')
cls. fit( X_train, y_train)
print( 'Coefficients:%s, intercept %s' %( cls. coef_, cls. intercept_))
print( 'Score: %.2f' % cls. score( X_test, y_test))
def test_SVC_poly():
'''
测试多项式核的 SVC 的预测性能随 degree、gamma、coef0 的影响.
:param data: 可变参数。它是一个元组,这里要求其元素依次为训练样本集、测试样本集、训练样本的标记、测试样本的标记
:return: None
'''
iris = datasets. load_iris()
X_train, X_test, y_train, y_test = train_test_split( iris. data, iris. target, test_size = 0.25,
random_state = 0, stratify = iris. target)
fig = plt. figure()
### 测试 degree ####
degrees = range( 1, 20)
train_scores =[]
test_scores =[]
for degree in degrees:
cls = SVC( kernel = 'poly', degree = degree, gamma = 'auto')
cls. fit( X_train, y_train)
train_scores. append( cls. score( X_train, y_train))
test_scores. append( cls. score( X_test, y_test))
ax = fig. add_subplot( 1, 3, 1) # 一行三列
ax. plot( degrees, train_scores, label = "Training score ", marker = '+' )
ax. plot( degrees, test_scores, label = " Testing score ", marker = 'o' )
ax. set_title( "SVC_poly_degree ")
ax. set_xlabel( "p")
ax. set_ylabel( "score")
ax. set_ylim( 0, 1.05)
ax. legend( loc = "best", framealpha = 0.5)
### 测试 gamma ,此时 degree 固定为 3####
gammas = range( 1, 20)
train_scores =[]
test_scores =[]
for gamma in gammas:
cls = SVC( kernel = 'poly', gamma = gamma, degree = 3)
cls. fit( X_train, y_train)
train_scores. append( cls. score( X_train, y_train))
test_scores. append( cls. score( X_test, y_test))
ax = fig. add_subplot( 1, 3, 2)
ax. plot( gammas, train_scores, label = "Training score ", marker = '+' )
ax. plot( gammas, test_scores, label = " Testing score ", marker = 'o' )
ax. set_title( "SVC_poly_gamma ")
ax. set_xlabel( r"$\gamma$")
ax. set_ylabel( "score")
ax. set_ylim( 0, 1.05)
ax. legend( loc = "best", framealpha = 0.5)
### 测试 r ,此时 gamma固定为10 , degree 固定为 3######
rs = range( 0, 20)
train_scores =[]
test_scores =[]
for r in rs:
cls = SVC( kernel = 'poly', gamma = 10, degree = 3, coef0 = r)
cls. fit( X_train, y_train)
train_scores. append( cls. score( X_train, y_train))
test_scores. append( cls. score( X_test, y_test))
ax = fig. add_subplot( 1, 3, 3)
ax. plot( rs, train_scores, label = "Training score ", marker = '+' )
ax. plot( rs, test_scores, label = " Testing score ", marker = 'o' )
ax. set_title( "SVC_poly_r ")
ax. set_xlabel( r"r")
ax. set_ylabel( "score")
ax. set_ylim( 0, 1.05)
ax. legend( loc = "best", framealpha = 0.5)
plt. show()
def test_SVC_rbf():
'''
测试 高斯核的 SVC 的预测性能随 gamma 参数的影响
:param data: 可变参数。它是一个元组,这里要求其元素依次为训练样本集、测试样本集、训练样本的标记、测试样本的标记
:return: None
'''
iris = datasets. load_iris()
X_train, X_test, y_train, y_test = train_test_split( iris. data, iris. target, test_size = 0.25,
random_state = 0, stratify = iris. target)
gammas = range( 1, 20)
train_scores =[]
test_scores =[]
for gamma in gammas:
cls = SVC( kernel = 'rbf', gamma = gamma)
cls. fit( X_train, y_train)
train_scores. append( cls. score( X_train, y_train))
test_scores. append( cls. score( X_test, y_test))
fig = plt. figure()
ax = fig. add_subplot( 1, 1, 1)
ax. plot( gammas, train_scores, label = "Training score ", marker = '+' )
ax. plot( gammas, test_scores, label = " Testing score ", marker = 'o' )
ax. set_title( "SVC_rbf")
ax. set_xlabel( r"$\gamma$")
ax. set_ylabel( "score")
ax. set_ylim( 0, 1.05)
ax. legend( loc = "best", framealpha = 0.5)
plt. show()
def test_SVC_sigmoid():
'''
测试 sigmoid 核的 SVC 的预测性能随 gamma、coef0 的影响.
:param data: 可变参数。它是一个元组,这里要求其元素依次为训练样本集、测试样本集、训练样本的标记、测试样本的标记
:return: None
'''
iris = datasets. load_iris()
X_train, X_test, y_train, y_test = train_test_split( iris. data, iris. target, test_size = 0.25,
random_state = 0, stratify = iris. target)
fig = plt. figure()
### 测试 gamma ,固定 coef0 为 0 ####
gammas = np. logspace( - 2, 1)
train_scores =[]
test_scores =[]
for gamma in gammas:
cls = SVC( kernel = 'sigmoid', gamma = gamma, coef0 = 0)
cls. fit( X_train, y_train)
train_scores. append( cls. score( X_train, y_train))
test_scores. append( cls. score( X_test, y_test))
ax = fig. add_subplot( 1, 2, 1)
ax. plot( gammas, train_scores, label = "Training score ", marker = '+' )
ax. plot( gammas, test_scores, label = " Testing score ", marker = 'o' )
ax. set_title( "SVC_sigmoid_gamma ")
ax. set_xscale( "log")
ax. set_xlabel( r"$\gamma$")
ax. set_ylabel( "score")
ax. set_ylim( 0, 1.05)
ax. legend( loc = "best", framealpha = 0.5)
### 测试 r,固定 gamma 为 0.01 ######
rs = np. linspace( 0, 5)
train_scores =[]
test_scores =[]
for r in rs:
cls = SVC( kernel = 'sigmoid', coef0 = r, gamma = 0.01)
cls. fit( X_train, y_train)
train_scores. append( cls. score( X_train, y_train))
test_scores. append( cls. score( X_test, y_test))
ax = fig. add_subplot( 1, 2, 2)
ax. plot( rs, train_scores, label = "Training score ", marker = '+' )
ax. plot( rs, test_scores, label = " Testing score ", marker = 'o' )
ax. set_title( "SVC_sigmoid_r ")
ax. set_xlabel( r"r")
ax. set_ylabel( "score")
ax. set_ylim( 0, 1.05)
ax. legend( loc = "best", framealpha = 0.5)
plt. show()
if __name__ == "__main__":
test_SVC_linear()
test_SVC_poly()
test_SVC_rbf()
test_SVC_sigmoid()
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
- 110.
- 111.
- 112.
- 113.
- 114.
- 115.
- 116.
- 117.
- 118.
- 119.
- 120.
- 121.
- 122.
- 123.
- 124.
- 125.
- 126.
- 127.
- 128.
- 129.
- 130.
- 131.
- 132.
- 133.
- 134.
- 135.
- 136.
- 137.
- 138.
- 139.
- 140.
- 141.
- 142.
- 143.
- 144.
- 145.
- 146.
- 147.
- 148.
- 149.
- 150.
- 151.
- 152.
- 153.
- 154.
- 155.
- 156.
- 157.
- 158.
- 159.
- 160.
- 161.
- 162.
- 163.
- 164.
- 165.
- 166.
- 167.
- 168.
- 169.
- 170.
- 171.
- 172.
- 173.
结果:
线性核函数
多项式核函数
RBF高斯核函数
sigmoid核函数
边栏推荐
- ERC721标准与加密猫
- 链表的经典入门LeetCode题目
- Documentary on Security Reinforcement of Network Range Monitoring System (1)—SSL/TLS Encrypted Transmission of Log Data
- 【杰神说说】物联大师2.0版本预告
- 【软件工程之美 - 专栏笔记】37 | 遇到线上故障,你和高手的差距在哪里?
- 智能视频监控平台EasyCVR如何使用接口批量导出iframe地址?
- 2019 Haidian District Youth Programming Challenge Activity Elementary Group Rematch Test Questions Detailed Answers
- How can test engineers break through career bottlenecks?
- CAN光纤转换器CAN光端机解决消防火灾报警
- 方法的重写
猜你喜欢
随机推荐
关于使用腾讯云HiFlow场景连接器每天提醒签到打卡
袋鼠云思枢:数驹DTengine,助力企业构建高效的流批一体数据湖计算平台
网站设计师:Nicepage 4.15 Crack By Xacker
测试工程师如何突破职业瓶颈?
通配符SSL证书不支持多域名吗?
Documentary on Security Reinforcement of Network Range Monitoring System (1)—SSL/TLS Encrypted Transmission of Log Data
天呐,七夕我收到9份告白~
测试/开发程序员男都秃头?女都满脸痘痘?过好我们“短暂“的一生......
How does the intelligent video surveillance platform EasyCVR use the interface to export iframe addresses in batches?
How can test engineers break through career bottlenecks?
Hezhou Cat1 4G module Air724UG is configured with RNDIS network card or PPP dial-up, and the development board is connected to the Internet through the RNDIS network card (taking the RV1126/1109 devel
DHCP&OSPF combined experimental demonstration (Huawei routing and switching equipment configuration)
基于激励的需求响应计划下弹性微电网的短期可靠性和经济性评估(Matlab代码实现)
如何让 JS 代码不可断点
Alibaba Cloud International Edition uses ROS to build WordPress tutorial
如何进行自动化测试?【Eolink分享】
2019年海淀区青少年程序设计挑战活动小学组复赛试题详细答案
【RTOS训练营】关于上课和答疑
【STM32】STM32单片机总目录
ECCV 2022 | FPN错位对齐,实现高效半监督目标检测(PseCo)