Está en la página 1de 89

Universidad Nacional de Ingeniería (UNI)

Facultad
de
Ciencias y
Sistemas
(FCyS)
Ingeniería de Sistemas
Departamento de Informática
Inteligencia Artificial

Diseño e implementación de un sistema experto para la proyección de


ventas en la empresa Orbitech utilizando CommonKADS.

Integrantes:

● Br. Álvaro David González Ballesteros 2017-0384U

● Br. Dayana Loiret González Avilés 2017-0408U

● Br. Nishmi Alejandra Valverde López 2017-0683I

● Br. Rudy Ariel Latino Hernández 2018-1286U

Docente:

● Msc. Ing. Ariel Eduardo Chávez Toruño

Grupo:

4N1-IS
Managua, 24 de noviembre, 2022

2
ÍNDICE

INTRODUCCIÓN 5

OBJETIVOS 6
Objetivo General 6
Objetivos Específicos 6

PLANTEAMIENTO DEL PROBLEMA 7

JUSTIFICACIÓN 8

Capítulo 1 - NIVEL DE CONTEXTO 9


1.1 MODELO DE ORGANIZACIÓN 9
1.1.1 OM-1 Problemas y oportunidades 9
1.1.2 OM-2 Aspectos a considerar 11
1.1.3 OM-3 Descomposición de los procesos 12
1.1.4 OM-4 Tarjetas sobre recursos de reconocimiento 12
1.1.5 OM-5 Análisis de viabilidad 12
1.1.6 Árbol de problemas o análisis de árbol de fallas 13
1.1.7 Árbol de objetivo 14
1.1.8 FODA 15
1.1.9 Matriz de evaluación de factores internos (efi) 17
1.1.10 Matriz de evaluación de factores externos (efe) 17
1.11 Diagrama de organización 18
1.1.12 Fichas de procesos 18
1.1.13 Flujograma de procesos 19
1.2 MODELO DE TAREAS 20
1.2.1 TM-1 Análisis de tareas 20
1.2.2 TM-2 Ítem de conocimiento 21
1.3 MODELO DE AGENTES 21
1.3.1 AM-1 Agentes 21
1.3.2 OTA-1 Lista para documento de decisión de impactos 23
1.3.2.1 Matriz PAMA (Percepcion, Accion, Meta y Ambiente) 23

Capítulo 2 - NIVEL DE CONCEPTO 25


2.1 Modelo de conocimiento 25
2.1.1 KM-1 Documentación del modelo 25
2.1.2 Conocimiento de la tarea 26
2.1.2.1 Método de la tarea 26
2.1.3 Conocimiento inferencial 27
2.1.3.1 Inferencias 27
2.1.4 Conocimiento del dominio 28
2.1.4.1 Esquema del dominio 28
2.2 Modelo de comunicación 29
2.2.1 CM-1 Descripción de transacción 29
2.2.1.1 Plan de comunicación del proyecto 30

3
2.2.1.2 Diagrama de secuencia de la gestion de ventas 31
2.2.1.3 Diagrama de colaboracion de la gestion de ventas 31

Capítulo 3 - NIVEL DE IMPLEMENTACIÓN 32


3.1 Modelo de diseño 32
3.1.1 DM-1 Arquitectura del sistema 32
3.1.2 DM-2 Plataforma de implementación 32
3.1.3 DM-3 Especificación de los componentes de la arquitectura 33
3.1.3.1 Conocimiento de la tarea 34
3.1.4 DM-4 Especificación de la aplicación sobre la arquitectura 35
3.1.4.1 Diagramas de casos de uso 35
3.1.4.2 Diagramas de actividades 36
3.1.4.2.1. Registrar productos 36
3.1.4.2.2. Actualizar productos 36
3.1.4.2.3. Buscar productos 37
3.1.4.2.4. Dar de baja un producto 37
3.1.4.2.5. Generar reporte de venta 38
3.1.4.2.6. Generar reporte de inventario 38
3.1.4.3 Diagrama basado en conocimiento con ESTA 38

Capítulo 4 - MACHINE LEARNING 44


4.1 Lenguaje y entorno de ejecución 44
4.2 Librerías 45
4.3 Conjunto de datos 49
4.4 Importación de los datos al notebook 49
4.5 Información básicas del dataset 50
4.6 Limpieza de datos 53
4.7 Estadísticas básicas 53
4.8 Visualización de datos 59
4.8.1 Gráfico de líneas 60
4.8.2 Gráfico de barras 62
4.8.3 Gráfico de pastel 63
4.8.4 Histograma 64
4.8.5 Diagrama de cajas 64
4.8.6 Diagrama de dispersión 65
4.8.7 Mapa de calor 66
4.9 Algoritmos de Machine Learning 66
4.9.1 K Vecinos más cercanos 72
4.9.2 Árbol de decisiones 75
4.9.3 Bosques aleatorios 76
4.9.4 Regresión lineal 77
4.9.5 Regresión polinomial 78
4.9.5.1 Regresión polinomial de grado 2 79
4.9.5.2 Regresión polinomial de grado 3 79
4.9.5.3 Regresión polinomial de grado 4 79

4
4.9.5.4 Regresión polinomial de grado 5 79
4.9.5.5 Regresión polinomial de grado 6 79
4.9.6 Comparación de los modelos 79

CONCLUSIONES 80

RECOMENDACIONES 81

REFERENCIAS BIBLIOGRÁFICAS 82

ANEXOS 83
ANEXO 1. COCOMO y Viabilidad 83
Punto de Función 83
Cálculo del MF 83
Factores del COCOMO 83
Costo de fuerza de trabajo 84
Costo de utilización de los medios técnicos 85
Costo total del proyecto 85
Flujos de efectivo 85
Viabilidad 86

5
INTRODUCCIÓN

Orbitech es una empresa que está ubicada en Managua y se dedica a la venta de


accesorios de computadora con precios accesibles para el público en general. No
posee una página web donde se lleve un control de las ventas que se realizan, por
lo que en el presente proyecto se propone desarrollar un sistema experto que
realice una proyección de ventas para ayudar a la toma de decisiones con respecto
al control de inventario de los productos.

Para este proyecto se usará la metodología ‘CommonKADS’, para el primer nivel


(contexto) se realizará un análisis de la empresa (Orbitech) primeramente se definirá
el modelo de organización donde se determine el alcance del proyecto, se
identifiquen las áreas problemáticas o las que brinden oportunidades de mejora para
los sistemas de conocimiento y se decida la viabilidad económica y técnica del
proyecto. Si la viabilidad resulta positiva se procederá a realizar un modelo de
tareas para detallar las actividades de conocimiento dentro del proceso y de forma
simultánea se realizará el modelo de agentes para analizar mejoras desde el punto
de vista de los que interfieren en las tareas de la organización.

Posteriormente se procederá con el segundo nivel (concepto), para comprender la


organización. Primero se efectuará el modelo de conocimiento para explicar
detalladamente los tipos y estructuras de conocimiento que se usan para ejecutar
una tarea, luego se realizará el modelo de comunicación para determinar la
comunicación entre los agentes involucrados, dando fin a este nivel.

Por último, en el tercer nivel (implementación) se ejecutará un modelo de diseño


para la construcción general del sistema de conocimiento previamente analizado.
Este modelo será una especificación técnica para la implementación del sistema de
software.

6
OBJETIVOS

Objetivo General

● Diseñar un sistema experto basado en conocimientos para la proyección de


ventas de la empresa Orbitech utilizando la metodología CommonKADS.

Objetivos Específicos

1. Desarrollar un análisis de la organización a nivel de contexto creando


modelos de organización, tareas y agentes como entrada a la situación
problemática actual.

2. Realizar modelos de conocimiento y de comunicación que permitan la


comprensión de la organización a nivel de concepto.

3. Diseñar el sistema experto con base al modelo de diseño creando diagramas


que ayuden a visualizar su funcionamiento.

4. Utilizar los algoritmos de Machine Learning y redes neuronales para que se le


dé vida al sistema experto.

7
PLANTEAMIENTO DEL PROBLEMA

Orbitech implementa erróneamente el control en la venta de sus productos, por lo


que al momento que los directivos necesitan tomar una decisión sobre la compra de
inventario deben recurrir a buscar entre muchas transacciones los artículos más
vendidos y realizar una proyección de ventas por aparte. Esto es un problema en
cuanto a la competitividad con otras empresas ya que es poco probable que logre
alcanzar un estatus mayor en el mercado.

Con el avance exponencial de la tecnología se debe estar en constante


actualización para no quedar en el pasado, y es lo que está pasando a la empresa
en estos momentos.

8
JUSTIFICACIÓN

Llevar un control de inventarios en una empresa ayuda a que las operaciones sean
flexibles y se puedan realizar compras o ajustes al mismo dependiendo de los
productos con mayor rotación. Por eso es que con este proyecto se pretende
encontrar una solución viable al problema por el que afronta Orbitech.

