color2 = plot.scatter(x2[:, 0], x2[:, 1], marker=".").get_facecolor() perceptron = Perceptron() X = np.concatenate([x1, x2], axis=0) y = np.concatenate([y1, y2], axis=0) temp = np.linspace(-6, 6, 100) X_ = np.ones((100 * 100, 3)) X_[:, 0] = np.concatenate([temp for i in range(100)]) X_[:, 1] = [i for i in temp for j in range(100)] perceptron = Perceptron(w=np.random.randn(DIM)) for it in range(1000): perceptron.update(X, y) Z = perceptron.g(X_) plot_plane(temp, Z, 'perceptron', color=[0.5, 0.2, 0.8]) y[range(N1)] *= (N1 + N2) / N1 y[N1 + np.array(range(N2))] *= (N1 + N2) / N2 mse = MSE(X, y) Z = mse.g(X_) plot_plane(temp, Z, 'MSE', color=[0.2, 0.6, 0.7]) svm = SVM(X, y, C=10.0) Z = svm.g(X_) plot_plane(temp, Z, 'SVM', color=[0.3, 0.2, 0.3]) sv_idx1 = svm.sv_idx[np.flatnonzero(svm.sv_idx < N1)] sv_idx2 = svm.sv_idx[np.flatnonzero(svm.sv_idx >= N1)] plot.scatter(X[sv_idx1, 0], X[sv_idx1, 1], marker="x", color=color1) plot.scatter(X[sv_idx2, 0], X[sv_idx2, 1], marker='x', color=color2)