Sie sind auf Seite 1von 4

Paúl Barriga

21378

Data Mining (CMP575)

Deber 1

1. Transformar el archivo binario del día 30 (wc_day30_1.gz) para que toda la información
contenida en ese archivo esté presente en una base de datos. Use el motor de base de
datos de su preferencia
Herramientas Utilizadas
- Lenguaje de programación: Java para extraer los datos q se encuentran
almacenados en el archivo binario. Para extraer tipos de dato uint de 32 bits
utilicé datos tipo long y para los uint de 8 bits utilicé short para poder
almacenar todos los bits sin perder precisión.
- Motor de base de datos: MySql fue la base de datos escogida para almacenar
los datos. Se creó una tabla que contiene ocho campos equivalentes a la
estructura almacenada en el archivo binario que representa un registro.

Forma de Implementación

- Se implementó la lectura del archivo en java utilizando la clase


RandomAccessFile para tener acceso a nivel de bytes en posiciones específicas
del archivo. Luego de leer los datos se utilizó conexión jdbc para enviar los
datos a la base de datos. Para mejorar el rendimiento se usó threads; se
dividió el archivo en rangos de igual tamaño para que cada thread realice su
trabajo por separado y se utilice al máximo la capacidad de
multiprocesamiento. Luego de 23 minutos con 5 segundos la ejecución del
programa termina y se obtienen 3,484,290 de registros.

2. Escriba un programa que accese la base de datos y calcule todos los parámetros
necesarios para graficar un boxplot con el tamaño de los archivos.
De igual manera para tener acceso a la base de datos se utilizó java y conexión jdbc. El
cálculo de los valores para graficar el boxplot se hizo de la siguiente manera.
El campo que tiene los datos de interés es “size”;
El nombre de la tabla es “entire”;

Query para calcular el mínimo


SELECT min(size) FROM entire;
Query para calcular el máximo
SELECT max(size) FROM entire;
Query para calcular la mediana
Para calcular la mediana utilicé dos queries.
Primero un query que calcule el número total de registros de la base de datos
int count = SELECT count(size) from entire;
Después se utilize el siguiente query para obtener la mediana
SELECT size FROM entire ORDER BY size LIMIT count/2, 2

Query para calcular Q1


Se sigue la misma estrategia anterior.
SELECT size FROM entire ORDER BY size LIMIT count/4, 2

Query para calcular Q3


Se sigue la misma estrategia anterior.
SELECT size FROM entire ORDER BY size LIMIT 3*count/4, 2

Los resultados obtenidos son los siguientes


Mínimo: -1
Q1: 173.0
Mediana: 892.0
Q3: 2526.0
Máximo: 2891887
Rango Intercuartil: 2353.0

3. Grafique el correspondiente boxplot para el tamaño de los archivos.


La implementación del graficador del boxplot también fue hecha en java en una clase que
toma los cinco números calculados y realiza los cálculos para representar de buena
manera en pantalla la distribución quedando como resultado el siguiente boxplot.
Además, se calcula el rango intercuartil y el máximo corregido para saber desde donde
empiezan los datos aberrantes de la distribución.
Como se puede notar en el gráfico, el valor máximo corregido es igual a 6055.5
concluyendo por tanto que existen datos aberrantes que afectan la manera en que los
datos están distribuidos. También se nota el valor mínimo igual a -1 que claramente es un
error de los datos ya que no es posible que el tamaño de un archivo tenga valor negativo.
4. Existen outliers?
Sí existen outliers y son los datos que se encuentran más allá de una distancia de 1.5 veces
el rango intercuartil a partir de Q3. En el gráfico se nota que hasta 6055.5 los datos tienen
gran probabilidad de ser datos reales y coherentes y todos aquellos registros que
sobrepasen este límite muy probablemente son outliers.

5. Qué inconsistencias observa en la información almacenada en la base de datos? Justifique


su respuesta.
La inconsistencia que se puede observar es el valor mínimo de la distribución que es igual
a -1. Cómo se tratan de tamaños de archivo es imposible que el valor sea un dato real,
entonces podemos inferir que el dato fue mal llenado y que se necesita realizar algún
proceso de limpieza de datos. Además, los puntos aberrantes pueden ser vistos como
inconsistencias pero no se puede aceptar con la misma certeza que la aseveración
anterior.

6. Repita el gráfico de boxplot corrigiendo la inconsistencia observada mediante cualquiera


de los mecanismos estudiados.
Para corregir los datos inconsistentes tomaré el siguiente valor, la media que existe en el
rango intercuartil para de esta manera suavizar la distribución. Los puntos aberrantes no
serán tomados en cuenta ya que puede que sí existan archivos con el tamaño máximo
pero como se nota en la distribución, éstos no son comunes.
Primero que todo encuentro el valor indicado antes para que reemplace el dato
inconsistente (-1)
int mediaAjustada = SELECT avg(size) FROM entire WHERE size > Q1 AND size < Q3;
Entonces el valor de la mediaAjustada da como resultado 948.
Luego se realiza el query que actualizará los datos inconsistentes
UPDATE entire SET size =948 WHERE size = -1
578747 row(s) affected. ( Query took 4.1742 sec )

Ahora nuevamente utilizo el programa en java que calcula y grafica los valores necesarios
para realizar el boxplot obteniendo los siguientes resultados
Mínimo: 0
Q1: 668.0
Mediana: 948.0
Q3: 2526.0
Máximo: 2891887
Rango Intercuartil: 1858.0

7. Existen outliers?
Sí existen outliers en esta nueva distribución de los datos y de hecho existen más datos
que entran a ser outliers ya que no se tiene la inconsistencia presente al inicio del análisis
de los datos y la distribución se mueve más hacia donde están la mayoría de los datos. El
número de registros con datos aberrantes es 537621 que equivale más o menos al 15% del
total de los datos.

Das könnte Ihnen auch gefallen