Al crear el sistema experto basado en conocimientos que analice el comportamiento


de las ventas, ayudará a que se tomen decisiones con respecto a los productos que
se deben comprar con mayor frecuencia y a evitar la compra de productos con una
rotación baja.

Por lo que, este proyecto es de suma importancia para que Orbitech sea
competente en el mercado de artículos de computadora y esta propuesta ayudará
con la creación del sistema experto con un análisis exhaustivo del comportamiento
de la organización.

9
Capítulo 1 - NIVEL DE CONTEXTO

1.1 MODELO DE ORGANIZACIÓN

1.1.1 OM-1 Problemas y oportunidades

Modelo de
Problemas y oportunidades
organización
PROBLEMAS:
Falta de planeación y estrategia del negocio para poder
1 evaluar la condición financiera del negocio para proyectar
las ventas.

La empresa tiene muchos problemas al proyectar aquellos


2
productos y artículos que tienen mayor demanda.

La empresa tiene pérdidas en el manejo de inventario con


3 aquellos productos almacenados y que no tienen mucha
demanda.

El almacenamiento de datos a lo largo del tiempo en


4 archivos o documentos hace muy frecuente y probable la

Problemas y pérdida de información que no ha sido digitalizada.

oportunidades 5 clientes.
Desconocimiento sobre las tendencias y preferencias de los

OPORTUNIDADES:

Hacer más fácil e intuitiva la proyección de ventas del


1
negocio.

Facilitar la identificación de aquellos artículos y productos


2 que contienen mayor demanda para mejorar la
disponibilidad de estos en el inventario.

Aumentar la eficiencia en el manejo de inventario y el


3
periodo de rotación de estos, disminuyendo así los costos.

10
Mejorar los procesos de ventas y evitar la pérdida de
4
información.

Conocer las tendencias de compra para ayudar a la toma de


5
decisiones sobre las órdenes de compra de la empresa.

MISIÓN DE LA ORGANIZACIÓN

En Orbitech proveemos soluciones integrales en tecnología de


la computación, brindando mayor valor a nuestros clientes a
través del mejor producto, respaldo y servicio.

VISIÓN DE LA ORGANIZACIÓN

Ser una empresa lider en importacion, distribucion y venta a


empresas y personas de los mejores productos tecnológicos y
las mejores marcas en el mercado Nicaragüense con un
personal calificado y comprometidos en el desarrollo de las
TIC de Nicaragua

Contexto de OBJETIVOS DE LA ORGANIZACIÓN

organización 1
Apoyar y asesorar a nuestros Clientes en la selección más
rentable para su inversión en Tecnología y Computación.

Facilitar un ambiente de trabajo agradable, con alta


2 motivación y con oportunidades para hacer carrera dentro
de la empresa.

Gerenciar una gama de Soluciones Tecnológicas Integrales


3 compuesta por los mejores Productos y Servicios del
mercado.

ESTRATEGIAS DE LA ORGANIZACIÓN

Implementación de un sistema para ayudar a la proyección


1 de ventas de la empresa y mejorar la toma de decisiones de
la empresa.

Reducir los costes del manejo del inventario y facilitar los


2
rotes de inventario

11
Identificar aquellos productos que puedan tener una mayor
3
demanda

SOLUCIONES

Desarrollar un sistema basado en el conocimiento que


permita a la institución la proyección de las ventas en los
1 próximos años que pueda ayudar a la empresa a la
identificación de aquellos artículos y productos que puedan
tener una gran demanda potencial.

Implementar el sistema de proyecciones para reducir los


2
costes del manejo de inventario

12
1.1.2 OM-2 Aspectos a considerar

1 Gerente
2 Gerente de recursos Humanos

3 Gerente de ventas

4 Jefe de bodega
Personal
5 Cajero

6 Contador

7 Jefe de compras

Equipos y materiales
1 Computadoras
Recursos 2 Impresoras

3 Scanners

Conocimiento básico en el manejo de


1
computadoras
Conocimiento
Conocimiento en las características de
2
los equipos en venta

Los trabajadores deben brindar una


1
atención amable a los clientes
Cultura y poder
Los trabajadores deben de dar una
2
solución rápida y factible a los clientes

13
1.1.3 OM-3 Descomposición de los procesos
No Tarea Realizada Donde Fondo de Intensiv Importancia
por conocimie o
nto
1 Registro Jefe de Bodega Datos del Si Vital para poder
de bodega producto llevar un control de
productos registro de
productos y el total
de existencias
2 Registro Gerente de Recurs Datos del Si Fundamental para
de recursos os empleado llevar un registro en
empleado humanos Human nómina
s os
3 Facturació Cajero Caja Datos del Si Vital para poder
n producto pronosticar las
Datos del futuras ventas de la
cliente empresa
4 Realizar Jefe de Compra Datos del Si Fundamental para
compra compras s proveedor mantener un
Datos del inventario
producto abastecido

1.1.4 OM-4 Tarjetas sobre recursos de reconocimiento

Fuentes de Pertenecient Usador ¿Forma ¿Lugar ¿Tiempo ¿Calidad


conocimient ea por correcta correcto correcto? correcta?
o ? ?
Datos del Jefe de Registro Si Si No Si
producto bodega de
productos
Cajero Facturació Si Si Si No
n
Jefe de Realizar Si Si Si No
compras compras
Datos del Recursos Recursos Si Si Si Si
empleado humanos humanos
Datos del Cajero Facturació Si Si No Si
cliente n

1.1.5 OM-5 Análisis de viabilidad

(Ver Anexo 1. COCOMO y Viabilidad)

14
1.1.6 Árbol de problemas o análisis de árbol de fallas

1.1.7 Árbol de objetivo

15
1.1.8 FODA

INTERNO FORTALEZAS DEBILIDADES

1. Una ubicación céntrica. 1. Poco control en las


ventas realizadas.
2. Sobresaliente en la
calidad de sus productos. 2. No hay presencia
digital.
3. Facilidad de pago.

16
3. Poca proyección de
4. Cuenta con productos productos con mayor
sustitutos. demanda por
temporadas.
5. Conocimiento en
servicios tecnológicos. 4. Pérdida de
información.

5. Poco control de
cambio en las
tendencias
tecnológicas en el
inventario (pérdida de
inventario).

EXTERNO OPORTUNIDADES AMENAZAS

1. Ampliación de la gama de 1. Aumento de la


productos. competencia con
productos
2. Interés social por lo que semejantes.
está de moda en
tecnología. 2. Pérdida de la imagen
por carencia de
3. Hacer más eficiente e adaptación digital.
intuitiva la proyección de
ventas del negocio. 3. Cambios continuos
en las tendencias
4. Aumentar la eficiencia en tecnológicas.
el manejo de inventario.
4. Poco conocimiento
5. Facilitar la identificación de las tendencias de
de aquellos productos compra que ayuden a
con mayor demanda. la toma de decisiones
sobre las órdenes de
compra de la
empresa.

5. Riesgo de Inventario
excesivo y obsoleto.

17
18
1.1.9 Matriz de evaluación de factores internos (efi)

1.1.10 Matriz de evaluación de factores externos (efe)

Ya que el resultado no presenta mucha diferencia de la media de


2.5, significa que tiene un buen promedio, fortalezas por mejorar,
en cuanto a su fortaleza interna general. El valor de las
oportunidades (1.96) es superior que las amenazas (0.54), significa

19
que el entorno externo es favorable para la marca. no es necesario
reforzar en medida extrema las oportunidades.

1.11 Diagrama de organización

1.1.12 Fichas de procesos


Orbitech
Nombre del procedimiento: Ingreso de productos
Facilitar el registro e inventario de
Objetivo de procedimiento:
los productos por categoría
No Actividades Responsable

El empleado ingresa con sus


1 Jefe de bodega
credenciales al sistema

2 Verifica si el producto ya existe Jefe de bodega

El empleado ingresa las


3 Jefe de bodega
características del producto

El empleado registra el total de


4 inventario del producto Jefe de bodega
disponible
1.1.13 Flujograma de procesos

20
21
1.2 MODELO DE TAREAS
1.2.1 TM-1 Análisis de tareas
Modelo de tareas Plantilla TM-1 Análisis de tareas
Tarea Registro de productos
Organización Área de bodega
Meta y valor Registrar los productos en inventario para así poder abastecer
el inventario y que siempre haya stock de los productos y el
cliente siempre pueda realizar sus compras
Dependencia y Tareas precedentes: Realizar la compra
flujo Tareas que les siguen: Gestión de ventas
Objetos Entrada: Id
Manejados Nombre
Marca
Categoría
Cantidad
Precio
Salida:
Tiempo y control Frecuencia y duración Variable
Control Esta tarea se da con el fin de
llevar un control de inventario
Restricciones y condiciones Se debe ingresar el numero de
codigo o id del producto
Agentes Jefe de bodega
Conocimientos y El jefe de bodega registra todos
competencias los productos que llegan a la
tienda procedente de una orden
de compra
Recursos Orden de compra
Eficiencia y Ingreso correcto de los datos,
calidad mejorando y agilizando el
ingreso de productos y su fácil
acceso al cajero para su
posterior venta y revisión de
disponibilidad en stock

