Está en la página 1de 14

Identificación y clasificación de granos de trigo usando el método de

agrupamiento K-means

Álvaro Renzo Mendoza Luque

Escuela Profesional de Ingeniería de sistemas,

Universidad Nacional del Altiplano Puno, Perú

amendozal@est.unap.edu.pe

RESUMEN

El informe trata sobre el uso de un algoritmo de agrupamiento (clustering), en el


que se hace uso del método de agrupamiento K-means para la base de datos
diabetes.csv; se hace el uso de Jupyter Lab, de las librerías de Sklearn, Scypi,
pandas y matplotlib, con objetivo de agrupar los datos para la identificación y
clasificación de los datos de diabetes.csv. Los resultados presentados en este
estudio indican que al aplicar K-means, con 3 clusters obtenidos por elbow
method, se optiene una clusterización del 100% de exactitud. En conclusión, este
software implica un código con Learning machine

PALABRAS CLAVE: Clustering, K-means, Diabetes.


ABSTRACT

This report deals with the use of a clustering algorithm, in which the K-means
grouping method is used for the diabetes.csv database; Jupyter Lab, from the
Sklearn, Scypi, Pandas bookstores, is used to group the data for the identification
and classification of diabetes.csv data. The results presented in this study
indicate that when applying K-means, with 3 clusters obtained by elbow method,
a 100% accuracy clustering is obtained. In conclusion, this software involves a
code with the Learning machine

KEY WORDS: Clustering, K-means, Diabetes.


INTRODUCCIÓN

La diabetes es una enfermedad metabólica de curso crónico, en el cual el cuerpo


no puede regular la glucemia y produce fallos en diferentes órganos. Los datos
utilizados en este trabajo pertenecen al tipo de diabetes gestacional, un tipo de
diabetes estacional reversible que se produce durante el 3er trimestre de la
gestación.

Con el uso de las técnicas de agrupamiento (clustering), primero se realizó


una búsqueda para la obtención optima del número de clusters, posteriormente
la que se comprobó; a su vez también se realizó un dendogram para la
visualización de la agrupación jerárquica del análisis correspondiente.
MATERIALES Y MÉTODOS

Jupyter Lab

Es un entorno de trabajo con interfaz flexible y potente para desarrollar código


en Python y otros leguajes de forma dinámica introduciendo bloques de código
producto del proyecto jupyter y sucesor de Jupyter Notebook [1]

Librerias

Pandas:

pandas es una herramienta de análisis y manipulación de datos de código abierto


rápida, potente, flexible y fácil de usar, construido sobre el lenguaje de
programación Python. [2]

Scipy:

es un ecosistema de software de código abierto basado en Python para


matemáticas, ciencias e ingeniería. [3]

NumPy:

NumPy es una biblioteca de Python utilizada para trabajar con matrices.

También tiene funciones para trabajar en el dominio de álgebra lineal,


transformada de Fourier y matrices.

NumPy fue creado en 2005 por Travis Oliphant. Es un proyecto de código abierto
y puede usarlo libremente.

NumPy significa Python numérico. [4]

Matplotlib
Matplotlib es una biblioteca completa para crear visualizaciones estáticas,
animadas e interactivas en Python. Es un proyecto patrocinado por NumFOCUS,
una organización benéfica sin fines de lucro 501 (c) (3) en los Estados Unidos.[5]
Sklearn
Es una biblioteca en Python que proporciona muchos algoritmos de aprendizaje
supervisados y sin supervisión. Está construido sobre algunas de las tecnologías
con las que quizás ya estés familiarizado, como NumPy, pandas y Matplotlib. La
funcionalidad que proporciona scikit-learn incluye:

 Regression, incluida la regresión lineal y logística


 Classification, incluidos los vecinos K más cercanos
 Clustering, incluidos K-Means y K-Means ++
 Model selection
 Preprocessing, incluida la normalización Min-Max [6]

Clustering

Es un método de cuantificación vectorial, originalmente a partir del


procesamiento de señales, que tiene como objetivo dividir n observaciones en k
grupos en los que cada observación pertenece al grupo con la media más
cercana (centros de grupo o centroide de grupo), que sirve como prototipo del
grupo. [7]

Dataset

La base de datos contiene datos correspondientes a la diabetes gestacional,


Estos datos se obtuvieron por los siguientes métodos: tensiometría,
antropometría, muestras de sangre, análisis genético(hisopado), encuesta y el
análisis de los niveles séricos de insulina de mujeres en el rango de edad de 21-
81 años.
Información de los Atributos

Tabla 01: Información de los Atributos

N° Variables Representación
1 Number of times pregnant preg

2 Plasma glucose concentration a 2 hours in an oral plas


glucose tolerance test

3 Diastolic blood pressure (mm Hg) pres

4 Triceps skin fold thickness (mm) skin

5 2-Hour serum insulin (mu U/ml) insu

6 Body mass index (weight in kg/(height in m)^2) mass


7 Diabetes pedigree function pedi
8 Age (years) age

Resumen Estadístico

TABLA 02: Resumen Estadístico de Diabetes dataset

N° ATRIBUTO Media Desviación mínimo Máximo


Estándar
1 preg 3 3.36957806 0 17
2 plas 117 31.9726182 0 119
3 pres 72 19.3558072 0 122
4 skin 23 15.9522176 0 99
5 insu 30.5 115.244002 0 846
6 mass 32 7.88416032 0 67.1
7 pedi 0.3725 0.3313286 0.078 2.42
8 age 29 11.7602315 21 81

Salida

TABLA 03: Salida de datos

N° Agrupación Cantidad
1 Grupo a 256
2 Grupo b 256
3 Grupo c 256
Mejor Valor: 3 Clusters.

Figura 1: Grafico del método del codo

RESULTADOS Y DISCUSIÓN

