Capítulo 7: Máquina de vectores de soporte SVM: 1. Código sklearn.svm.SVC 1.1 2. Función del kernel 3. Margen suave

1. Soporte de máquina vectorial SVM

Insertar descripción de la imagen aquí
Lo principal es encontrar el límite de decisión.

Insertar descripción de la imagen aquí
Segunda planta:
Insertar descripción de la imagen aquí

amable:
Insertar descripción de la imagen aquí

1. sklearn.svm.SVC

Por ejemplo, svm separa las dos categorías. Es decir, una recta en un plano bidimensional: Insertar descripción de la imagen aquíal dividir el plano, los puntos separados y se convierten en -1 y +1 . Esa es la fórmula:Insertar descripción de la imagen aquí

Es decir, como se muestra en la figura: Insertar descripción de la imagen aquí
w y x aquí son ambos vectores.

1.1 Código

  • Código del conjunto de datos:
from sklearn.datasets import make_blobs as mb
from sklearn.svm import SVC as svc
import matplotlib.pyplot as pt
import numpy as np
x,y=mb(n_samples=100,centers=2,random_state=0,cluster_std=0.5)
pt.scatter(x[:,0],x[:,1],c=y,s=100,cmap="rainbow")

Imagen del conjunto de datos:Insertar descripción de la imagen aquí

  • Código para dibujar la cuadrícula:
ax = pt.gca()  # 获取当前的坐标轴对象
xlim=ax.get_xlim()
ylim=ax.get_ylim()
print(xlim)

//绘制网格
axisx=np.linspace(xlim[0],xlim[1],30)//从左到右取30个值来绘制网格
axisy=np.linspace(ylim[0],ylim[1],30)
axisy,axisx=np.meshgrid(axisy,axisx)//特征向量转化成坐标矩阵,即x,y堆叠成3030的坐标矩阵
xy=np.vstack([axisx.ravel(),axisy.ravel()]).T//将两个矩阵展平为一维数组,并在一起就是900组坐标。
print(xy.shape)//900,2

  • código de servicio:
cf=svc(kernel="linear").fit(x,y)
p=cf.decision_function(xy).reshape(axisx.shape)//900个点变为3030
print(p)//数值的绝对值可以表示距离的远近

ax.contour(axisx,axisy,p,colors="k",levels=[-1,0,1],alpha=0.5,linestyles=["--","-","--"])
ax.set_xlim(xlim)
ax.set_ylim(ylim)

resultado:Insertar descripción de la imagen aquí

2. Función del núcleo

3. Intervalo suave

Insertar descripción de la imagen aquí
En este momento, nuestro límite de decisión ya no es simplemente buscar el margen máximo, porque para los datos de margen blando, cuanto mayor sea el margen, más muestras se clasificarán erróneamente, por lo que necesitamos encontrar un "margen máximo" y el equilibrio entre el "número de muestras mal clasificadas". El parámetro C se utiliza para sopesar los dos objetivos de "clasificación correcta de las muestras de entrenamiento" y "maximización del margen de la función de decisión" que no se pueden lograr simultáneamente. Se espera encontrar un punto de equilibrio para lograr el mejor efecto del modelo. .

Código:Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_53982314/article/details/131286193
Recomendado
Clasificación