22
1.2.2 TM-2 Ítem de conocimiento
Nombre Poseído por Usado es Domini Naturalez Forma Disponibilida
o a d
Datos del Gerente de Registro de Recurs Riguroso Software básico Inmediata
empleado recursos empleados os para el control
humanos Human de registros
os
Datos del Jefe de Gestión de Bodega Riguroso Software básico Inmediata
producto Bodega ventas/ para el control
Registro de de registros
productos
Datos del Jefe de Realizar Compra Riguroso Software básico Inmediata
proveedor Compra compra s para el control
de registros
Datos del Cajero Gestión de Caja Riguroso Software básico Inmediata
cliente ventas para el control
de registros
Datos de Cajero Gestión de Caja Riguroso Software básico Inmediata
la factura ventas para el control
de registros
Datos de Jefe de Realizar Compra Riguroso Software básico Inmediata
compra Compra compra s para el control
de registros

1.3 MODELO DE AGENTES


1.3.1 AM-1 Agentes
AM-1
Nombre de agente Gerente
Organización Orbitech
Involucrado en Administración
Conocimiento Administración de empresas
Contabilidad
Ofimática
Comunica con Proveedores
Jefe de comercialización
Jefe de contabilidad
Jefe de recursos humanos
Jefe de bodega
Otras competencias Liderazgo
Proactivo
Conocimientos técnicos en equipos tecnológicos
Responsabilidades Tomas de decisiones en la empresa
Analizar los aspectos financieros, sociales y
culturales, administrativos entre otros
Evaluar el desempeño de cada uno de los
departamentos

23
24
1.3.2 OTA-1 Lista para documento de decisión de impactos

Modelo de organización Lista para el documento de decisión de impactos y


de tareas y agentes mejoras Hoja de trabajo OTA-1

Impactos y cambios en la El impacto generado por el sistema en la organización ha


organización generado un impacto positivo en la organización ya que
con esta herramienta ahora se podrá mejorar el control
de registros y acelerar los procesos de compra de
productos, recursos humanos y venta mejorando así
también la toma de decisiones

Impactos y cambios La evaluación del impacto se da en las tareas de


específicos en tareas / automatización de procesos de registros y control
agentes ayudando así a la organización en ahorro del tiempo y
también en los costos dando así también un mejor
tiempo de respuesta y atención a los clientes mejorando
así la percepción de atención y evaluación de estos a la
empresa, además que el sistema proyecta las ventas
ayudando así a la mejora de toma de decisiones

Actitudes y compromisos El sistema es muy bien recibido y de muy fácil manejo


para los empleados así también de la satisfacción de los
clientes en la mejora de la atención

Acciones propuestas Mejorar el registro de los diferentes departamentos para


así llegar a ser más decisiva la toma de decisiones por
parte de la gerencia

1.3.2.1 Matriz PAMA (Percepcion, Accion, Meta y Ambiente)

“El objetivo de la IA es el diseño de un programa de agente. Para ello es necesario


contar con una idea bastante precisa del ambiente, las percepciones y acciones, y
por último de las metas.” (Mendo, 2012)

25
26
Capítulo 2 - NIVEL DE CONCEPTO

2.1 Modelo de conocimiento

2.1.1 KM-1 Documentación del modelo

Modelo de Hoja de trabajo KM-1: Documentación del modelo de


conocimiento conocimiento - Matriz de evaluación
Modelo de El modelo se basa en el análisis de las ventas de los productos y
conocimiento artículos tecnológicos que se ofertan en la empresa orbitech, para
conocer aquellos patrones de los productos con mayor demanda y
que se pueda hacer una proyección de las ventas futuras
ayudando así también al mejor manejo del inventario. El modelo
de tareas se complementa con el modelo inferencias para asignar,
clasificar e interpretar

Fuentes de Información de las ventas en caja, catalogo de articulos y


información productos, listado de proveedores
utilizadas
Glosario Método de Holt: Es un método estadístico que sirve para
pronosticar o proyectar las futuras ventas con base a las ventas
registradas.
Mezcla de crecimiento: Es un método gráfico de análisis de cartera
de negocios y así partir de ahí determinar qué estrategias de
marketing.
Mezcla de artículos: Es la variedad de combinaciones compatibles
y coherentes entre los productos, esta combinación se establece
por categoría del mismo fin.

Componentes No se ha considerado componente en el desarrollo del modelo de


considerados conocimientos
Escenarios Se hicieron análisis de las ventas de los productos para encontrar
las técnicas y estrategias a utilizar para pronosticar las ventas
futuras
Resultados de En base en los datos obtenidos se realizaron cálculos estadísticos
validación para conocer las estrategias a utilizar e implementar

Material de La documentación se encuentra en el manual de organización y


elicitación funciones de la empresa y las fuentes de información estadísticos

27
2.1.2 Conocimiento de la tarea

2.1.2.1 Método de la tarea

Nombre de la tarea Método de la tarea


Registro de Para el registro de un producto, se ingresan los valores de
productos nombre del producto, marca, características y se le genera un
identificador único

Registro de Se ingresa su id, nombre, apellido y se le asigna un código de


empleados empleado

Gestion de venta Antes de realizar una gestión de ventas, se tiene que registrar
el producto, una vez ingresado el producto se puede realizar
una venta y gestionarla

Realizar compras Se realiza un seguimiento de aquellos productos que se


quedaran sin stock para posteriormente realizar una orden de
compra

28
2.1.3 Conocimiento inferencial

2.1.3.1 Inferencias

29
2.1.4 Conocimiento del dominio

2.1.4.1 Esquema del dominio

30
2.2 Modelo de comunicación

2.2.1 CM-1 Descripción de transacción

Modelo de Hoja de trabajo CM1 Descripción de


comunicación transacción
identificador/Nombre Gestionar empleados
de transacción
Objeto de información Se registran los empleados en la interfaz
gráfica del sistema correspondiente al de
gestión de empleado
Agentes implicados Gerente de Recursos Humanos
Plan de comunicación Conversación
Curriculum
Restricciones No existe ninguna restricción

31
2.2.1.1 Plan de comunicación del proyecto

32
2.2.1.2 Diagrama de secuencia de la gestion de ventas

2.2.1.3 Diagrama de colaboracion de la gestion de ventas

2.2.2 CM2 - Descripción de transacción

Modelo de comunicación Descripción de transacción


Transacción GE-01
Agentes implicados Gerente de Recursos Humanos
Ítems de información Información básica del empleado
Comunicación de mensajes Conversación
Curriculum
Control de mensajes Mensual

33
Capítulo 3 - NIVEL DE IMPLEMENTACIÓN

3.1 Modelo de diseño

3.1.1 DM-1 Arquitectura del sistema

Modelo de diseño DM1 Hoja de trabajo DM1


Modelo de control El agente humano o usuario, interactúa
y
selecciona las opciones disponibles de
pronóstico y rotación de inventario para
que
el sistema experto inicia su
intervención.
Descomposición del La arquitectura es basada en la
subsistema Metodología
Orientada a Objetos que consiste en
crear
una representación del problema del
mundo
real y la hace corresponder con el
ámbito de
la solución. DM-1

Requisitos del sistema


CPU Intel core I3 6ta Generacion
RAM 4GB DDR3
Almacenamiento 250 GB SSD
Sistema Operativo Windows 8.1 o Superior
Importancia Alta
Urgencia Inmediata
Estabilidad Alta

3.1.2 DM-2 Plataforma de implementación

Modelo de diseño Documento sobre el modelo de diseño


Paquete de software Para el funcionamiento del software debe
contar con los siguientes requisitos
Python 2.7 o superior
Anaconda
Mysql
HW Potencial Hardware especificado anteriormente
Librería de visualización Matplotlib
Tipo de lenguaje de Python
implementación

34
Representación del documento Python está entre los mejores lenguajes de
alto nivel, ya que, posee una amplia gama
de bibliotecas de datos y fuentes con
algoritmos establecidos, y su código de
programación es mucho más amigable,
permitiendo módulos menos extensos por
el uso de inteligencia artificial en ellos

Protocolos de implementación Mysql-Connector-Python


Flujo de control Se realizan solicitudes al usuario para la
autenticación
Soporte Commonkads Python actualmente no tiene soportes para
commonkads

3.1.3 DM-3 Especificación de los componentes de la arquitectura

Modelo de diseño Hoja de trabajo DM3


