data = pd.read_csv("data.csv") data.replace("M",1,inplace=True) data.replace("B",0,inplace=True) #获取特征x和特征y X = data.iloc[:, 3:5].values x = np.array(X) y = data.diagnosis #拆分训练集与测试集 #基于线性核函数的svm绘制分类边界 model = svm.SVC(kernel = 'linear') model.fit(x, y) #绘制分类边界线 l,r = x[:,0].min()-1,x[:,0].max()+1 b,t = x[:,1].min()-1,x[:,1].max()+1 n = 500 grid_x, grid_y = np.meshgrid(np.linspace(l, r, n), np.linspace(b, t, n)) #grid_x与geid_y押平了组成模型的输入,预测输出 mesh_x = np.column_stack((grid_x.ravel(), grid_y.ravel())) pred_mesh_y = model.predict(mesh_x) grid_z = pred_mesh_y.reshape(grid_x.shape) #绘制这些点 plt.figure('SVM', facecolor = 'lightgray') plt.title('SVM', fontsize = 16) plt.xlabel('x', fontsize = 14) plt.ylabel('y', fontsize = 14) plt.pcolormesh(grid_x, grid_y, grid_z, cmap = 'gray') plt.scatter(x[:, 0], x[:, 1], s = 60, c = y, label = 'points', cmap = 'jet') plt.legend() plt.show()