Análisis del árbol de decisiones y la agrupación en clústeres de K-medias mediante el conjunto de datos Iris.

Contenidos

Este artículo fue publicado como parte del Blogatón de ciencia de datos

Introducción:

Como todos sabemos, la Inteligencia Artificial se está utilizando ampliamente a nuestro alrededor: desde leer las noticias en su dispositivo móvil o analizar esos datos complejos en su lugar de trabajo, la IA ha mejorado la velocidad, precisión y efectividad del esfuerzo humano. Los avances en IA nos han ayudado a lograr cosas que antes pensábamos que no eran posibles. Incluso tener una pizza de tu restaurante favorito en casa está a solo un clic de distancia, gracias a la IA.

En pocas palabras, la inteligencia artificial significa una computadora o un programa de computadora que imita la inteligencia humana. Se logra aprendiendo cómo piensa, aprende, decide y trabaja el cerebro humano mientras resuelve un problema. Los resultados de este estudio se utilizan luego como base para desarrollar software y sistemas inteligentes.

Hay 4 tipos de aprendizaje:

Aprendizaje supervisado.

Aprendizaje sin supervisión.

Aprendizaje semi-supervisado.

Aprendizaje reforzado.

SupervisadoSin supervisiónSemi-supervisadoReforzado
El aprendizaje supervisado es cuando el modelo se entrena en un conjunto de datos etiquetado.El aprendizaje no supervisado es cuando el modelo se entrena en un conjunto de datos sin etiquetar, depende del algoritmo encontrar patrones subyacentes en los datos.Se sitúa entre el aprendizaje supervisado y no supervisado, en esto, algunos datos de aprendizaje están etiquetados y otros no.El algoritmo evalúa su rendimiento en función de las respuestas de retroalimentación y reacciona en consecuencia.

Este blog cubre el aprendizaje supervisado y no supervisado de la IA, utilizando el conjunto de datos de Python e Iris.

Tabla de contenido:

  1. Introducción
  2. Conjunto de datos de iris
  3. Aprendizaje supervisado
  4. Árbol de decisión
  5. Regresión logística
  6. Aprendizaje sin supervisión
  7. Agrupación de K-medias
  8. Conclusión y referencias

Conjunto de datos de iris:

El conjunto de datos contiene 3 clases con 50 instancias cada una y 150 instancias en total, donde cada clase se refiere a un tipo de planta de iris.

Clase: Iris Setosa, Iris Versicolour, Iris Virginica

El formato de los datos: (longitud del sépalo, ancho del sépalo, largo del pétalo, ancho del pétalo)

20733iris-3539434

Entrenaremos nuestros modelos en función de estos parámetros y los usaremos para predecir las clases de flores.

Entendiendo los datos:

Descargar el conjunto de datos de Iris de https://www.kaggle.com/uciml/iris

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
iris =   pd.read_csv("Iris.csv") #Iris.csv is now a pandas dataframe
print(iris.head()) #prints first 5 values
print(iris.describe()) #prints some basic statistical details like percentile,mean, std etc. of the data frame
16566iris-head_-2786086
iris.head ()
42140iris-describe-3459342
iris.describe ()

Visualizando los datos usando matplotlib:

iris.plot(kind="scatter", x="SepalLengthCm",   y="SepalWidthCm")
plt.show()
75894scatter_plot-6136253
Gráfico de dispersión

Visualización de los datos usando las curvas de andrew de pandas:

Las curvas de Andrews tienen la forma funcional:

f

x_4 sin (2t) + x_5 cos (2t) +…

Donde los coeficientes x corresponden a los valores de cada dimensión y t está espaciado linealmente entre -pi y + pi. Cada fila del marco corresponde a una única curva.

from pandas.plotting import andrews_curves
andrews_curves(iris.drop("Id", axis=1), "Species")
plt.show()
74761andrews20curves-3533825
Gráfico de curvas de Andrews

Procesamiento previo del conjunto de datos:

