02 CalderonBermudo Maquinas Con Vectores de SoporteEjercicio Propuesto - Jupyter Notebook
02 CalderonBermudo Maquinas Con Vectores de SoporteEjercicio Propuesto - Jupyter Notebook
02 CalderonBermudo Maquinas Con Vectores de SoporteEjercicio Propuesto - Jupyter Notebook
Los datos
Para esta serie de conferencias, utilizaremos el famoso [conjunto de datos Flor de Iris] (http://en.wikipedia.org/wiki/Iris_flower_data_set
(http://en.wikipedia.org/wiki/Iris_flower_data_set)).
Los datos Flor de Iris o Iris de Fisher es un conjunto de datos multivariados introducido por Sir Ronald Fisher en el año 1936 como un ejemplo de análisis
discriminante.
El conjunto de datos consta de 50 muestras de cada una de las tres especies de Iris (Iris setosa, Iris virginica e Iris versicolor), haciendo 150 muestras
totales. Se midieron cuatro características de cada muestra: la longitud y el ancho de los sépalos y pétalos, en centímetros.
Out[1]:
In [2]: # Iris Versicolor
from IPython.display import Image
url = 'http://upload.wikimedia.org/wikipedia/commons/4/41/Iris_versicolor_3.jpg'
Image(url,width=300, height=300)
Out[2]:
Out[3]:
El conjunto de datos del iris contiene medidas para 150 flores de iris de tres especies diferentes.
** Crea un pairplot del conjunto de datos. ¿Qué especie de flor parece ser la más separable?**
In [3]: sns.pairplot(iris, hue='species')
plt.show()
Crea un gráfico kde de sepal_length vs sepal_width para la especie de flor setosa.
Entrena un modelo
Entrene un clasificador de máquinas de vectores de soporte.
Llame al modelo SVC() desde sklearn y ajuste el modelo a los datos de entrenamiento.
Out[10]: SVC()
In [11]: model.get_params()
accuracy 1.00 30
macro avg 1.00 1.00 1.00 30
weighted avg 1.00 1.00 1.00 30
¡Deberías haber notado que tu modelo es bastante bueno! Veamos si podemos ajustar los parámetros para tratar de mejorar (poco probable, y
probablemente estarás satisfecho con estos resultados en la realidad porque el conjunto de datos es bastante pequeño), pero solo quiero que practiques con
GridSearch.
Práctica Gridsearch
** Importe GridsearchCV de SciKit Learn.**
Cree un diccionario llamado param_grid y complete algunos parámetros para C and gamma.
In [16]: param_grid = {
'C': [0.1, 1, 10],
'gamma': [0.01, 0.1, 1]
}
** Cree un objeto GridSearchCV y ajústelo a los datos de entrenamiento. **
Out[17]: GridSearchCV(estimator=SVC(),
param_grid={'C': [0.1, 1, 10], 'gamma': [0.01, 0.1, 1]})
** Ahora tome ese modelo de cuadrícula y cree algunas predicciones utilizando el conjunto de pruebas y cree informes de clasificación y matrices de
confusión para ellos. ¿Pudiste mejorar? **
[[10 0 0]
[ 0 9 0]
[ 0 0 11]]
accuracy 1.00 30
macro avg 1.00 1.00 1.00 30
weighted avg 1.00 1.00 1.00 30
Deberías haber hecho lo mismo o exactamente lo mismo, esto tiene sentido, básicamente hay un solo punto que es demasiado ruidoso para comprenderlo,
lo que tiene sentido, no queremos tener un modelo de sobrecapa que sea capaz de atrapar esto.
¡Buen trabajo!