2017-08-15 2 views
0

J'ai besoin d'un classificateur svm de python avec la fonction de perte huber. Mais sa fonction de perte par défaut est la perte de charnière. Savez-vous comment puis-je attribuer la fonction de perte à python svm?python svm fonction avec perte huber

svc = svm.SVC(kernel='linear', C=1, gamma=1).fit(data, label) 
+0

De quelle bibliothèque s'agit-il? Scikit apprendre? Il est difficile de comprendre quel est le problème sans savoir quel logiciel vous utilisez réellement. – Dylan

+0

il vient de chez sklearn. – user3104352

+0

Eh bien, un problème est que svm.SVC() n'a aucun paramètre de perte du tout. svm.LinearSVC fait, mais les documents précisent que seules les charnières et les charnières au carré sont disponibles. Ainsi, la fonction de perte que vous voulez n'est pas disponible dans le logiciel que vous utilisez. Si vous devez avoir cette fonction de perte en particulier, vous devrez l'écrire vous-même. – Dylan

Répondre

0

modèle Il n'y a vraiment pas une telle chose comme « SVM avec la perte de huber », comme SVM est littéralement linéaire (ou kernelized) formé avec la perte de la charnière. Si vous changez la perte - il cesse d'être SVM. Par conséquent, les bibliothèques n'ont pas de paramètre de perte, car la modification ne s'applique pas au concept SVM.

Si vous souhaitez former un modèle avec la perte de huber vous pouvez utiliser SGDClassiifier de sklearn, qui formera un modèle linéaire avec ce (et beaucoup d'autres) la perte.

Si vous voulez faire quelque chose de plus complexe, comme un modèle non linéaire avec ce type de pénalité - alors sklearn n'est pas le bon choix et vous devriez regarder plus de bibliothèques de "bas niveau" telles que TF, Keras et ainsi sur.