Usando una biblioteca incorporada llamada ‘train_test_split’, que divide nuestro conjunto de datos en una proporción de 80:20. El 80% se utilizará para entrenamiento, evaluación y selección entre nuestros modelos y el 20% se retendrá como un conjunto de datos de validación.

from sklearn.model_selection import train_test_split
x = iris.iloc[:, :-1].values #last column values excluded
y = iris.iloc[:,   -1].values #last column value
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=0)  #Splitting the dataset into the Training set and Test set

Aprendizaje supervisado :

Los algoritmos de aprendizaje automático supervisados ​​están entrenados para encontrar patrones utilizando un conjunto de datos. El proceso es simple, toma lo que se ha aprendido en el pasado y luego lo aplica a los nuevos datos. El aprendizaje supervisado utiliza ejemplos etiquetados para predecir patrones y eventos futuros.

Por ejemplo, cuando le enseñamos a un niño que 2 + 2 = 4 o le señalamos la imagen de cualquier animal para que sepa cómo se llama.

El aprendizaje supervisado se divide a su vez en:

Clasificación: La clasificación predice las etiquetas de clase categóricas, que son discretas y desordenadas. Es un proceso de dos pasos, que consta de un paso de aprendizaje y un paso de clasificación. Hay varios algoritmos de clasificación como: «Clasificador de árbol de decisión», «Bosque aleatorio», «Clasificador de Bayes ingenuo», etc.

Regresión: La regresión generalmente se describe como la determinación de una relación entre dos o más variables, como predecir el trabajo de una persona en función de los datos de entrada X. Algunos de los algoritmos de regresión son: «Regresión logística», «Regresión de lazo», «Regresión de cresta», etc. .

21093capture-5016285
ejemplo de aprendizaje supervisado

Clasificador de árbol de decisión:

El motivo general de usar un árbol de decisión es crear un modelo de entrenamiento que pueda usarse para predecir la clase o el valor de las variables objetivo aprendiendo reglas de decisión inferidas de datos anteriores (datos de entrenamiento).

Intenta resolver el problema mediante la representación de árbol. Cada nodo interno del árbol corresponde a un atributo y cada nodo hoja corresponde a una etiqueta de clase.

Usando el árbol de decisión en el conjunto de datos Iris:

from sklearn.tree import   DecisionTreeClassifier
from sklearn.metrics import accuracy_score
classifier   = DecisionTreeClassifier()
classifier.fit(x_train,   y_train) #training the classifier
y_pred   = classifier.predict(x_test) #making precdictions
print(classification_report(y_test,   y_pred)) #Summary of the predictions made by the   classifier
print(confusion_matrix(y_test, y_pred)) #to evaluate the quality of the output
print('accuracy   is',accuracy_score(y_pred,y_test)) #Accuracy   score

Precisión: precisión de las predicciones positivas.

Recuperación: fracción de positivos que se identificaron correctamente.

Puntaje F1: ¿Qué porcentaje de predicciones positivas fueron correctas?

macro avg – promediando la media no ponderada por etiqueta

promedio ponderado: promediando la media ponderada de soporte por etiqueta

Mapa de calor para la matriz de confusión:

import seaborn as sns
cm  = confusion_matrix(y_test, y_pred) #Transform to df
cm_df = pd.DataFrame(cm,index = ['setosa','versicolor','virginica'], columns = ['setosa','versicolor','virginica'])
plt.figure(figsize=(5.5,4))
sns.heatmap(cm_df,   annot=True)
plt.ylabel('True label')
plt.xlabel('Predicted label')
plt.show()
65665heatmap-1821488
Mapa de calor de la matriz de confusión

Una idea que podemos obtener de la matriz es que el modelo fue muy preciso al clasificar Setosa y Virginica (Verdadero Positivo / Todos = 1.0). Sin embargo, la precisión de Versicolor fue menor (13/14 = 0,928).

Aprendizaje sin supervisión:

El aprendizaje no supervisado se utiliza contra datos sin etiquetas históricas. El sistema no está sujeto a un conjunto predeterminado de salidas, correlaciones entre entradas y salidas o una «respuesta correcta». El algoritmo debe averiguar lo que está viendo por sí mismo, ya que no tiene ningún almacenamiento de puntos de referencia. El objetivo es explorar los datos y encontrar algún tipo de patrones o estructuras.