El Dataset diabetes fue clasificado usando el método de agrupamiento Kmeans.


Los gráficos se encuentran rotulados y se realizaron considerando las siete
columnas que contiene el dataset. El número de Clustes usados son tres
conforme al método del codo.

Grupo1

Grupo2

Grupo 3

Figura 2: SKIN-MASS
Grupo1

Grupo2

Grupo 3

Figura 3: AGE-PREG

Grupo1

Grupo2

Grupo 3

Figura 4: AGE-PRES
Grupo1

Grupo2

Grupo 3

Figura 5: INSU – PEDI

Grupo1

Grupo2

Grupo 3

Figura 6: AGE-PEDI
Grupo1

Grupo2

Grupo 3

Figura 7: MASS-INSU

Grupo1

Grupo2

Grupo 3

Figura 8: AGE-MASS
Grupo1

Grupo2

Grupo 3

Figura 9: PRES-MASS

Resultados

La cantidad de datos procesados corresponde al total de datos ingresados. En los


gráficos se puede evidenciar la relación entre los datos seleccionados, excepto en la figura 3 que
los datos se resultan ser independientes ante una relación posible. Evidentemente el algoritmo
funciono adecuadamente al agrupar en tres grupos con sus respectivos centroids.

TABLA 04: Resultados

N° Agrupación Cantidad %
1 Correctly Classified Instances 768 100%

CONCLUSION

En conclusión, en este trabajo se aplicó el algoritmo agrupamiento K-Means;


para el dataset diabetes; se hizo el uso del método del codo (elbow method) para
encontrar el numero apropiado de clusters a usar, siendo el numero 3 el óptimo
para la determinación del número de clusters a ser usado; el modelo tiene una
exactitud del 100%; esto se determinó en base a pruebas realizadas con la
agrupación de los datos de salida del Dataset y los determinados por el modelo,
implica un código con Learning machine
REFERENCIAS

[1] GitHub-Jupyter, «Jupyterlab,» [En línea]. Available: https://github.com


/jupyterlab/jupyterlab/. [Último acceso: 09 Julio 2020].

[2] Pandas, «Python Data Analysis Library,» [En línea]. Available: https://
pandas.pydata.org/. [Último acceso: 09 Julio 2020].

[3] Scipy, «Scipy,» [En línea]. Available: https://www.scipy.org/. [Último acceso:


09 Julio 2020].

[4] W3schools, «What is numpy?» [En línea]. Available:


https://www.w3schools.com/python/numpy_intro.asp [Último acceso: 10 Julio
2020].

[5] Mathplotlib, «Mathplotlib,» [En línea]. Available: https://matplotlib.org/.


[Último acceso: 10 Julio 2020].

[6] Codecademi, «What is Scklearn » [En línea]. Available:


https://www.codecademy.com/articles/scikit-learn [Último acceso: 10 Julio
2020].

[7] Wikipedia, «k-means clusterind» [En linea]. Available:


https://en.wikipedia.org/wiki/K-means_clustering [Último acceso: 10 Julio
2020].

Lectura de complemento

 Fordham.edu, «Pima Indians Diabetes Database» [En linea]. Available:


https://storm.cis.fordham.edu/~gweiss/data-mining/weka-data/diabetes.arff
[Último acceso: 10 Julio 2020].

 Ricardo Moya, « Pandas en Python, con ejemplos -Parte I- Introducción»


[En linea]. Available: https://jarroba.com/pandas-python-ejemplos-parte-i-
introduccion/[Último acceso: 09 Julio 2020].

 Gwydion Martin, «Primeros pasos con Jupyter Notebook»[En linea].


Available: https://www.adictosaltrabajo.com/2018/01/18/primeros-pasos-con-
jupyter-notebook/#:~:text=Jupyter%20Notebook%2C%20en%20adelante%
20Jupyter,como%20texto%2C%20gr%C3%A1ficas%20o%20im%C3%A1ge
nes.
ANEXO 1

CÓDIGO PYTHON

import pandas as pd #importando la libreria pandas


from sklearn.cluster import KMeans
from sklearn import metrics
from scipy.spatial.distance import cdist
import numpy as np
import matplotlib.pyplot as plt
lista = pd.read_csv('diabetes.csv')
lista.head(8)
lista.shape
skin = np.array(lista.skin)
mass = np.array(lista.mass)
plt.plot ()
plt.xlim ([ -5 , 70])
plt.ylim ([ 0 , 100 ])
plt.title ('Conjunto de datos')
plt.scatter (skin, mass)
plt.show ()
# k means determine k
distortions = []
K = range(1,10)
for k in K:
kmeanModel = KMeans(n_clusters=k).fit(X)
kmeanModel.fit(X)
distortions.append(sum(np.min(cdist(X, kmeanModel.cluster_centers_,
'euclidean'), axis=1)) / X.shape[0])
# Plot the elbow
plt.plot(K, distortions, 'bx-')
plt.xlabel('k')
plt.ylabel('Distortion')
plt.title('The Elbow Method showing the optimal k')
plt.show()
df=pd.DataFrame(lista)
x=df['mass'].values
y=df['pres'].values
info=df[['mass','pres']].to_numpy()
X=np.array(list(zip(x,y)))
kmeans=KMeans(n_clusters=3)
kmeans=kmeans.fit(X)
labels=kmeans.predict(X)
centroids=kmeans.cluster_centers_
colors=["m.","r.","y.","c.","b."]
for i in range(len(X)):
print("Cordenada: ",X[i],"Label: ",labels[i])
plt.plot(X[i][0],X[i][1],colors[labels[i]], markersize=10)
plt.scatter(centroids[:,0],centroids[:,1], marker='x',s=150, linewidths=5,
zorder=10)
plt.show()

También podría gustarte