Introducción al aprendizaje automático con Python

El aprendizaje automático es un tipo de inteligencia artificial (IA) que proporciona a las computadoras la capacidad de aprender sin ser programadas explícitamente. El aprendizaje automático se centra en el desarrollo de programas informáticos que pueden cambiar cuando se exponen a nuevos datos. En este artículo, veremos los conceptos básicos del aprendizaje automático y la implementación de un algoritmo de aprendizaje automático simple usando python.
 

Configuración del entorno

La comunidad de Python ha desarrollado muchos módulos para ayudar a los programadores a implementar el aprendizaje automático. En este artículo, utilizaremos los módulos numpy, scipy y scikit-learn. Podemos instalarlos usando el comando cmd: 
 

pip install numpy scipy scikit-learn 

Una mejor opción sería descargar los paquetes miniconda o anaconda para python, que vienen incluidos con estos paquetes. Siga las instrucciones dadas aquí para usar anaconda. 
 

Descripción general del aprendizaje automático

El aprendizaje automático implica que una computadora se entrene utilizando un conjunto de datos dado y use este entrenamiento para predecir las propiedades de nuevos datos dados. Por ejemplo, podemos entrenar una computadora al alimentarla con 1000 imágenes de gatos y 1000 imágenes más que no son de un gato, y decirle cada vez a la computadora si una imagen es un gato o no. Luego, si le mostramos a la computadora una nueva imagen, a partir del entrenamiento anterior, la computadora debería poder decir si esta nueva imagen es un gato o no. 
El proceso de entrenamiento y predicción implica el uso de algoritmos especializados. Alimentamos los datos de entrenamiento a un algoritmo, y el algoritmo usa estos datos de entrenamiento para dar predicciones sobre nuevos datos de prueba. Uno de esos algoritmos es K-Nearest-Neighborclasificación (clasificación KNN). Toma datos de prueba y encuentra los valores de datos k más cercanos a estos datos del conjunto de datos de prueba. Luego selecciona el vecino de máxima frecuencia y da sus propiedades como resultado de la predicción. Por ejemplo, si el conjunto de entrenamiento es:
 

tamaño_pétalo flor_tipo
1 a
2 b
1 a
2 b
3 C
4 d
3 C
2 b
5 a

Ahora queremos predecir el tipo de flor para un pétalo de 2,5 cm de tamaño. Así que si decidimos que no. de vecinos (K)=3, vemos que los 3 vecinos más cercanos de 2.5 son 1, 2 y 3. Sus frecuencias son 2, 3 y 2 respectivamente. Por lo tanto, el vecino de máxima frecuencia es 2 y el tipo de flor que le corresponde es b. Entonces, para un pétalo de tamaño 2.5, la predicción será una flor tipo b. 
 

Implementación del algoritmo de clasificación KNN usando Python en el conjunto de datos IRIS

Aquí hay un script de python que demuestra el algoritmo de clasificación knn. Aquí usamos el famoso conjunto de datos de la flor del iris para entrenar a la computadora y luego le damos un nuevo valor a la computadora para hacer predicciones al respecto. El conjunto de datos consta de 50 muestras de cada una de las tres especies de Iris (Iris setosa, Iris virginica e Iris versicolor). Se miden cuatro características de cada muestra: La longitud y el ancho de los sépalos y pétalos, en centímetros. 
Entrenamos nuestro programa usando este conjunto de datos y luego usamos este entrenamiento para predecir especies de una flor de iris con medidas dadas. 
Tenga en cuenta que es posible que este programa no se ejecute en el IDE de Geeksforgeeks, pero puede ejecutarse fácilmente en su intérprete local de python, siempre que haya instalado las bibliotecas necesarias.
 

Python

# Python program to demonstrate
# KNN classification algorithm
# on IRIS dataset
  
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
from sklearn.model_selection import train_test_split
  
iris_dataset=load_iris()
  
X_train, X_test, y_train, y_test = train_test_split(iris_dataset["data"], iris_dataset["target"], random_state=0)
  
kn = KNeighborsClassifier(n_neighbors=1)
kn.fit(X_train, y_train)
  
x_new = np.array([[5, 2.9, 1, 0.2]])
prediction = kn.predict(x_new)
  
print("Predicted target value: {}\n".format(prediction))
print("Predicted feature name: {}\n".format
    (iris_dataset["target_names"][prediction]))
print("Test score: {:.2f}".format(kn.score(X_test, y_test)))

Producción: 

Predicted target name: [0]
Predicted feature name: ['setosa']
Test score: 0.97

Explicación del programa: 
 

Entrenamiento del conjunto de datos

  • La primera línea importa el conjunto de datos del iris que ya está predefinido en el módulo sklearn. El conjunto de datos de iris es básicamente una tabla que contiene información sobre varias variedades de flores de iris.
  • Importamos el algoritmo kNeighborsClassifier y la clase train_test_split de sklearn y el módulo numpy para usar en este programa.
  • Luego encapsulamos el método load_iris() en la variable iris_dataset. Además, dividimos el conjunto de datos en datos de entrenamiento y datos de prueba usando el método train_test_split. El prefijo X en la variable denota los valores de las características (p. ej., la longitud de los pétalos, etc.) y el prefijo y denota los valores objetivo (p. ej., 0 para setosa, 1 para virginica y 2 para versicolor).
  • Este método divide el conjunto de datos en datos de entrenamiento y prueba aleatoriamente en una proporción de 75:25. Luego encapsulamos el método KNeighborsClassifier en la variable kn mientras mantenemos el valor de k=1. Este método contiene el algoritmo K vecino más cercano.
  • En la siguiente línea, ajustamos nuestros datos de entrenamiento en este algoritmo para que la computadora pueda entrenarse usando estos datos. Ahora la parte de entrenamiento está completa.

Prueba del conjunto de datos 

  • Ahora tenemos las dimensiones de una nueva flor en una array numpy llamada x_new y queremos predecir la especie de esta flor. Hacemos esto usando el método de predicción que toma esta array como entrada y escupe el valor objetivo predicho como salida.
  • Entonces, el valor objetivo pronosticado resulta ser 0, que significa setosa. Así que esta flor tiene buenas posibilidades de ser una especie de setosa.
  • Finalmente encontramos la puntuación de la prueba que es la relación de no. de predicciones encontradas correctas y total de predicciones realizadas. Hacemos esto utilizando el método de puntuación que básicamente compara los valores reales del conjunto de prueba con los valores predichos. 
     

Por lo tanto, vimos cómo funciona el aprendizaje automático y desarrollamos un programa básico para implementarlo usando el módulo scikit-learn en python.
Este artículo es una contribución de tkkhhaarree . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *