Clasificador Multi-clase de flores Iris¶
Descripcion¶
En aprendizaje automático y estadística, la clasificación es el problema de identificar a cuál de un conjunto de categorías (subpoblaciones) pertenece una nueva observación, sobre la base de un conjunto de datos de formación que contiene observaciones (o instancias) cuya categoría de miembros es conocida (Definicion tomada de Wikipedia.). El siguiente es un ejemplo de Clasificación multi-clase. El dataset usado es el que provee la libreria de Scikit-Learn. Se ha entrenado los datos usando el algoritmo de K- vecinos más cercanos. El resultado es una clasificación con un 97.36% de precisión.
Importar las librerias¶
Lo primero que se debe realizar es importar las librerias necesarias para construir el clasificador.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
Luego se cargan los datos a un objeto con nombre iris
iris=load_iris()
Este objeto iris esta compuesto por las claves 'data', 'target', entre otras:
iris.keys()
iris["target_names"]
Echemos un vistazo a las 10 primeras muestras de este dataset.
iris["data"][0:10]
Para estas 10 muestras, tenemos que pertenecen a la clase setosa representada por el valor 0
iris["target"][0:10]
Ahora se divide el conjunto de datos entre un 75% datos de entrenamiento y un 25% datos de prueba:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test=train_test_split(iris["data"],iris["target"], test_size=0.25)
X_train.shape
y_train.shape
Luego se entrena el algoritmo K-vecinos más cercanos con los datos de entrenamiento, usando el valor de 5 vecinos:
from sklearn.neighbors import KNeighborsClassifier
knn=KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
Posteriormente, se prueba la exactitud del modelo sobre los datos de prueba:
knn.score(X_test,y_test)
Finalmente, predecimos a qué clase pertenecería un flor con las medidas 2.3, 2.5, 1.4 y 4.3:
knn.predict([[2.3,2.5,1.4,4.3]])
Lo cual nos indica que la flor pertenecería a la clase Setosa.