Este es un ejemplo introductorio en el aprendizaje automático y el reconocimiento de patrones de ciertos datos. Un programa Python está programado para predecir el tipo de plantas.
Para ello se utiliza el conjunto de Iris Dataset. Se utiliza un árbol de decisión para clasificar los datos. Este tutorial utiliza Python 3.6. Para este tutorial se requiere Python 3.5 o posterior. Muestra cómo utilizar el Aprendizaje Automático para enseñar a un programa a crear patrones a partir de datos existentes y calcular predicciones a partir de ellos.
¿Qué es el conjunto de Iris Dataset?
El Iris Dataset (conjunto de datos del iris) es un conjunto de datos multivariado que contiene 50 muestras de datos de tres especies de plantas del "iris" cada una. A partir de este conjunto de datos se pueden identificar ciertos patrones (patrones de datos) con la ayuda del aprendizaje automático. Este conjunto de datos es utilizado a menudo por principiantes para proyectos de aprendizaje de máquinas.
¿Qué es un Decision Tree (árbol de decisión)?
Se utiliza un "árbol de decisiones" para tomar decisiones. Es similar a un diagrama de flujo pero consiste en nodos donde las decisiones se toman en un sistema binario (sí o no). Cada decisión está representada por un nodo. Un árbol de decisión es muy adecuado para datos con pocos atributos y sólo requiere menos preparación de datos. Para cantidades mayores de datos, debe utilizar un algoritmo diferente que pueda hacer predicciones mucho más precisas.
Requisitos previos
Los siguientes paquetes deben estar instalados:
- NumPy (>= 1.11.0),
- SciPy (>= 0.17.0),
- joblib (>= 0.11) y
- scikit-learn
scikit-learn se puede instalar a través del gestor de paquetes pip:
pip install scikit-learn
Instalación en el CMD de Windows:
python -m pip install scikit-learn
Programa
Ahora se crea un programa Python, que debería aprender del conjunto de datos existente y descubrir ciertos patrones. El paquete "numby" se utilizará para almacenar el conjunto de datos en una matriz. "Numby" se utiliza siempre cuando se trabaja con conjuntos de datos, por ejemplo, Machine Learning.
El paquete "Scikit-learn" se utiliza para el aprendizaje automático. El programa "tree" (para utilizar un árbol de decisión) y el programa "accuracy_score" son llamados por este paquete. El conjunto de datos Iris se encuentra en el paquete "sklearn.datasets".
from sklearn import tree
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
import numpy
#Preparación del conjunto de datos - Carga de los datos mediante iris.data - Carga de las descripciones de los datos mediante iris.target
#Los nombres de las especies de plantas se pueden recuperar mediante "iris_target_names". Los nombres se almacenan como IDs (números) en "data".
iris = load_iris()
x_coordinate = iris.data
y_coordinate = iris.target
plant_names = iris.target_names
#Crear índices aleatorios utilizados para recuperar los datos del conjunto de datos del iris
array_ids = numpy.random.permutation(len(x_coordinate))
#En "train" los datos se utilizan para el aprendizaje para el programa de Aprendizaje Automático.
#En "real" se almacenan los datos reales, que se utilizan para comprobar los datos previstos.
#Los últimos 15 valores se utilizan para "real" para la comprobación, el resto para "tren".
x_coordinate_train = x_coordinate[array_ids[:-15]]
x_coordinate_real = x_coordinate[array_ids[-15:]]
y_coordinate_train = y_coordinate[array_ids[:-15]]
y_coordinate_real = y_coordinate[array_ids[-15:]]
#Clasificar los datos utilizando un árbol de decisión y entrenarlos con los datos creados previamente.
data_classification = tree.DecisionTreeClassifier()
data_classification.fit(x_coordinate_train,y_coordinate_train)
#Crear predicciones a partir de datos existentes (en un conjunto de datos "real")
prediction = data_classification.predict(x_coordinate_real)
#Muestra los nombres predichos
print(prediction)
#Los valores reales
print(y_coordinate_real)
#Calcular la precisión de los datos pronosticados -
#Method accuracy_score() obtiene el valor predicho y el valor real devuelto
print("Accuracy in percent: %.2f" %((accuracy_score(prediction,y_coordinate_real)) * 100))
If this program code is then executed in Python, then the following is output. The output varies after each execution of this program code. The names of the plant species are stored and output as IDs in an array.
Output:
[1 1 0 2 2 0 1 2 1 0 2 1 2 0 2]
[2 1 0 2 2 0 1 2 1 0 2 1 2 0 2]
Accuracy in percent: 93.33
Las identificaciones (IDs) de las especies de plantas del iris: 0 es el iris setosa, 1 es el iris versicolor, 2 es el iris virginica
La primera línea contiene predicciones calculadas creadas por el aprendizaje automático.
La segunda fila contiene los valores reales utilizados para verificar la exactitud de la predicción calculada por este algoritmo. Como se puede ver aquí, las especies de plantas se predijeron correctamente a alrededor del 93%. La precisión de las predicciones puede cambiar dependiendo de la llamada de este programa y de la cantidad de datos utilizados.
Pruebe también este programa con conjuntos de datos más grandes que los "15" utilizados aquí. Cuantos más datos suministre a este programa, mejor podrá reconocer patrones de datos y hacer predicciones a partir de ellos. El aprendizaje automático, como puede ver aquí en este ejemplo introductorio, se utiliza, por ejemplo, en logística para calcular la cantidad de mercancías necesarias en el futuro. Por ejemplo, los datos existentes sobre el número de pedidos de mercancías se utilizan para calcular este pronóstico.