DM3
Controlador El sistema cuenta con
una interfaz gráfica
donde permite la
realización de los
registros de la
empresa y también
para la visualización
de las proyecciones
de la empresa
Método de tareas
Inferencias
Método de Proyección de las
inferencias ventas
Base de Historial de ventas
conocimiento
Vistas Gestionar cliente
Gestionar
proveedores
Gestionar Compras
Gestionar venta
Gestionar producto

35
3.1.3.1 Conocimiento de la tarea

36
3.1.4 DM-4 Especificación de la aplicación sobre la arquitectura
3.1.4.1 Diagramas de casos de uso

37
3.1.4.2 Diagramas de actividades

3.1.4.2.1. Registrar productos

3.1.4.2.2. Actualizar productos

38
3.1.4.2.3. Buscar productos

3.1.4.2.4. Dar de baja un producto

39
3.1.4.2.5. Generar reporte de venta

3.1.4.2.6. Generar reporte de inventario

3.1.
4.3

Diagrama basado en conocimiento con ESTA

Iniciamos con la sección inicial, donde se presentan los problemas iniciales, pero
antes se pregunta el nombre del usuario al que se le solucionará el problema.

40
Una vez ingresado el nombre, aparecerán cuatro opciones, las cuales indican las
subsecciones: generar ventas, consultar ventas, ingresar compras y consultar
compras.

Para la primer subsección ‘Realizar una venta’ hay cuatro problemas con el que
probablemente el usuario se llegue a encontrar:

41
Si el usuario marcó ‘Sí’ a todo en la primer subsección, la base de conocimiento
arrojará un advice:

42
Para la segunda subsección ‘Consultar ventas’ hay solamente un problema con el
que probablemente el usuario se llegue a encontrar:

Si el usuario marcó ‘Sí’ a esta única opción, la base de conocimiento arrojará un


advice:

Para la tercer subsección ‘Ingresar una compra’ hay cuatro problemas con el que
probablemente el usuario se llegue a encontrar:

43
Si el usuario marcó ‘Sí’ a todo en la tercer subsección, la base de conocimiento
arrojará un advice:

44
Finalmente para la última subsección ‘Consultar compras’ hay solamente un
problema con el que probablemente el usuario se llegue a encontrar:

Si el usuario marcó ‘Sí’ a esta única opción, la base de conocimiento arrojará un


advice:

45
Capítulo 4 - MACHINE LEARNING

“El Machine Learning o aprendizaje automático es un campo científico y, más


particularmente, una subcategoría de inteligencia artificial. Consiste en dejar que los
algoritmos descubran «patterns», es decir, patrones recurrentes, en conjuntos de
datos. Esos datos pueden ser números, palabras, imágenes, estadísticas, etc.

Todo lo que se pueda almacenar digitalmente puede servir como dato para el
Machine Learning. Al detectar patrones en esos datos, los algoritmos aprenden y
mejoran su rendimiento en la ejecución de una tarea específica.

En resumen, los algoritmos de Machine Learning aprenden de forma autónoma a


realizar una tarea o hacer predicciones a partir de datos y mejorar su rendimiento
con el tiempo. Una vez entrenado, el algoritmo podrá encontrar los patrones en
nuevos datos.” (Hinton, 2021)

4.1 Lenguaje y entorno de ejecución

Hoy en día nadie duda del tremendo avance del Big Data, el Data Science y el Data
Engineering. Sin embargo, una de las tareas más difíciles cuando nos sumergimos
en estos mundos es saber cómo preparar nuestro entorno de trabajo para empezar

a procesar datos.

Python es un lenguaje versátil y fácil de usar. En términos de escalabilidad, Python


tiene una ventaja sobre otros lenguajes de programación como R y es que ofrece
más de un enfoque para resolver diferentes problemas. En términos de velocidad,
Python, también destaca entre otros como Matlab y Stata.

Parece una asignatura más que obligatoria para casi todos los entusiastas de los
datos aprender Python, de hecho, gracias al boom imparable del Big Data y la
Inteligencia Artificial, Python lleva varios años siendo uno de los lenguajes de
programación que las empresas más punteras en tecnología (SpaceX, AirBNB, Epic
Games, entre otros) recomiendan aprender. Dicho en otras palabras, Python hoy en
día es considerado por muchos el lenguaje de programación más popular del
mundo.

46
Según Computer Hoy, Python es uno de los lenguajes más populares del mundo y
ha creado el algoritmo de recomendación de Netflix y el software que controla los
coches autodirigidos.

Dentro de los entornos de ejecución a utilizar se cuenta igualmente con una amplia
variedad pero 2 de los más conocidos se puede decir que son Jupyter y google
colabs.

Colab es un servicio cloud, basado en los Notebooks de Jupyter, que permite el uso
gratuito de las GPUs y TPUs de Google, con librerías ya instaladas con la única
opción de mandarlas a llamar o importarlas para su uso. La diferencia notable en la
que se decide utilizar colab por encima de Jupyter es que google nos permite el uso
de las GPUs y TPUs gratuitas mientras que con Jupyter se utilizan recursos propios
del sistema, lo cual con colab nos ayuda mejor al momento del entrenamiento

Con Colab se pueden crear notebooks o importar los que ya tengamos creados,
además de compartirlos y exportarlos cuando queramos. Esta fluidez a la hora de
manejar la información también es aplicable a las fuentes de datos que usemos en
nuestros proyectos (notebooks), de modo que podremos trabajar con información
contenida en nuestro propio Google Drive, unidad de almacenamiento local, github e
incluso con otros sistemas de la nube.

Es por eso que ante la opción de otros lenguajes de programación orientados al


estudio y procesamiento de datos como por ejemplo R, se decide aplicar por python
debido al amplio respaldo de no solo entornos de ejecución creados por grandes
empresas líderes en el campo de la ciencia de datos sino también a las librerías que
poseen una gran variedad y potencia de procesamiento y nos facilita el trabajo aún
más.

4.2 Librerías

Python proporciona bibliotecas (o librerías) como NumPy, pandas, SciPy, matplotlib,


etc., con las que podemos trabajar en ciencia de datos fácilmente.

Dentro de estas librerías se podrían clasificar de diferentes formas como su función


u objetivo de trabajo pero se pueden tener librerías específicas para el uso de tareas

47
estadísticas y matemáticas así como también librerías gráficas para la visualización
de datos y librerías para el estudio de imágenes.

● Numpy: Es un acrónimo de Numerical Python. Es una biblioteca de Python


que brinda soporte a funciones matemáticas mediante las cuales los
programadores pueden usar arreglos (arrays) de mayores dimensiones.
Consta de funciones útiles que facilitan el trabajo con arreglos (arrays) y
matrices.

● Scikit-Learn: Es uno de los open-source y bibliotecas de aprendizaje


automático más populares en Python. La biblioteca Scikit-learn contiene
muchas herramientas eficientes para aprendizaje automático y modelado
estadístico, incluyendo clasificación, regresión, agrupación, y reducción de
dimensionalidad. Proporciona acceso a versiones eficaces de muchos
algoritmos comunes.

● Pytorch: Es una biblioteca de aprendizaje automático de código abierto


basada en la biblioteca de Torch, utilizado para aplicaciones que
implementan cosas como visión artificial y procesamiento de lenguajes
naturales.

● Pandas: Es una de las bibliotecas más populares entre los desarrolladores


de Python. El objetivo principal de esta biblioteca es analizar y manipular los
datos con la ayuda de las funciones incluidas en ella. Una gran cantidad de
datos estructurados también se pueden manejar fácilmente con esta
biblioteca. Pandas admite dos tipos de estructura de datos:

○ Series: contiene datos unidimensionales.


○ DataFrame: contiene datos bidimensionales.

● SciPy: Es otra biblioteca popular de Python que se usa específicamente para


llevar a cabo tareas de ciencia de datos. También es útil en el campo de la
computación científica. Proporciona funcionalidad para resolver problemas
matemáticos científicos y tareas de programación informática. Consta de sub-
módulos para llevar a cabo las siguientes tareas:

○ Procesamiento de señales e imágenes

48
○ Mejoramiento
○ Integración
○ Interpolación

● Matplotlib: Es una biblioteca muy especial de Python. Se utiliza para la


visualización de datos. La visualización de datos es crucial para cualquier
empresa. Esta biblioteca no se limita a dibujar gráficos circulares, gráficos de
barras, histogramas, sino que también es capaz de hacer figuras de alto
nivel. La personalización es otra característica de esta biblioteca, ya que
cualquier parte de la figura se puede personalizar.

● Tensorflow: Se trata de una librería de código libre para Machine Learning


(ML). Fue desarrollado por Google para satisfacer las necesidades a partir de
redes neuronales artificiales. TensorFlow te permite construir y entrenar
redes neuronales para detectar patrones y razonamientos usados por los
humanos.

