 <p>I took a look at the apis in sklearn.svm.* family. All below models, e.g.,</p> <ul> <li>sklearn.svm.SVC</li> <li>sklearn.svm.NuSVC</li> <li>sklearn.svm.SVR</li> <li>sklearn.svm.NuSVR</li> </ul> <p>have a common <a href="http://scikit-learn.org/0.11/modules/generated/sklearn.svm.NuSVR.html" rel="nofollow noreferrer">interface</a> that supplies a </p> <pre><code>probability: boolean, optional (default=False) </code></pre> <p>parameter to the model. If this parameter is set to True, libsvm will train a probability transformation model on top of the SVM's outputs based on idea of <a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.41.1639" rel="nofollow noreferrer">Platt Scaling</a>. The form of transformation is similar to a logistic function as you pointed out, however two specific constants <code>A</code> and <code>B</code> are learned in a post-processing step. Also see this <a href="http://stackoverflow.com/questions/15111408/how-does-sklearn-svm-svcs-function-predict-proba-work-internally">stackoverflow</a> post for more details.</p> <p><img src="https://i.stack.imgur.com/LcIQF.png" alt="enter image description here"></p> <p>I actually don't know why this post-processing is not available for LinearSVC. Otherwise, you would just call <code>predict_proba(X)</code> to get the probability estimate. </p> <p>Of course, if you just apply a naive logistic transform, it will not perform as well as a calibrated approach like <a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.41.1639" rel="nofollow noreferrer">Platt Scaling</a>. If you can understand the underline algorithm of platt scaling, probably you can write your own or contribute to the scikit-learn svm family. :) Also feel free to use the above four SVM variations that support <code>predict_proba</code>.</p>