""" ========================================== One-class SVM with non-linear kernel (RBF) ========================================== """ import numpy as np import pylab as pl from scikits.learn import svm xx, yy = np.meshgrid(np.linspace(-7, 7, 500), np.linspace(-7, 7, 500)) X = 0.3 * np.random.randn(100, 2) X = np.r_[X + 2, X - 2] # Add 10 % of outliers (leads to nu=0.1) X = np.r_[X, np.random.uniform(low=-6, high=6, size=(20, 2))] # fit the model clf = svm.OneClassSVM(nu=0.1, kernel="rbf", gamma=0.1) clf.fit(X) # plot the line, the points, and the nearest vectors to the plane Z = clf.predict_margin(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape) y_pred = clf.predict(X) pl.set_cmap(pl.cm.Paired) pl.contourf(xx, yy, Z) pl.scatter(X[y_pred>0,0], X[y_pred>0,1], c='white', label='inliers') pl.scatter(X[y_pred<=0,0], X[y_pred<=0,1], c='black', label='outliers') pl.axis('tight') pl.legend() pl.show()