支持向量机(Support Vector Machine, SVM)是一种监督学习算法,主要用于分类和回归任务。它基于统计学习理论中的结构风险最小化原理,通过找到数据点之间的最优边界来实现模型的泛化能力。
- import numpy as np
- import matplotlib.pyplot as plt
-
- from sklearn.svm import SVC
- from sklearn import datasets
-
- X,y = datasets.make_blobs(n_samples=100,#样本量
- n_features=2,#二维数据,便于画图展示
- centers = 2,#两类
- random_state=3)#随机数状态,固定了
- display(X.shape,y.shape,np.unique(y))
-
- plt.scatter(X[:,0],X[:,1],c=y)
datasets.make_blobs
是 Python scikit-learn
库中的一个函数,用于生成具有不同形状和尺度的随机中心的多维数据集。这个函数通常用于创建合成数据集,以便进行测试和演示机器学习算法。
- svc = SVC(kernel = 'linear')#kernel 表示核函数,linear,线性
-
- svc.fit(X,y)
svc.score(X,y)
- w_ = svc.coef_#有两个特征
- w_
- b_ = svc.intercept_
- b_
- w = -w_[0,0]/w_[0,1]
- w
- b, = -b_/w_[0,1]#逗号能将列表中的数取出来
- b
- sv = svc.support_vectors_
- sv
- x = np.linspace(-5,1,100)
-
- y_result = w*x+b
-
- plt.scatter(X[:,0],X[:,1],c=y)
-
- plt.plot(x,y_result,color = 'red')
- #上边界,下边界
- b1 = sv[0][1] - w*sv[0][0]
- plt.plot(x,w*x+b1,color = 'blue',ls='--')
-
- b2 = sv[-1][1] - w*sv[-1][0]
- plt.plot(x,w*x+b2,color = 'blue',ls ='--')