SVM的图例学习

编程入门 行业动态 更新时间:2024-10-28 00:28:07

SVM的<a href=https://www.elefans.com/category/jswz/34/1767451.html style=图例学习"/>

SVM的图例学习

SVM的图例学习

from sklearn.datasets._samples_generator import make_blobs
import matplotlib.pyplot as plt
import numpy as npX, y = make_blobs(n_samples=200, centers=2, random_state=0, cluster_std=0.80)
plt.scatter(X[:,0], X[:,1], c=y, s=50, cmap="autumn")plt.plot([0.6],[2.1], 'x', color='red', markeredgewidth=2, markersize=10)
xfit = np.linspace(-1, 3.5)
# for m,b in [(1,0.65), (0.5, 1.6), (-0.2, 2.9)]:
#     plt.plot(xfit, m * xfit + b, '-k')
# plt.show()
plt.xlim(-1, 3.5)# 训练一个基本的SVM
from sklearn.svm import SVC
# C=1E6:代表softmargin的容错误差。
# 当C趋近于无穷大时,意味着分类严格不能有错误;
# 当C趋近于很小的时,意味着分类可以有更大的错误容忍
model = SVC(kernel='linear',C=1)
# model = SVC(kernel='rbf',C=1)
model.fit(X, y)# 绘图函数
def plot_svc_decision_function(model, ax = None, plot_support=True):if ax is None:# plt.gca(): get the current axis()ax = plt.gca()xlim = ax.get_xlim()ylim = ax.get_ylim()# create grid to evaluate modelx = 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()]).TP = model.decision_function(xy).reshape(X.shape)# 画出大小为-1, 0, 1的三条线ax.contour(X, Y, P, colors='k',levels=[-1, 0, 1], alpha=0.5,linestyle=['--', '-', '--'])#  plot support vectorif plot_support:ax.scatter(model.support_vectors_[:,0],model.support_vectors_[:,1],s=300, linewidth=1, facecolors='green')ax.set_xlim(xlim)ax.set_ylim(ylim)plot_svc_decision_function(model)# ================================================================================
# 使用更多的数据点
def plot_svm(N=10, ax=None):X, y = make_blobs(n_samples=200, centers=2, random_state=0, cluster_std=0.60)X = X[:N]y = y[:N]model = SVC(kernel='linear', C=1E10)model.fit(X,y)ax = ax or plt.gca()ax.scatter(X[:,0], X[:,1], c=y, s=50, cmap="autumn")ax.set_xlim(-1, 4)ax.set_ylim(-1, 6)plot_svc_decision_function(model, ax)# 画多张图,使用plt.subplots(M,N,figsize(W,H)),声明有多少行多少列的图像,整个figure的大小
fig, ax = plt.subplots(1, 2, figsize=(16, 6))
fig.subplots_adjust(left=0.0625, right=0.95, wspace=0.1)
# ax具有iteration的内嵌函数,list也具有iteration的内嵌函数
# zip将二者打包成zip对象
for axi, N in zip(ax, [60, 120]):plot_svm(N, axi)axi.set_title('N={}'.format(N))# ================================================================================
# 引入核方法的SVM
from sklearn.datasets._samples_generator import make_circles
from mpl_toolkits import mplot3d
X, y = make_circles(100, factor=.1, noise=.1)
# 引入新的维度r
r = np.exp(-(X ** 2).sum(1))
def plot_3D(elev=30, azim=30, X=X, y=y):# python的plt函数画3D图像rax = plt.subplot(projection='3d')ax.scatter3D(X[:, 0], X[:, 1], r, c=y, s=50, cmap='autumn')ax.view_init(elev=elev, azim=azim)ax.set_xlabel('x')ax.set_ylabel('y')ax.set_zlabel('r')
plot_3D(elev=45, azim=45, X=X, y=y)
# C=1E6:代表softmargin的容错误差。
# 当C趋近于无穷大时,意味着分类严格不能有错误;
# 当C趋近于很小的时,意味着分类可以有更大的错误容忍
clf = SVC(kernel='rbf', C=1E6)
clf.fit(X, y)
# plt.scatter(X[:,0], X[:,1], c=y, s=50, cmap='autumn')
plot_svc_decision_function(clf)plt.show()

更多推荐

SVM的图例学习

本文发布于:2023-07-28 19:46:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1291686.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:图例   SVM

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!