support sklearn score scikit rbf poly machine learn fit example svm scikit-learn

svm - sklearn - support vector machine example



¿Cómo puedo saber la probabilidad de clase predicha por la función predecir() en la Máquina de vectores de soporte? (4)

Al crear una clase SVC para calcular las estimaciones de probability=True estableciendo probability=True :

http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html

Luego llame al fit como de costumbre y luego predict_proba([fv]) .

¿Cómo puedo saber la probabilidad de la muestra de que pertenezca a una clase predicha por la función predict () de Scikit-Learn en Support Vector Machine?

>>>print clf.predict([fv]) [5]

¿Hay alguna función?


Definitivamente lea esta sección de los documentos ya que hay algunas sutilezas involucradas. Ver también Scikit-learn predict_proba da respuestas incorrectas.

Básicamente, si tiene un problema de varias clases con muchos datos, predict_proba como se sugirió anteriormente funciona bien. De lo contrario, es posible que tenga que conformarse con un pedido que no arroje puntajes de probabilidad de la función de decisión.

Aquí hay un buen motivo para usar predict_proba para obtener un diccionario o una lista de clase vs probabilidad:

model = svm.SVC(probability=True) model.fit(X, Y) results = model.predict_proba(test_data)[0] # gets a dictionary of {''class_name'': probability} prob_per_class_dictionary = dict(zip(model.classes_, results)) # gets a list of [''most_probable_class'', ''second_most_probable_class'', ..., ''least_class''] results_ordered_by_probability = map(lambda x: x[0], sorted(zip(model.classes_, results), key=lambda x: x[1], reverse=True))


Para obtener respuestas más claras, publico nuevamente la información de scikit-learn para svm.

No hace falta decir que la validación cruzada involucrada en el escalado de Platt es una operación costosa para grandes conjuntos de datos. Además, las estimaciones de probabilidad pueden ser inconsistentes con las puntuaciones, en el sentido de que el "argmax" de las puntuaciones puede no ser el argmax de las probabilidades. (Por ejemplo, en la clasificación binaria, una muestra puede etiquetarse por predicción como perteneciente a una clase que tiene probabilidad <1/2 según predict_proba). También se sabe que el método de Platt tiene problemas teóricos. Si se requieren puntuaciones de confianza, pero estas no tienen que ser probabilidades, entonces es recomendable establecer probabilidad = Falso y usar decision_function en lugar de predict_proba

Para otros clasificadores como Random Forest, AdaBoost, Gradient Boosting, debería estar bien usar la función de predicción en scikit-learn.


Use clf.predict_proba ([fv]) para obtener una lista con probabilidades pronosticadas por clase. Sin embargo, esta función no está disponible para todos los clasificadores.

Respecto a tu comentario, considera lo siguiente:

>> prob = [ 0.01357713, 0.00662571, 0.00782155, 0.3841413, 0.07487401, 0.09861277, 0.00644468, 0.40790285] >> sum(prob) 1.0

Las probabilidades suman 1.0, entonces multiplique por 100 para obtener el porcentaje.