● Keras: En Deep Learning es una librería muy conocida dentro del mundo de
las redes neuronales. Su principal características es que es una biblioteca de
código abierto y trabaja con Tensor Flow, razón por la que es una de las más
empleadas en el análisis de redes neuronales profundas.
Está diseñado para ir construyendo por bloques la arquitectura de cada red
neuronal, incluyendo redes convolucionales y recurrentes, que son las que
permiten, junto a los bloques “más tradicionales”, entrenar modelos Deep
learning.

● OpenCV: Significa Open Computer Vision (Visión Artificial Abierta). Es una


librería software open-source de visión artificial y machine learning de código
abierto dirigida principalmente a la visión por computador en tiempo real .
Las áreas de aplicación de OpenCV incluyen:
● Odometría visual
● Sistema de reconocimiento facial
● Reconocimiento de gestos
● La interacción hombre-ordenador (HCI)
● Robótica móvil

49
● Comprensión del movimiento
● Identificación del objeto
● Segmentación y reconocimiento
● Visión estereoscópica: percepción de profundidad desde 2 cámaras
● Estructura de movimiento (SFM)
● Rastreo de movimiento
● Realidad aumentada
● Aprendizaje del árbol de decisiones
● Algoritmo de maximización de expectativas
● Algoritmo de vecino más cercano k
● Clasificador Baye
● Redes neuronales artificiales
● Soporte de máquinas vectoriales
● Redes neuronales profundas

● Theano: Es una biblioteca de Python para el cálculo numérico rápido que se


puede ejecutar en la CPU o GPU. Es una biblioteca fundamental clave para
Deep Learning en Python que se puede usar directamente para crear
modelos de Deep Learning o bibliotecas contenedoras que simplifican
enormemente el proceso.

● XGBoost: Es un método de aprendizaje automático supervisado para


clasificación y regresión y se utiliza en la herramienta Entrenar con AutoML.
XGBoost es la abreviatura de las palabras inglesas "extreme gradient
boosting" (refuerzo de gradientes extremo).

● Plotly: Es una biblioteca de gráficos para Python, interactiva y basada en el


navegador. Construida sobre plotly.js, se trata de una biblioteca de gráficos
declarativa de alto nivel. plotly.js se entrega con más de 30 tipos de gráficos,
incluyendo gráficos científicos, gráficos 3D, gráficos estadísticos, mapas
SVG, gráficos financieros y más.

50
● SHAP: Es una librería para realizar inteligencia artificial explicable. Utiliza
cálculos del campo de la teoría de juegos para averiguar qué variables tienen
más influencia en las predicciones de las técnicas de machine learning.

4.3 Conjunto de datos

El conjunto de datos consta de 450,711 registros recopilados en un año de registros


del año 2019, que indican la fecha en formato corto de la venta, el Id del producto, Id
de la categoría y el código de la categoría donde se clasifican los productos, las
marcas donde pertenecen las categorías y el precio de ese producto por
determinada marca con un Id de usuario y Id de la sesión.

4.4 Importación de los datos al notebook

Para montar y habilitar el acceso de nuestro notebook a nuestro Google Drive, se


ejecutará la siguiente línea de código:

#ACCEDEMOS LA CONEXIÓN CON GOOGLE DRIVE PARA ACCEDER EN LÍNEA


from google.colab import drive
drive.mount('/content/drive')

Al hacer esto, nos pedirá un código de autorización para acceder a nuestro google
drive y nos llevará al proceso de validación de nuestra cuenta de Google. Después
nos subirá o accede a nuestra carpetas de google drive en la ruta:
(/content/drive/MyDrive). Al hacerlo, lo validará y montará nuestro google drive en el
notebook, apareciendo el siguiente mensaje: “Mounted at /content/drive”.

Para la lectura del archivo .CSV que deseamos leer y trabajar con nuestro dataset
se utiliza la librería Pandas que nos permite la manipulación del archivo.
Luego se usa el método read_CSV para ver la ruta donde está el archivo y la
extensión del archivo.

#IMPORTACIÓN DEL DATASET MEDIANTE GOOGLE DRIVE


import pandas as pd
from pandas import read_csv
filename = '/content/drive/MyDrive/IA/DATASET_FINAL.csv'
df = read_csv(filename)
print(df)

51
En caso de que no montemos el archivo de manera online o por medio de un
servicio en la nube como google drive se puede subir el archivo de manera local con
la desventaja es que se reiniciara el notebook cada cierto tiempo, teniendo que
resubir el archivo nuevamente. Utilizando el mismo código y solo cambiando la ruta
de la ubicación del archivo.

4.5 Información básicas del dataset

Antes de la aplicación de los algoritmos del machine learning se conocerá los


detalles y propiedades del conjunto de datos con el cual trabajaremos.

Al momento de montar el archivo al notebook se le asigna a una variable en el cual


le pusimos Data e imprimimos y nos muestra los datos que contiene el archivo en
este caso se puede observar las columnas y las primeras filas y columnas del
archivo asi como tambien al final el número total de filas por el de columnas.

Otra manera en la cual podemos visualizar nuestros datos es solo poniendo el


nombre de la variable que guarda o contiene nuestro archivo.

52
Para poder visualizar solamente unas filas determinadas podemos utilizar el método
head el cual cuando lo usamos sin parámetros nos muestra o nos devuelve las
primeras 5 filas.

#Ver las primeras 5 filas


data.head()

Si solo queremos conocer la dimensión de nuestro dataset (Número de filas y


número de columnas que lo conforman) entonces solo usaremos el método shape.

#Dimensión de los datos


data.shape

Para el reconocimiento de los tipos de datos que son utilizados en el conjunto de


datos pueden ser de tipo entero, float, cadena u objeto.

#Tipos de datos
data.dtypes

53
Otros métodos utilizados que se pueden utilizar de la librería pandas para la
visualización de los datos de los archivos pueden ser el método dataframe, describe
e info que nos permite realizar la misma funciones de antes como imprimir todos los
datos del dataset.

#MOSTRAR INFORMACIÓN DEL CONJUNTO DE DATOS


data.info

#FUNCIÓN DE PANDAS PARA MOSTRAR INFORMACIÓN


pd.dataframe(data)

#MUESTRA INFORMACIÓN DEL DATASET


data.describe

Para la visualización de algún tipo de dato en concreto como en este caso por
ejemplo los datos que pueden haber en una columna podemos utilizar el método
print tomando como parámetros el nombre de esa columna que queremos
visualizar.

#IMPRIME LA COLUMNA AÑOS


print(data.year)

54
También muestra el número total de registros y el tipo de datos que contiene esa
columna.

4.6 Limpieza de datos

Al utilizar un conjunto de datos no sabemos si un campo pueda estar vacío o nulo y


este campo vacío puede llegar a alterar las estimaciones o proyecciones de los
resultados de estas así que utilizaremos el método dropna() de pandas y este tiene
la función de eliminar las filas que contienen datos nulos, por tanto es muy útil para
eliminar filas con varios datos nulos a la vez.

#SE REALIZA UNA ELIMINACIÓN DE LAS FILAS QUE CONTIENEN CAMPOS VACÍOS

data.dropna()

Número total de registros antes de la utilización del método dropna()

Número total de registros después de la utilización del método

55
4.7 Estadísticas básicas

Para el conocimiento y el análisis de los datos del dataset ahora llegaremos a


utilizar librerías como numpy y métodos de la ya utilizada librería pandas para
analizar y conocer a profundidad mejor a nuestro dataset.

Para eso primero importamos la librería numpy:


"""
IMPORTACIÓN DE LA LIBRERÍA NUMPY PARA
EL MANEJO DE ARREGLOS BIDIMENSIONALES
"""
import numpy as np

La librería Numpy es una librería de Python especializada en el cálculo numérico y


el análisis de datos, especialmente para un gran volumen de datos. NumPy tiene su
propia estructura de datos incorporada llamado arreglo que es similar a la lista
normal de Python, pero puede almacenar y operar con datos de manera mucho más
eficiente.

Como primer dato a conocer de nuestro dataset utilizando la librería numpy se


conocerá la media aritmética de todos los datos utilizando el método mean().

La función mean() devuelve la media aritmética de los datos de una muestra o


población. Esta media se calcula sumando todos los valores y después el resultado
de la suma se divide entre el número de elementos. Si no se facilitan elementos la
función producirá el error Statistics Error.

#MEDIA DE LOS DATOS

np.mean(data)

Al realizar la suma de todos los datos y sacar una media de estos, dependiendo de
la cantidad de datos y de los recursos utilizados en el equipo, este proceso puede
llegar a durar un tiempo indeterminado.

56
Uso de la función std() para el cálculo de la desviación estándar del conjunto de
datos, la función std() puede recibir parámetros como el axis igual a 0 que
representa la desviación a lo largo del eje de las filas e igual a 1 que representa la
desviación estándar a lo largo del eje de las columnas.

Desviación estándar con un eje igual a 0

Desviación estándar con un eje igual a 1

