tutorial support sklearn rbf machine linearsvc example python machine-learning svm scikit-learn svc

support - Python: cómo encontrar el resultado de exactitud en el algoritmo clasificador de texto SVM para la clase Multilabel



svm python example (1)

Si desea obtener un puntaje de precisión para su conjunto de prueba, deberá crear una clave de respuesta, que puede llamar y_test . No puede saber si sus predicciones son correctas a menos que sepa las respuestas correctas.

Una vez que tiene una clave de respuesta, puede obtener la precisión. El método que desea es sklearn.metrics.accuracy_score .

Lo he escrito a continuación:

from sklearn.metrics import accuracy_score # ... everything else the same ... # create an answer key # I hope this is correct! y_test = [[1], [2], [3]] # same as yours... classifier.fit(X_train, y_train) predicted = classifier.predict(X_test) # get the accuracy print accuracy_score(y_test, predicted)

Además, sklearn tiene varias métricas además de precisión. Véalos aquí: sklearn.metrics

He usado el siguiente conjunto de códigos: Y necesito verificar la precisión de X_train y X_test

El siguiente código funciona para mí en mi problema de clasificación sobre clase multi-etiquetada

import numpy as np from sklearn.pipeline import Pipeline from sklearn.feature_extraction.text import CountVectorizer from sklearn.svm import LinearSVC from sklearn.feature_extraction.text import TfidfTransformer from sklearn.multiclass import OneVsRestClassifier X_train = np.array(["new york is a hell of a town", "new york was originally dutch", "the big apple is great", "new york is also called the big apple", "nyc is nice", "people abbreviate new york city as nyc", "the capital of great britain is london", "london is in the uk", "london is in england", "london is in great britain", "it rains a lot in london", "london hosts the british museum", "new york is great and so is london", "i like london better than new york"]) y_train = [[0],[0],[0],[0] ,[0],[0],[1],[1] ,[1],[1],[1],[1] ,[2],[2]] X_test = np.array([''nice day in nyc'', ''the capital of great britain is london'', ''i like london better than new york'', ]) target_names = [''Class 1'', ''Class 2'',''Class 3''] classifier = Pipeline([ (''vectorizer'', CountVectorizer(min_df=1,max_df=2)), (''tfidf'', TfidfTransformer()), (''clf'', OneVsRestClassifier(LinearSVC()))]) classifier.fit(X_train, y_train) predicted = classifier.predict(X_test) for item, labels in zip(X_test, predicted): print ''%s => %s'' % (item, '', ''.join(target_names[x] for x in labels))

SALIDA

nice day in nyc => Class 1 the capital of great britain is london => Class 2 i like london better than new york => Class 3

Me gustaría verificar la precisión entre Training y Test Dataset. La función de puntaje no funciona para mí, muestra un error que indica que no se puede aceptar el valor de multilable

>>> classifier.score(X_train, X_test)

NotImplementedError: la puntuación no es compatible con clasificadores multilabel

Por favor, ayúdenme a obtener resultados precisos para los datos de entrenamiento y prueba, y elija un algoritmo para nuestro caso de clasificación.