-
-
Notifications
You must be signed in to change notification settings - Fork 26.3k
Closed
Labels
EasyWell-defined and straightforward way to resolveWell-defined and straightforward way to resolve
Description
It is possible to make svm.SVC
run svm_predict_probability()
without having been trained with probability=True
. Example:
from sklearn import datasets, svm
I = datasets.load_iris()
X, Y = I.data, I.target
G = svm.SVC()
G.fit(X,Y)
G.predict_proba(X) #--->
"""
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/sklearn/svm/base.py", line 542, in predict_proba
self._check_proba()
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/sklearn/svm/base.py", line 510, in _check_proba
" probability=%r" % self.probability)
AttributeError: predict_proba is not available when probability=False
"""
#trick sklearn:
G.probability = True
# now it works:
G.predict_proba(X) #--->
"""
array([[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 5.00000075e-08, 1.00000015e-07],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[ 9.99999850e-01, 1.00000015e-07, 5.00000075e-08],
[...]
"""
(interestingly the probabilities do seem to correspond to reasonable predictions, but every class has a fixed set of probability values; I saw this when writing my own code against libsvm too; I don't know what to make of it, probably an upstream bug)
libsvm provides svm_check_probability_model() precisely to catch this case. It seems you aren't, but you could!
abunickabhi, premvardhan and liznyamu
Metadata
Metadata
Assignees
Labels
EasyWell-defined and straightforward way to resolveWell-defined and straightforward way to resolve