Cómo ejecutar los datos de prueba y evaluar un modelo de aprendizaje supervisado svm
Aprendizaje supervisado
es una tarea de aprendizaje automático que aprende de los datos de análisis predictivo que ha sido etiquetados. Una manera de pensar sobre el aprendizaje supervisado es que el etiquetado de los datos se realiza bajo la supervisión de la modeler- aprendizaje no supervisado, por el contrario, no requiere datos etiquetados. El aprendizaje supervisado se realiza con frecuencia utilizando un algoritmo de clasificación.Cómo ejecutar los datos de prueba
El uso de 10 por ciento de los casos 150 del conjunto de datos le da 15 puntos de datos de prueba para ejecutar a través del modelo. Vamos a ver cómo su modelo predictivo va a realizar. Escriba el siguiente listado de código en el intérprete:
>>> Predicho = svmClassifier.predict (X_test) >>> predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2])
los predecir función en la primera línea de código es lo que hace la predicción, como habrás adivinado. Toma los datos de prueba como entrada y salida a los resultados en la variable previsto. La segunda línea imprime la salida.
La última línea de la sección de código es la salida, o predicción: una serie de 15 - es decir, el 10 por ciento del conjunto de datos de la muestra, que es el tamaño del conjunto de datos de prueba. Los números de la matriz representan las clases Iris Flower.
¿Cómo evaluar el modelo
Para evaluar la exactitud de su modelo, puede comparar la matriz de salida con el y_test array. Para este pequeño conjunto de datos de la muestra, se puede deducir fácilmente cómo se realiza por ver que la matriz de salida de la función de predecir es casi el mismo que el y_test array. La última línea del código es una simple verificación de la igualdad entre los dos conjuntos, suficiente para este caso de prueba simple.
Aquí está el código:
>>> Predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2]) >>> y_testarray ([0, 0, 2, 2 , 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) >>> predijo y_testarray == ([Real, True, True, True, True, True, True, True, True , True, True, True, False, True, True], dtype = bool)
En cuanto a la matriz de salida con toda la Boolean (Cierto y FalsoValores), se puede ver que el modelo predijo todos menos uno de los resultados. En el punto de datos decimotercero, predijo 1 (versicolor), cuando debería haber sido 2 (Virginica). los Falso valor (s) indican que el modelo predijo la clase Iris incorrecto para ese punto de datos. El porcentaje de predicciones correctas determinará la precisión del modelo de predicción.
En este caso sólo tiene que utilizar división básica y obtener la precisión:
resultados correctos / tamaño de la prueba => 14/15 => 0,9333 o 93,33 por ciento
No es ninguna sorpresa que el modelo no pudo predecir Virginica o Versicolor- que claramente no son separables por una línea recta. Una falla en las predicciones Setosa, sin embargo, sería sorprendente porque Setosa es claramente linealmente separables. Aún así, la precisión fue de 14 sobre 15, o 93,33 por ciento.
Para una prueba de conjunto con más puntos de datos, es posible que desee utilizar el métrica módulo para hacer sus mediciones. El siguiente código tendrá la precisión del modelo:
>>> De métricas de importación sklearn >>> metrics.accuracy_score (y_test, predicho) 0.93333333333333335
Otra herramienta de medición útil es la matriz de confusión. Sí, es real. Es una matriz (formato tabular) que muestra las predicciones de que el modelo hecho en los datos de prueba. Aquí está el código que muestra la matriz de confusión:
>>> Metrics.confusion_matrix (y_test, predicho) matriz ([[5, 0, 0],
[0, 2, 0],
[0, 1, 7]])
La línea diagonal desde la esquina superior izquierda a la esquina inferior derecha es el número de predicciones correctas para cada fila. Cada fila corresponde a una clase de Iris.
Por ejemplo: La primera fila corresponde a la clase Setosa. El modelo predijo cinco puntos de datos de prueba correcto y no tenía errores que predicen la clase Setosa. Si tuviera un error, un número distinto de cero estaría presente en cualquiera de las columnas de esa fila.
La segunda fila corresponde a la clase versicolor. El modelo predijo dos puntos de datos de prueba correctos y sin errores. La tercera fila corresponde a la clase Virginica. El modelo predijo siete puntos de datos de prueba correctas, pero también tenía un error.
El modelo predijo erróneamente una observación de Virginica para un versicolor. Se puede decir que al ver la columna donde el error está apareciendo. Columna 1 pertenece a versicolor.
La precisión de los resultados de un modelo predictivo afectará directamente a la decisión de desplegar que Modelo- mayor será la precisión, el apoyo más fácilmente se puede reunir para implementar el modelo.
Al crear un modelo predictivo, empezar por la construcción de una solución de trabajo sencilla rápidamente - y luego seguir construyendo iterativamente hasta obtener el resultado deseado. Pasar meses la construcción de un modelo predictivo - y no ser capaz de mostrar a sus partes interesadas ningún resultado - es una manera segura de perder la atención y el apoyo de sus grupos de interés.
Aquí está la lista completa del código para crear y evaluar un modelo de clasificación SVM:
>>> From sklearn.datasets importar load_iris >>> from sklearn.svm importación LinearSVC >>> from sklearn cross_validation importación >>> from métricas importación sklearn >>> iris = load_iris () >>> X_train, X_test, y_train, y_test = cross_validation.train_test_split (iris.data, iris.target, test_size = 0,10, random_state = 111) >>> svmClassifier = LinearSVC (random_state = 111) >>> svmClassifier.fit (X_train, y_train) >>> predijo = svmClassifier. predecir (X_test) >>> predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2]) >>> y_testarray ([0, 0 , 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) >>> metrics.accuracy_score (y_test, predicho) 0.93333333333333335 >>> predicho == y_testarray ([Real , True, True, True, True, True, True, True, True, True, True, True, False, True, True], dtype = bool)