lunes, 16 de diciembre de 2019

Data Science: Análisis de los Componentes Principales

Cuando tenemos un dataset con muchas variables, se hace necesario un método para reducir el número de variables a tener en cuenta a las más significativas. Para eso se utiliza el ACP:

domingo, 1 de diciembre de 2019

jueves, 28 de noviembre de 2019

Data Science: Árboles y Bosques Aleatorios








Data Science: Árboles y Bosques Aleatorios - Árboles de Regresión

Los árboles de regresión son iguales que los de decisión, excepto que los árboles de regresión sirven para predecir una variable numérica en lugar de una categórica. Son útiles cuando no existe una relación lineal que nos permita predecir la variable con una regresión lineal:

viernes, 22 de noviembre de 2019

Data Science: Clustering K-Means: Cómo obtener el número óptimo de clusters (Teoría)

Para obtener el número óptimo de clusters a utilizar para k-means, existen dos métodos que podemos utilizar: El método del codo y el coeficiente de la silueta.

domingo, 17 de noviembre de 2019

jueves, 31 de octubre de 2019

Data Science: Regresión Lineal: Outliers y resumen

Vamos a ver el problema de los outliers en una regresión lineal y cómo solucionarlo. Y un pequeño resumen de las regresiones lineales hasta ahora:

miércoles, 30 de octubre de 2019

Data Science: Regresión no Lineal

A veces la relación entre dos variables no es lineal, y por tanto una regresión lineal no es el mejor modelo de predicción posible. Vamos a verlo con más detalle:

domingo, 27 de octubre de 2019

Data Science: Regresión Lineal: scikit-learn

Ya hemos visto cómo hacer una regresión lineal en Python con la librería statsmodel, ahora vamos a ver cómo hacerla con scikit-learn:

viernes, 25 de octubre de 2019

Data Science: Regresión Lineal: Multicolinealidad

Siguiendo con el ejemplo anterior, vamos ver cómo podemos solucionar uno de los problemas de la correlación lineal múltiple, la multicolinealidad.

jueves, 24 de octubre de 2019

Data Science: Regresión Lineal Múltiple

Siguiendo con la entrada de la regresión lineal, vamos a ver cómo hacer una regresión lineal múltiple (que haya dos o más variables predictoras):

viernes, 18 de octubre de 2019

MongoDB: Securing database access

We will conclude this chapter by informing you about database security. So far, we have started and used MongoDB without any authentication process. Actually, starting mongod without any additional option exposes the database to any user who is aware of the process.

jueves, 17 de octubre de 2019

domingo, 18 de agosto de 2019

Python: Librería matplotlib y seaborn

Las librerías matplotlib sirve para poder pintar gráficos con datos obtenidos de dataframes, por ejemplo. La librería seaborn está basada en matplotlib y es una versión más avanzada de ésta:

jueves, 15 de agosto de 2019

miércoles, 14 de agosto de 2019

martes, 13 de agosto de 2019

viernes, 9 de agosto de 2019

Python: Pruebas y Unittest

En Python podemos ejecutar pruebas de código escribiéndolas dentro de los comentarios. Vamos a ver cómo.

jueves, 1 de agosto de 2019

Python: Ficheros externos

Vamos a ver los diferentes métodos para crear y leer ficheros de texto y binarios en Python:

Python: Módulos y Paquetes

Los módulos no son más que los diferentes ficheros en los que dividimos el código, y los paquetes las carpetas en las que guardamos los módulos. Vamos a ver un ejemplo.

miércoles, 31 de julio de 2019

Python: Métodos de cadenas

 Éstos son los métodos de cadena que soportan tanto las cadenas de caracteres de 8 bit como los objetos Unicode:

domingo, 28 de julio de 2019

Data Science: Joins entre datasets. Teoría en imágenes

Al igual que con bases de datos relacionales, en las que podemos hacer consultas haciendo joins o uniones de tablas a través de un campo clave que se comparta en ambas, con Python podemos hacer exactamente lo mismo con diferentes datasets que compartan algún campo.

Aunque explicaremos en otra entrada cómo hacerlo en código, aquí va una recopilación de imágenes de la teoría de los diferentes joins que se pueden hacer, para recordar.

sábado, 20 de julio de 2019

miércoles, 17 de julio de 2019

domingo, 7 de julio de 2019

lunes, 24 de junio de 2019

Data Science: Las 5 etapas del análisis de datos

La ciencia de los datos es un campo que intenta extraer ideas, información útil, predicciones, etc. a partir de una cantidad de datos. Normalmente el análisis de datos sigue estas 5 etapas:

domingo, 23 de junio de 2019

jueves, 20 de junio de 2019

Python: Referencia Rápida parte 1

Aquí iré acumulando hojas de referencia rápida de Python para que sirvan de ayuda.
Además, enlace a documentación de Python: http://pyspanishdoc.sourceforge.net/

sábado, 8 de junio de 2019

Angular: Binding Vista/Modelo o "Formulario HTML/Componente TypeScript"

