Search code examples
pythonscikit-learnclassificationsvmsvc

SKLearn: Getting distance of each point from decision boundary?


I am using SKLearn to run SVC on my data.

from sklearn import svm

svc = svm.SVC(kernel='linear', C=C).fit(X, y)

I want to know how I can get the distance of each data point in X from the decision boundary?


Solution

  • For linear kernel, the decision boundary is y = w * x + b, the distance from point x to the decision boundary is y/||w||.

    y = svc.decision_function(x)
    w_norm = np.linalg.norm(svc.coef_)
    dist = y / w_norm
    

    For non-linear kernels, there is no way to get the absolute distance. But you can still use the result of decision_funcion as relative distance.