57
La correlación es una medida estadística que expresa hasta qué punto dos variables
están relacionadas linealmente (esto es, cambian conjuntamente a una tasa
constante). Es una herramienta común para describir relaciones simples sin hacer
afirmaciones sobre causa y efecto.

Usando la función corr() podemos encontrar la correlación de los datos y podemos


pasar parámetros para decir que método deseamos utilizar para esto.

#CORRELACIÓN ENTRE CARACTERÍSTICAS

correlacion = data.corr(method='pearson')

correlacion

En este caso utilizamos la correlación de Pearson

58
La correlación de Kendall como la de Spearman son denominadas medidas de
correlación no paramétrica.

La correlación de Spearman evalúa la relación monótona entre dos variables


continuas u ordinales.

El coeficiente de rango de Kendall a menudo se usa como estadística de prueba en


una prueba de hipótesis estadística para establecer si dos variables pueden
considerarse como dependientes estadísticamente.

La covarianza es el valor que refleja en qué cuantía dos variables aleatorias varían
de forma conjunta respecto a sus medias.

La Varianza es una medida de dispersión que se utiliza para representar la


variabilidad de un conjunto de datos respecto de la media aritmética de los mismos.

59
También se puede calcular la varianza de acuerdo a su eje de los datos, en este
caso se puede ver con el eje de las columnas.

Usando la función describe() de la librería pandas da como resultado un resumen de


la información estadística de los datos de la tabla mostrando así la media,
desviación estándar, valores mínimos y valores máximos, los percentiles de un 25%,
50% y un 75%

60
No confundir la funciones describe con describe() donde describe sin parámetros
nos muestra todos los datos de nuestro dataset y la segunda con parámetros realiza
un resumen de todos aquellos valores estadísticos de relevancia.

También se pueden poner parámetros a la función describe() donde podemos incluir


todos los objetos del dataset y mostrar resultados de todas las columnas sin
importar el tipo de datos o excluir ciertos objetos para tomar en cuenta sólo aquellos
valores numéricos el cual muestran información estadística relevante.

describe() que incluye todos los datos del dataset.

61
describe() que excluye aquellos datos tipos objetos

4.8 Visualización de datos

Para la visualización de nuestros datos utilizaremos la librería Matplotlib.pyplot que


nos permite generar gráficos en 2 dimensiones de nuestros datos. Con esta librería
podemos visualizar y estudiar de una mejor manera el comportamiento de nuestros
datos usando herramientas gráficas básicas como: gráfico de barras, gráfico de
líneas, gráfico de pastel, diagrama de cajas, histogramas, diagramas de barras,
diagramas de dispersión, mapas de calor y diagramas de contornos.

#IMPORTANDO LIBRERÍA PARA LA VISUALIZACIÓN DE DATOS

import matplotlib.pyplot as plt

%matplotlib inline

Primeramente importamos la librería matplotlib.pyplot para el uso posterior de las


funciones, y luego usar el comando %matplotlib inline este comando ajusta el
backend de la función mágica matplotlib, lo que significa es que el resultado de los
plots generados en la celda se muestran en la misma celda. No es necesario incluir
el %matplotlib inline puesto que ya viene por defecto.

62
4.8.1 Gráfico de líneas

Los gráficos de líneas permiten visualizar los cambios a lo largo de un rango


continuo, como el tiempo o la distancia. La visualización del cambio con un gráfico
de líneas permite ver de una sola vez la tendencia general y comparar
simultáneamente varias tendencias.

Los gráficos de líneas se usan para comparar los cambios en los valores de medida
a lo largo de un periodo de tiempo, para los siguientes casos: Una medida a lo largo
de un periodo de tiempo, por ejemplo, ventas brutas por mes.

#Gráfico de todo el dataset

data.iloc[:,2:].plot(kind='line')

#Gráfica agrupada por meses

data.groupby(['datum']).sum().iloc[:,1:].plot(kind='line')

63
Otra manera de llegar a utilizar gráficos de líneas es usando directamente la función
plot y la función show para mostrar los resultados.

4.8.2 Gráfico de barras

Un diagrama de barras, gráfico de barras o gráfico de columnas, es una forma de


representar gráficamente un conjunto de datos o valores mediante barras
rectangulares de longitud proporcional a los valores representados.

Las gráficas de barras se utilizan para comparar dos o más valores.

#Gráfico de barras de todo el dataset

data.iloc[:,2:].plot(kind="bar")

64
#Gráfico de barras agrupado por años

(data.groupby(['datum']).sum()).iloc[:,1:].plot(kind="bar")

4.8.3 Gráfico de pastel

Los gráficos circulares representan la relación de la parte con el todo. Un gráfico


circular se divide en áreas o sectores. Cada sector representa el conteo o
porcentaje de observaciones de un nivel de la variable.

65
El uso principal de un gráfico circular es mostrar comparaciones entre diferentes
categorías.

#Gráfico de barras de todo el dataset

plt.pie(data.iloc[:,2:].sum(), labels=data.iloc[:,2:].columns.values,
autopct="%0.1f %%")

4.8.4 Histograma

Los histogramas ayudan a ver el centro, la extensión y la forma de un conjunto de


datos. También se pueden usar como herramienta visual para comprobar la
normalidad.

Un histograma es una representación gráfica de una variable en forma de barras,


donde la superficie de cada barra es proporcional a la frecuencia de los valores
representados. En el eje vertical se representan las frecuencias, y en el eje
horizontal los valores de las variables, normalmente señalando las marcas de clase,
es decir, la mitad del intervalo en el que están agrupados los datos.

#Histograma

data.iloc[:,2:].hist(figsize = (10,10))

plt.show()

66
Dentro de los histogramas también podemos mostrar distribuciones de frecuencia y
en este caso por ejemplo podemos ver, utilizando la librería matplotlib y la función
hist() como el primer ejemplo, en este caso podemos ver un ejemplo con parámetros
donde medimos los precios referente a un precio de 100 y podemos observar que
muchos de los productos rondan ese precio y una muy buen parte de los productos
tienen un precio rondando los $100 o en un rango menor.

4.8.5 Diagrama de cajas

Es un método estandarizado para representar gráficamente una serie de datos


numéricos a través de sus cuartiles. De esta manera, se muestran a simple vista la
mediana y los cuartiles de los datos, y también pueden representarse sus valores
atípicos.

Los diagramas de caja le permiten visualizar y comparar la distribución y la


tendencia central de valores numéricos mediante sus cuartiles.

#Diagrama de cajas

data.iloc[:,2:].plot(kind='box', subplots=True, layout=(3,3),


sharex=False, sharey=False, figsize=(10,10))

plt.show()

4.8.6 Diagrama de dispersión

Es un tipo de diagrama matemático que utiliza las coordenadas cartesianas para


mostrar los valores de dos variables para un conjunto de datos.

Se emplea cuando una o varias variables están bajo el control del experimentador.
Si existe un parámetro que se incrementa o disminuye de forma sistemática por el
experimentador, se le denomina parámetro de control o variable independiente y
habitualmente se representa a lo largo del eje horizontal (eje de las abscisas). La

67
variable medida o dependiente usualmente se representa a lo largo del eje vertical
(eje de las ordenadas). Si no existe una variable dependiente, cualquier variable se
puede representar en cada eje y el diagrama de dispersión mostrará el grado de
correlación (no causalidad) entre las dos variables.

#Gráfico de dispersión de la media de todo el dataset

plt.scatter(data.iloc[:,2:].columns.values, np.mean(data.iloc[:,2:]))

4.8.7 Mapa de calor

Es un tipo de gráfico que usa diferentes tonos de colores para representar valores
de datos.

#MATRIZ DE CORRELACIÓN

plt.matshow(data.corr())

plt.show()

Para eso usamos el método matshow() con los parámetros de la correlación del
conjunto de datos y luego mostramos e imprimimos en pantalla.

68
4.9 Algoritmos de Machine Learning

Antes de proseguir con la creación de los algoritmos del lenguaje o aprendizaje


máquina vamos a primero a preparar los datos de manera que un porcentaje de
nuestros datos serán útiles para la proyección de los futuros datos que deseamos
pronosticar o darnos cuenta de ciertos detalles como qué productos se venden mas
o que mes fue que mas se vendio en general o cuales serian aquellos productos
que podrían llegar a tener mayor demanda con el paso del tiempo y que podriamos
preparar nuestro inventario para ello.

Elección de los datos independientes utilizados para las pruebas:

#DATOS DE ENTRADA O INDEPENDIENTES

X = data.iloc[:,:-8].values

print(X)

69
Se toman los datos de los meses y los precios para conocer los ingresos totales por
mes y predecir la cantidad de ventas totales para los próximos meses.

Elección de los datos dependientes:

#DATOS DE SALIDA O DEPENDIENTES

y_r = data.iloc[: , 2:10]

print(y_r)

