基于SVM的异或数据集划分

支持向量机SVM是一类监督学习方式对数据进行二元分类的广义线性分类器。

数据集及数据预处理

#创建一个异或数据集
import matplotlib.pyplot as plt  
import numpy as np  
np.random.seed(1)  
X_xor = np.random.randn(200, 2)  
y_xor = np.logical_xor(X_xor[:, 0] > 0,X_xor[:, 1] > 0)  
y_xor = np.where(y_xor, 1, -1)  
plt.scatter(X_xor[y_xor == 1, 0],X_xor[y_xor == 1, 1],c='b', marker='x',label='1')  
plt.scatter(X_xor[y_xor == -1, 0],X_xor[y_xor == -1, 1],c='r',marker='s', label='-1')  
plt.xlim([-3, 3])  
plt.ylim([-3, 3])  
plt.legend(loc='best')  
plt.tight_layout()  
plt.show() 

构建SVM分类器

#划分决策树区域
import matplotlib.pyplot as plt  
import numpy as np  
from matplotlib.colors import ListedColormap  
def plot_decision_regions(x,y,model,resolution=0.02):  
	markers = ('s','x','o','^','v')  
	colors = ('red','blue','lightgreen','gray','cyan')  
	cmap = ListedColormap(colors[:len(np.unique(y))])  
	x1_min,x1_max = x[:,0].min() - 1,x[:,0].max() + 1  
	x2_min,x2_max = x[:,1].min() - 1,x[:,1].max() + 1  
	xx1,xx2 = np.meshgrid(np.arange(x1_min,x1_max,resolution),  
		                  np.arange(x2_min,x2_max,resolution))  
	z = model.predict(np.array([xx1.ravel(),xx2.ravel()]).T)  
	z = z.reshape(xx1.shape)  
	plt.contourf(xx1,xx2,z,alpha=0.4,cmap=cmap)  
	plt.xlim(xx1.min(),xx1.max())  
	plt.ylim(xx2.min(),xx2.max())  
	for idx,cl in enumerate(np.unique(y)):  
	    plt.scatter(x=x[y == cl,0],y=x[y == cl,1],  
		            alpha=0.8,c=cmap(idx),  
	                marker=markers[idx],label=cl)  
	plt.xlabel("x1")  
	plt.ylabel("x2")  
	plt.show()  

求出异或数据集的决策边界

from sklearn.svm import SVC
if __name__ == "__main__":  
    x_xor = np.random.randn(200,2)  
    #将数据集变成一个异或的数据集  
    y_xor = np.logical_xor(x_xor[:,0] > 0,x_xor[:,1] > 0)  
    y_xor = np.where(y_xor,1,-1)  
    svm = SVC(kernel="rbf", random_state=0, gamma=0.1, C=1.0)  
    svm.fit(x_xor, y_xor)  
    plot_decision_regions(x_xor, y_xor, svm) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值