/analisis-contratos-gov

Aprendizaje automático en la celebración de contratos gubernamentales en Colombia.

Primary LanguageJupyter NotebookMIT LicenseMIT


SECOP
Análisis de contratos gubernamentales en Colombia

Aprendizaje automático para predicción de valor de contratos, agrupamiento de palabras clave y detección de anomalías.

scikit-learn wordcloud nltk gensim pandas

Key FeaturesHow To UseCreditsLicense

screenshot

Características principales

Este proyecto de machine learning tiene como objetivo analizar a detalle la información desplegada por la página oficial de datos abiertos del gobierno de Colombia y del Sistema Electrónico para la Contratación Pública (SECOP), todo con la finalidad de encontrar posibles anomalías, agrupar texto clave del objetivo de los contratos y predecir los gastos.

El conjunto de datos es tomado de SECOP Integrado | Gastos Gubernamentales. A continuación mostramos las características clave del proyecto:

  • El conjunto de datos consta de 1996395 contratos (filas) por 21 columnas. Las columnas constan de la siguiente información:

    • Nivel Entidad
    • Nombre de la Entidad
    • NIT de la Entidad
    • Estado del Proceso
    • Modalidad de Contratación
    • Objeto a Contratar
    • Tipo de Contrato
    • Fecha de Firma del Contrato
    • ID Contrato
    • ID Proceso
    • Valor Contrato
    • Nom Raz Social Contratista
    • URL Contrato
    • Departamento Entidad
    • Municipio Entidad
    • Objeto del Proceso
    • Fecha Inicio Ejecucion
    • Fecha Fin Ejecucion
    • Tipo Contrato (Es una característica duplicada, pero existe)
    • Origen
    • Documento Proveedor
  • Tras limpiar datos duplicados, no relevantes o mal insertados, redujimos el tamaño del conjunto de datos en un 85%.

  • La predicción de gastos utiliza un modelo de regresón con bosques aleatorios, cuyo input es tomado gracias a one-hot-encoding de las siguientes características

    • Nombre de la Entidad
    • Estado del Proceso
    • Objeto a Contratar
    • Municipio Entidad
    • Tipo Contrato
  • Usamos módulos de Scikit-Learn como:

    • sklearn.ensemble.RandomForestRegressor: Predictor de valor de contrato.
    • sklearn.metrics.r2_score : Métrica para evaluar el desempeño del predictor.
  • También se usaron técnicas de procesamiento de lenguaje natural con GenSim y NLTK. Obteniendo palabras clave como

    • mantenimiento
    • prestacion
    • municipio
    • profesionales
    • suministro
  • Finalmente, tomamos los contratos que se salían del 95% de los datos asociados a una distribución normal. Obteniendo 55 contratos anómalos (No por ello producto de acciones fraudulentas): screenshot

¿Cómo usar?

Para ejecutar de manera local este proyecto, siga estos pasos:

# Clone el repositorio
$ git clone https://github.com/santiagoahl/analisis-contratos-gov.git

# Entre a la carpeta del repositorio
$ cd analisis-contratos-gov

Creditos

Este proyecto hace uso de las siguientes librerías y conjuntos de datos:

Licencia

MIT


Web Site santiagoal.super.site  ·  GitHub @santiagoahl  ·  Twitter @sahumadaloz