70
Con los datos dependientes se les considerara datos de salida ya que también de
estos juntos con los de entrada se necesitaran para la proyección de las ventas.

Así que antes vamos a elegir algunos datos para luego entrenarlos y que estos sean
los correctos para que den los mejores resultados.

Para el entrenamiento de nuestros datos usaremos la biblioteca


sklearn.model.selection o mejor conocida como scikit learn y específicamente la
función train test split.

El enfoque Train-Test Split consiste en descomponer de manera aleatoria una serie


de datos. Una parte servirá para el entrenamiento del modelo de Machine Learning,
la otra permitirá probarlo para la validación.

Por lo general, se reserva entre un 70 % y 80 % de los datos de la serie para el


entrenamiento. El 20-30 % restante se explotará en la cross-validation.

71
Esta técnica es eficaz, salvo si los datos están limitados. Entonces puede faltar
alguna información contenida en los datos que no se utilizan para el entrenamiento
y, por tanto, los resultados pueden tener un gran sesgo.

#IMPORTANDO LIBRERÍA PARA EL ENTRENAMIENTO DE LOS DATOS

from sklearn.model_selection import train_test_split

Para el uso del porcentaje de prueba que se utilizara de los datos se decidió utilizar
un cuarto de estos, un 0.25 o 25% de estos.

#SEPARACIÓN DE LOS DATOS PARA ENTRENAMIENTO Y PRUEBA

x_train, y_train, x_test, y_test = train_test_split(x, y, test_size =


0.25, random_state= 0)

Mostramos aquellos datos tantos dependientes como independientes que se


utilizaran para el entrenamiento.

print('Datos de x train\n')

print(X_train)

print('\nDatos y train\n')

print(y_train)

72
73
Ahora vamos a definir las variables a definir de cada una de las variables, así que
definimos una nueva variable.

La variable X_pred_Machine_Learning son las variables independientes para poder


predecir estos valores en todos los algoritmos de Machine Learning

#VARIABLES INDEPENDIENTES PARA PREDECIR

X_pred_Machine_Learning = [['2019','10'],['2019','11'],['2019','12'],
['2020','1'],['2020','2'],['2020','3'], ['2020','4'],
['2020','5'],['2020','6'],['2020','7'],['2020','8'],['2020','9']]

Después definimos las variables que son dependientes pasando por parámetros
aquellos algoritmos que se utilizaran para realizar una predicción y que luego
compararemos para posteriormente tomar una decisión sobre los resultados que
nos devuelva.

El nombre de esta nueva variable dependiente se llamará:


X_pred_Machine_Learning.

