python中的sklearn.svm.svr_Python sklearn 实现SVM和SVR

本文通过Python的sklearn库演示了SVM的使用,包括线性可分与不可分情况下的SVM,展示了如何调整C参数影响分类效果。同时,文章还介绍了如何使用SVM进行回归任务,如SVR,并通过不同核函数进行对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线性可分 SVM

import numpy as np

import matplotlib.pyplot as plt

from sklearn.svm import SVC # "Support vector classifier"

# 定义函数plot_svc_decision_function用于绘制分割超平面和其两侧的辅助超平面

def plot_svc_decision_function(model, ax=None, plot_support=True):

"""Plot the decision function for a 2D SVC"""

if ax is None:

ax = plt.gca()

xlim = ax.get_xlim()

ylim = ax.get_ylim()

# 创建网格用于评价模型

x = np.linspace(xlim[0], xlim[1], 30)

y = np.linspace(ylim[0], ylim[1], 30)

Y, X = np.meshgrid(y, x)

xy = np.vstack([X.ravel(), Y.ravel()]).T

P = model.decision_function(xy).reshape(X.shape)

#绘制超平面

ax.contour(X, Y, P, colors='k',

levels=[-1, 0, 1], alpha=0.5,

linestyles=['--', '-', '--'])

#标识出支持向量

if plot_support:

ax.scatter(model.support_vectors_[:, 0], model.support_vectors_[:, 1], s=300, linewidth=1, edgecolors='blue', facecolors='none');

ax.set_xlim(xlim)

ax.set_ylim(ylim)

# 用make_blobs生成样本数据

from sklearn.datasets.samples_generator import make_blobs

X, y = make_blobs(n_samples=50, centers=2, random_state=0, cluster_std=0.60)

# 用线性核函数的SVM来对样本进行分类

model = SVC(kernel='linear')

model.fit(X, y)

# 将样本数据绘制在直角坐标中

plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='autumn')

# 在直角坐标中绘制出分割超平面、辅助超平面和支持向量

plot_svc_decision_function(model)

plt.show()

结果

线性 SVM

不同类型样本发生了重叠的情况

import numpy as np

import matplotlib.pyplot as plt

from sklearn.svm import S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值