Vamos a ver cómo la librería @angular/forms enlaza las vistas, los controladores y los modelos, o cómo enlazar campos de html con atributos del componente TypeScript.

sábado, 27 de abril de 2019

Angular: Bug Angular 6. node_modules/rxjs/internal/types.d.ts(81,44): error TS1005: ';' expected.

Últimamente me salta este error en la consola cuando intento crear un proyecto nuevo en Angular 6:

ERROR in node_modules/rxjs/internal/types.d.ts(81,44): error TS1005: ';' expected.
node_modules/rxjs/internal/types.d.ts(81,74): error TS1005: ';' expected.
node_modules/rxjs/internal/types.d.ts(81,77): error TS1109: Expression expected.

Parece ser que es un problema de versiones que existe actualmente. Para arreglarlo, hay que modificar el fichero "package.json" como sigue:

Modificar:

"rxjs-compat": "^6.2.2"

a:

"rxjs-compat": "6.2.2"

Para resolver el problema, encontré la solución en los siguientes enlaces:

https://github.com/ReactiveX/rxjs/issues/4512

https://stackoverflow.com/questions/54529027/node-modules-rxjs-internal-types-d-ts81-44-error-ts1005-expected-error-a

Y eso es todo.

miércoles, 27 de febrero de 2019

martes, 19 de febrero de 2019

Angular: 52. CRUD Firebase. AngularFire2: Instalación de la librería

La librería AngularFireBase2 nos va a permitir utilizar mejor los recursos de Firebase. Vamos a crear un nuevo proyecto y vamos a aprender a utilizar la librería. En esta entrada vamos a aprender cómo instalarla.

miércoles, 13 de febrero de 2019

Java: Leer un fichero TXT y transformarlo en un JSON

Vamos a crear una aplicación que lea el contenido de un fichero .txt y que lo transforme en un fichero con un objeto JSON válido.

martes, 12 de febrero de 2019

Angular: Suscripciones y Observables

Los observables son de los conceptos más útiles y a la vez más difíciles de entender al comenzar con Angular. Éstos se utilizan, mayormente, para compartir información entre distintos componentes de forma asíncrona.

lunes, 11 de febrero de 2019

TypeScript: Let, la nueva forma de declarar variables en Javascript

Una de los primeras cosas que aprendimos hace ya más de décadas cuando íbamos descubriendo poco a poco el lenguaje BASIC fue el comando LET para asignar valores a nuestras variables. Es patente que la retroinformática está de moda y que la Historia está destinada a repetirse una y otra vez porque será a finales de este 2014 cuando el nuevo ECMAScript 6 resucite esta palabra reservada para precisamente eso: asignar valor a nuestras variables en Javascript.

Veamos qué cosas implica esta nueva forma de declarar variables…

domingo, 10 de febrero de 2019

TypeScript: Funciones de flecha

Las funciones flecha son una de las novedades ES6 (ECMAScript 2015) que más pueden desconcertar a los desarrolladores tradicionales. Su estructura intimida a simple vista y, de hecho, cuando nos las encontramos en un código sin avisar, pueden parecer incluso un error de sintaxis. Quizá ya os ha pasado: revisáis un código moderno en un blog, o en un repositorio de GitHub, e inmediatamente se os va la vista a una estructura rara que no parece que vaya a funcionar en la vida. -¿Pero eso es Javascript? – sería otra pregunta recurrente que quizá os haya hecho algún colega mientras jugáis con esta nueva sintaxis a escondidas…

jueves, 7 de febrero de 2019

Java: ordenar ArrayList de objetos por uno de sus atributos

A partir de la versión 1.8 de Java, se pueden utilizar expresiones regulares para ordenar una lista de objetos por uno de sus atributos, con el siguiente comando:

this.getTimers().sort(Comparator.comparing(TimerBean::getDescripcion));

Siendo "Timers" nuestra lista de objetos "TimerBean" y "descripcion" el atributo por el que queremos ordenar la lista.

Comentar que también ordena por atributos de tipo numérico o fecha.

sábado, 26 de enero de 2019

Angular: 45. CRUD Firebase. Creación del proyecto y componentes

Vamos a empezar un nuevo proyecto en el que vamos a aprender a hacer CRUD (Create, Read, Update y Delete) en una base de datos con Angular.

sábado, 19 de enero de 2019

Angular: 41. Formularios. Array de campos en un formulario

Vamos a ver cómo podemos tratar en un formulario un array de campos, por ejemplo una lista de aficiones en la que cada una sea un String diferente y cuyo número pueda variar de persona a persona.

domingo, 13 de enero de 2019

Angular: 40. Formularios. Precargar datos en el formulario y resetear sus campos

Vamos a ver, por un lado, cómo precargar los campos de un formulario con la información que tengamos en un objeto, y por otro, cómo resetear correctamente los campos de un formulario.

martes, 8 de enero de 2019

Angular: 39. Formularios. Agrupar objetos en formularios

En la entrada pasada vimos cómo validar campos mediante data, pero esos campos estaban todos en la raíz del formulario. Vamos a ver cómo agrupar campos del formulario por temática mediante formGroupName.