74
Z_pred_Machine_Learning = [['K- Vecinos más cercanos'],['Árbol de
decisiones'],['Bosques aleatorios'],['Regresión Lineal'], ['Regresión
Polinomial Grado 2'],['Regresión Polinomial Grado 3'],['Regresión
Polinomial Grado 4'],['Regresión Polinomial Grado 5'],['Regresión
Polinomial Grado 6']]

La variable Y_pred_Machine_Learning que estamos definiendo a continuación es un


array que tiene el objetivo de guardar todas las predicciones de todos los algoritmos
de Machine Learning, por lo tanto, como tamaño de fila, será igual a la cantidad de
datos de predicciones por la cantidad de algoritmos que hay, y la cantidad de
columnas equivale a 8 que son la cantidad de los ingresos por meses a predecir.

#MIRAMOS EL RESULTADO DE LAS VARIABLES DE MUESTRA A PREDECIR

y_pred_Machine_Learning =
np.zeros((len(X_pred_Machine_Learning)*len(Z_pred_Machine_Learning),
8 ))y_pred_Machine_Learning.shape

4.9.1 K Vecinos más cercanos

El algoritmo de k vecinos más cercanos, también conocido como KNN o k-NN, es un


clasificador de aprendizaje supervisado no paramétrico, que utiliza la proximidad
para hacer clasificaciones o predicciones sobre la agrupación de un punto de datos
individual. Si bien se puede usar para problemas de regresión o clasificación,
generalmente se usa como un algoritmo de clasificación, partiendo de la suposición
de que se pueden encontrar puntos similares cerca uno del otro.

Se implementa el modelo del algoritmo de K-Vecinos más cercanos, para ello se


debe de importar la librería del modelo, declararlo y entrenarlo con los valores
seleccionados en la separación de los datos que ya se había realizado con
anterioridad.

75
Se realiza una predicción con los valores de entrada x_test, guardándolo en la
nueva variable y_pred_vecinos.

Posterior se muestra los valores de entrada (y_test) y salidas reales (y_test) que son
los valores seleccionados en la separación de los datos, posterior las salidas
generadas en la predicción (y_pred_vecinos).

76
77
4.9.2 Árbol de decisiones

Un árbol de decisión es un algoritmo de aprendizaje supervisado no paramétrico,


que se utiliza tanto para tareas de clasificación como de regresión. Tiene una
estructura de árbol jerárquico, que consta de un nodo raíz, ramas, nodos internos y
nodos hoja.

Un árbol de decisión comienza con un nodo raíz, que no tiene ramas entrantes. Las
ramas salientes del nodo raíz alimentan los nodos internos, también conocidos
como nodos de decisión. En función de las características disponibles, ambos tipos
de nodos realizan evaluaciones para formar subconjuntos homogéneos, que se
indican mediante nodos hoja o nodos terminales. Los nodos hoja representan todos
los resultados posibles dentro del conjunto de datos.

Para implementar el modelo de Árbol de decisiones, se debe de importar la librería


del modelo, que en este caso seria DecisionTreeRegressor, declararlo y entrenarlo
con los valores seleccionados en la separación de los datos luego se realiza una
predicción con los valores de entrada (x_test), guardándolo en la variable
y_pred_arbolito. Posterior se muestra los valores de entrada (x_test) y salidas reales
(y_test) que son los valores seleccionados en la separación de los datos, posterior
las salidas generadas en la predicción (y_pred_arbolito).

Si se puede observar el procedimiento es el mismo al anterior donde mandamos a


importar la librería del modelo en específico y utilizamos las variables entrenadas de
x_test y y_test para guardar en una variable nueva.

Importamos DecisionTreeRegressor de Sklearn.tree para poder pronosticar mejor


los valores, también tenemos otra librería disponible como es DecisionTreeClassifier
al igual que KNeighbour.

Luego pasamos a una variable llamada model para que tengan las funciones del
DecisionTreeRegressor y así equipar las variables de prueba y entrenamiento.

78
Después equipamos las variables con las variables de entrada y salida que
definimos desde un principio..

Después procedemos a imprimir los resultados obtenidos:

Luego procedemos a realizar una revision mediante la utilizacion del erro cuadrado
medio, esto para verificar con los valores originales

4.9.3 Bosques aleatorios

Un algoritmo de bosque aleatorio crea árboles de decisión para todos estos factores
y puede predecir con precisión cuáles de los clientes de la organización tienen un
alto riesgo de abandono.

El algoritmo selecciona muestras en forma aleatoria de la base de datos


proporcionada, luego el algoritmo creará un árbol de decisión para cada muestra
seleccionada. Luego obtendrá un resultado de predicción de cada árbol creado para
que después se llegue a realizar la votación para cada resultado previsto.

79
Para la implementación de los Bosques aleatorios,se debe de importar la librería del
modelo, la cual sería RandomForestRegressor declararlo y entrenarlo con los
valores seleccionados en la separación de los datos. Se realiza una predicción con
los valores de entrada (x_test), guardándolo en la variable y_pred_bosquealeatorio
Posterior se muestra los valores de entrada (x_test) y salidas reales (y_test) que son
los valores seleccionados en la separación de los datos, posterior las salidas
generadas en la predicción (y_pred_bosquealeatorio).

4.9.4 Regresión lineal

La regresión lineal es un método estadístico que trata de modelar la relación entre


una variable continua y una o más variables independientes mediante el ajuste de
una ecuación lineal. Se llama regresión lineal simple cuando solo hay una variable
independiente y regresión lineal múltiple cuando hay más de una. Dependiendo del
contexto, a la variable modelada se le conoce como variable dependiente o variable
respuesta, y a las variables independientes como regresores, predictores o features.

También se puede decir que la regresión lineal es una técnica de análisis de datos
que predice el valor de datos desconocidos mediante el uso de otro valor de datos
relacionado y conocido. Modela matemáticamente la variable desconocida o
dependiente y la variable conocida o independiente como una ecuación lineal.

La regresión lineal puede aplicarse a varias áreas de la empresa y de los estudios


académicos. Descubrirá que la regresión lineal se utiliza en todo, desde las ciencias
biológicas, conductuales, ambientales y sociales hasta en los negocios.

Dos de las implementaciones de modelos de regresión lineal más utilizadas en


Python son: scikit-learn y statsmodels. Aunque ambas están muy optimizadas,
Scikit-learn está orientada principalmente a la predicción, por lo que no dispone de
apenas funcionalidades que muestran las muchas características del modelo que se
deben analizar para hacer inferencia. Statsmodels es mucho más completo en este
sentido.

Para la implementación del modelo de Regresión lineal, se debera de importar la


librería del modelo llamada LinearRegression que viene de la librería sklearn
igualmente , entonces se procederá a declararlo y entrenarlo con los valores que ya

80
habíamos seleccionado con anterioridad en las variables x_test y y_test. Se
realizará una predicción con los valores de entrada (x_test), guardándolo en la
variable y_pred_lineal. Posteriormente se mostrarán los valores de entrada (x_test)
y salidas reales (y_test) que son los valores seleccionados en la separación de los
datos , posterior las salidas generadas se guardarán en la variable (y_predlineal).

Después de realizadas las predicciones se sacará el error del cuadrado medio para
verificar que las predicciones entre el modelo y los valores reales sean los más
precisos, su valor entre más cercano a cero sea, entonces significa que más preciso
es.

También se evaluará el coeficiente de determinación para verificar el ajuste del


modelo al que tratamos de predecir.

4.9.5 Regresión polinomial

Es un modelo de análisis de regresión en el que la relación entre la variable


independiente X y la variable dependiente Y se modela con un polinomio de n-ésimo
grado en X.

El objetivo de la regresión polinomial es modelar una relación no lineal entre las


variables independientes y dependientes (técnicamente, entre la variable
independiente y la media condicional de la variable dependiente).

Usamos la regresión polinomial cuando la relación entre un predictor y una variable


de respuesta no es lineal.

La Regresión Polinomial es un caso especial de la Regresión Lineal y es muy


parecido a ella, la diferencia es que los datos acá no son lineales por lo que se debe
implementar polinomios de grado n para obtener el modelo.

Para el comienzo del trabajo con una regresión polinomial se deberá ver el tipo de
grado de esa regresión así que para empezar a pronosticar mejor empezaremos
con una regresión de grado dos y subiendo sucesivamente en uno hasta llegar a
seis.

81
4.9.5.1 Regresión polinomial de grado 2

Se implementa el modelo de Regresión polinomial de grado 2, para ello se debe de


importar la librería del modelo, que en este caso es llamada Polynomial Features, de
la librería sklearning.Preprocessing ya está siendo declarada y guardada en una
variable que posteriormente usaremos para acceder a la funciones de esta libreria,
este variable la hemos estando llamado model y luego entrenaremos los valores
seleccionados de prueba x_test y y_test.

Se realiza una predicción con los valores de entrada (x_test), guardándolo en la


variable y_pred_poli_dos, posteriormente se muestra los valores de entrada (x_test)
y salidas reales (y_test) que son los valores seleccionados en la separación de los
datos, posterior las salidas generadas en la predicción (y_pred_poli_dos).

Luego se llega a la verificación con el cálculo del error cuadrático medio y el


coeficiente de determinación para conocer los valores ajustados del modelo.

4.9.5.2 Regresión polinomial de grado 3

4.9.5.3 Regresión polinomial de grado 4

4.9.5.4 Regresión polinomial de grado 5

4.9.5.5 Regresión polinomial de grado 6

4.9.6 Comparación de los modelos

82
CONCLUSIONES

1. Se desarrolló un análisis de la organización a nivel de contexto creando


modelos de organización, tareas y agentes como entrada a la situación
problemática actual.

2. Se realizaron los modelos de conocimiento y de comunicación lo que permitió


la comprensión de la organización a nivel de concepto.

3. Se diseñó el sistema experto con base al modelo de diseño y se crearon


diagramas que ayuden a visualizar su funcionamiento.

4. Se utilizaron correctamente los algoritmos de Machine Learning y redes


neuronales para darle vida al sistema experto.

83
RECOMENDACIONES

1. Se recomienda que Orbitech implemente el sistema experto para que realice


un pronóstico de ventas y ayude a la toma de decisiones sobre los productos
en inventario.

2. Se recomienda utilizar los algoritmos de Machine Learning ejemplificados en


este proyecto para realizar el sistema experto.

3. Se recomienda utilizar las redes neuronales para que el sistema tome


decisiones inteligentes una vez ingresado el dataset original de Orbitech.

84
REFERENCIAS BIBLIOGRÁFICAS

● Hinton, G. (2021, diciembre 13). Machine Learning: definición,


funcionamiento, usos. DataScientest.com. Recuperado octubre 19, 2022, de
https://datascientest.com/es/machine-learning-definicion-funcionamiento-usos

● Mendo, A. (2012, julio 5). Inteligencia Artificial (Matriz PAMA). Inteligencia


Artificial (Matriz PAMA). Recuperado octubre 19, 2022, de
https://matrizpama.blogspot.com

85
ANEXOS

ANEXO 1. COCOMO y Viabilidad

Punto de Función
Complejidad Baja Media Alta
Entradas 9 8 6
Salidas 32 5 21
Consultas 36 0 0
Tablas 21 30 0
A. Externos 0 0 0
PF 168

Cálculo del MF

∑Fi 31
PFA 161.28
#LDCM
ASP.NET 69
#LDCM SQL 40
TLDC 8,789.76
MF 8.78976

Factores del COCOMO

Factores de escala
Factor Índice Valor
Precedencia Alto 2.48
Flexibilidad Nominal 3.04
Team Nominal 4.24
Madurez Alto 3.12
Resolución Alto 2.83

Indicadores de costo del


producto
Indicador Índice Valor
RELY Nominal 1
DATA Alto 1.09
RUSE Alto 1.14
DOCU Nominal 1
TIME Muy Alto 1.31

86
STOR Alto 1.06
PVOL Nominal 1
CPLX Alto 1.15

Indicadores de costo del


personal
Indicador Índice Valor
ACAP Alto 0.83
PCAP Alto 0.87
PCON Muy Alto 0.84
AEXP Alto 0.89
PEXP Alto 0.88
LTEX Nominal 1
TOOL Nominal 1
SITE Muy Alto 0.84
SCED Nominal 1

Esfuerzo y tiempo por fases para distribución de personal


%Tiempo Cantidad
Tiempo de
Fase %Esfuerzo Esfuerzo de de Distribución
desarrollo
desarrollo hombres
Estudio
7% 2.52 18.07% 3.80 1 Jefe
Preliminar
Análisis 17% 6.12 25.03% 5.27 1 Analista
Diseño y Jefe y
60.90% 21.94 51.87% 10.91 2
Desarrollo Programador
Pruebas e Jefe y
Implementación 22.10% 7.96 23.10% 4.86 2 Analista
Total 100.00% 36.03 100.00% 21.03

Costo de fuerza de trabajo

Calculo costo de
trabajo por fase

CFT (1) 4,559.76


CFT (2) 4,001.55
CFT (3) 17,237.05
CFT (4) 9,522.42
CFT (total) 35,320.78

87
Costo de utilización de los medios técnicos

Consumo eléctrico Tiempo de desarrollo Distribución anual


Aparato kw/h Meses Horas Meses Consumo Costo ($)
Mouse 0.7596 12.00 2,496.00 Del 1 al 12 73,437.31 14,034.69
Teclado 0.7596 9.03 1,878.88 Del 13 al 21 55,280.53 10,564.72
Monitor 7.3428 Total 4,374.88 CUMT 24,599.41
CPU 20.56
Total 29.42

Costo total del proyecto

Costo Fuerza de Trabajo 35,320.78


Costo Utilización de Medios Técnicos 24,599.41
Costo de Materiales -
Otros Gastos -
Costos Directos 59,920.19
Costos Indirectos 5,992.02
Costo Total 65,912.21

Flujos de efectivo

Flujos de efectivo proyectados


Años 0 1 2 3
Ventas Totales 100,000.00 120,000.00 144,000.00
Devoluciones s/ ventas 5,000.00 6,000.00 7,200.00
Costo de Ventas 50,000.00 57,500.00 66,125.00
Utilidad Bruta 45,000.00 56,500.00 70,675.00
Gastos de Operación 1,000.00 1,000.00 1,000.00
U.A.I.I 44,000.00 55,500.00 69,675.00
Intereses Pagados 3,460.39 2,463.88 1,317.89
U.A.I 40,539.61 53,036.12 68,357.11
IR (30%) 12,161.88 15,910.84 20,507.13
U.D.I 28,377.73 37,125.29 47,849.98
(-)abono a la deuda 6,643.42 7,639.93 8,785.92
Inversión Total -65,912.21
Préstamo Bco 23,069.27
Flujo Neto de Efectivo -42,842.93 21,734.31 29,485.35 39,064.06

88
Viabilidad

Viabilidad
Valor Presente Neto 33,558.04
Tasa Interna de Retorno 43%
Índice de Rentabilidad 1.78
Costos vs Beneficios 2.10

89

También podría gustarte