Introducción al Machine Learning #4 - Conjuntos de Datos
Introducción:
En el articulo pasado hablamos sobre los algoritmos de aprendizaje, si aun no lo has visto, te recomiendo que lo hagas: https://www.pythondiario.com/2017/12/introduccion-al-machine-learning-3.html.
Perfecto, ya conocemos los distintos algoritmos de aprendizaje, eso es una parte muy importante de conocer, ya que sabemos de que tipo es el problema y como podremos solucionarlo.
Hoy hablaremos de datos, tener un conjunto de datos bien hecho es un factor que influye mucho en que tan bien aprenderá nuestro algoritmo.
Conjuntos de Datos:
Cargando los Conjuntos de Datos:
from sklearn import datasets iris = datasets.load_iris()
Ahora, la variable iris contiene todos los datos, los cuales podemos manipularlos manualmente. Si utilizamos el método type() para ver que tipo de datos es nuestra variable "iris":
type(iris)
Como pueden observar, el tipo de datos de "iris" es Bunch. Resumiendo, el tipo Bunch es como un tipo de diccionario.
Si utilizamos el método dir() para ver los métodos y atributos que contiene load_iris() veremos los siguiente:
dir(iris)
iris.DESCR
Luego tenemos el atributo "feature_names", el cual contiene una lista con los nombres de las características:
iris.feature_names
Luego, tenemos al atributo "target_names", el cual contiene una lista con los nombres de cada tipo de flor:
iris.target_names
Por ultimo tenemos a los atributos "data" y "target", "data" contiene todos los datos de las medidas de los tipos de flores, mientras que "taget" contiene las etiquetas con las cuales etiquetaremos a cada conjunto de datos dentro de "data", de esta manera el algoritmo se los aprenderá los datos según su etiqueta, para luego poder predecir nuevos datos sin etiquetas, por ello, se le llama problema de clasificación, por que lo que queremos es que el algoritmo clasifique nuevos datos:
iris.data
Observen, que estamos en presencia de una lista bidimensional con 150 filas y 4 columnas. Cada fila es un conjunto de medidas perteneciente a un tipo de flor. Cada columna es una característica diferente, las cuales son: sepal length (cm), sepal width (cm), petal length (cm), petal width (cm).
iris.target
En "target" se encuentran 150 elementos, los primeros 50 son "0", los otros 50 son "1", y los últimos 50 son "2". Estos elementos son los elementos que etiquetaran a los conjuntos de datos dentro de "data". Los "0" representan el tipo de iris "setosa", los "1" representan al tipo de iris "versicolor", y los "2" representan a el tipo de iris "virginica". Los primeros 50 elementos (0) serán asignados a los primeros 50 conjuntos de "data", los otros 50 elementos (1) serán asignados a los otros 50 conjuntos de "data", y los últimos 50 elementos (2) serán asignados a los últimos conjuntos de "data".
Muy bien, e hablado de asignación y clasificación, pero hay que tener en claro que todo esto sucederá al momento de entrenar el algoritmo (en el próximo articulo), por ahora estos datos son independientes.
Conjuntos de Entrenamiento y Conjuntos de Prueba:
Muy bien, siguiendo con lo que habíamos hablado en el principio. Es una practica común separar nuestros datos, y es lo que haremos, de esta manera en el próximo articulo nos centraremos en los algoritmos.
En la libreria scikit-learn, existe un modulo llamada "model_selection", el cual contiene un metodo que nos permite separar nuestros datos en conjuntos de entrenamiento y 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)
Como pueden observar, definino 4 variables al mismo tiempo (x_train, x_test, y_train, y_test), y utilizamos el metodo "train_test_split()" al cual le pasamos como argumentos a "iris.data" y "iris.target". Por ejemplo si mostramos en pantalla las variables de test:
x_test
y_test
Como pueden observar, el método para separar lo datos, escoge los datos al azar para luego hacer pruebas. Las variables "x" contienen los datos, las medidas de las flores, mientras que las variables "y" contiene las etiquetas.
Bueno, creo que eso esta bien por ahora, mi objetivo era explicar lo de los datos, para luego centrar más en el entrenamiento de los algoritmos.
Comparte tu experiencia con nosotros. Si tienes alguna duda, no dudes en preguntar.
Mi nombre es Luis, y les deseo un Feliz Año Nuevo a todos ustedes :D.
-
Gracias por tus buenos deseos y tu dedicación
-
Esta intersante y exitos este 2018 a aeguir adelñante con tus proyectos
-
Muchas gracias, me fue de gran ayuda 😀
Deja una respuesta
excelente, muy bien explicado