El aprendizaje no supervisado se puede clasificar en:

Agrupación: La agrupación es la tarea de dividir la población o los puntos de datos en varios grupos, de modo que los puntos de datos de un grupo sean homogéneos entre sí que los de diferentes grupos. Existen numerosos algoritmos de agrupación, algunos de ellos son: «algoritmos de agrupación de K-medias», «cambio medio», «agrupación jerárquica», etc.

Asociación: Una regla de asociación es un método de aprendizaje no supervisado que se utiliza para encontrar las relaciones entre variables en una gran base de datos. Determina el conjunto de elementos que ocurren juntos en el conjunto de datos.

98361unsuper-8669081
ejemplo de aprendizaje no supervisado

Agrupación de K-medias:

El objetivo del algoritmo de agrupación en clústeres de K-medias es encontrar grupos en los datos, con el número de grupos representado por la variable K. El algoritmo funciona de forma iterativa para asignar cada punto de datos a uno de los K grupos en función de las características que se proporcionan. .

Los resultados de ejecutar un K-means en un conjunto de datos son:

Centroides K: centroides para cada uno de los grupos K identificados en el conjunto de datos.

Etiquetas para los datos de entrenamiento: conjunto de datos completo etiquetado para garantizar que cada punto de datos se asigne a uno de los clústeres.

Usando la agrupación en clústeres de K-means en el conjunto de datos Iris:

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
iris_data=load_iris()   #loading iris dataset from sklearn.datasets
iris_df = pd.DataFrame(iris_data.data, columns = iris_data.feature_names) #creating dataframe
kmeans = KMeans(n_clusters=3,init="k-means++",   max_iter = 100, n_init = 10, random_state = 0) #Applying Kmeans classifier
y_kmeans = kmeans.fit_predict(x)
print(kmeans.cluster_centers_) #display cluster centers
plt.scatter(x[y_kmeans   == 0, 0], x[y_kmeans == 0, 1],s = 100, c="red", label="Iris-setosa")
plt.scatter(x[y_kmeans   == 1, 0], x[y_kmeans == 1, 1],s = 100, c="blue", label="Iris-versicolour")
plt.scatter(x[y_kmeans   == 2, 0], x[y_kmeans == 2, 1],s = 100, c="green", label="Iris-virginica")   #Visualising the clusters - On the first two columns
plt.scatter(kmeans.cluster_centers_[:,   0], kmeans.cluster_centers_[:,1],s = 100, c="black", label="Centroids")   #plotting the centroids of the clusters
plt.legend()
plt.show()
11191kmc-2567246
Gráfico de dispersión de la agrupación en clústeres de K-medias

Una idea que podemos obtener del diagrama de dispersión es que la precisión del modelo para determinar Setosa y Virginica es comparativamente más a Versicolour.

Conclusión:

Hemos explorado y preprocesado el conjunto de datos de Iris utilizando sklearn. conjunto de datos, así como utilizar el archivo Iris.csv. Además, aprendí sobre el aprendizaje supervisado y no supervisado e implementé el algoritmo de árbol de decisión y el algoritmo de agrupamiento de K-means.

Referencias:

https://www.kaggle.com/sixteenpython/machine-learning-with-iris-dataset

https://towardsdatascience.com/exploring-classifiers-with-python-scikit-learn-iris-dataset-2bcb490d2e1b

https://scikit-learn.org/stable/

https://certes.co.uk/types-of-artificial-intelligence-a-detailed-guide/

Sobre el Autor:

Hola lector, soy Yashi Saxena, y actualmente trabajo en TCS como ingeniero de sistemas. AI, ML y NLP siempre han sido mi interés, así que aquí estoy haciendo un esfuerzo para aprender más sobre este campo. Puedes conectarte conmigo en Linkedin: https://www.linkedin.com/in/yashi-saxena-7a9522194/

Los medios que se muestran en este artículo no son propiedad de DataPeaker y se utilizan a discreción del autor.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.