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:

jueves, 12 de diciembre de 2019

Data Science: K Nearest Neighbors

Vamos a ver otra técnica de clasificación, la de los K Nearest Neighbors:

domingo, 1 de diciembre de 2019

Data Science: Support Vector Machines

Los Support Vector Machines son otra forma más avanzada de clasificar y/o predecir valores para un conjunto de datos.

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:

miércoles, 27 de noviembre de 2019

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.

jueves, 21 de noviembre de 2019

Data Science: Clustering K-Means (Teoría)

Un clustering también se puede hacer por el método k-means:

martes, 19 de noviembre de 2019

Data Science: Clustering Jerárquico y Métodos de Enlace (Teoría)

Vamos a ver los diferentes métodos de enlace que se pueden utilizar para hacer un clustering jerárquico:

Data Science: Clustering y Distancia (Teoría)

Vamos a ver un poco de teoría de Clustering y el concepto de Distancia:

domingo, 17 de noviembre de 2019

Data Science: Regresión Logística: Matrices de confusión y curvas ROC (Teoría)

Vamos a ver teoría en imágenes más validaciones de regresiones logísticas. En concreto, matrices de confusión y curvas ROC:

sábado, 16 de noviembre de 2019

Data Science: Regresión Logística: Validaciones Cruzadas (Teoría)

Vamos a ver un resumen con imágenes de los tipos de validaciones cruzadas que existen:

viernes, 1 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:

martes, 29 de octubre de 2019

Data Science: Regresión Lineal con variables categóricas

Vamos a ver ahora cómo hacer una regresión lineal con variables categóricas:

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:

sábado, 26 de octubre de 2019

Data Science: Regresión Lineal: Validación del modelo

Siguiendo con la entrada anterior, vamos a ver cómo validar nuestro modelo de predicción.

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):

miércoles, 23 de octubre de 2019

Data Science: Regresión Lineal

Vamos a ver cómo hacer una regresión lineal con Python:

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

MongoDB: Comandos básicos de mongo shell

Una vez que hemos instalado MongoDB en nuestro PC, podemos empezar a manejar la base de datos:

miércoles, 25 de septiembre de 2019

lunes, 16 de septiembre de 2019

martes, 20 de agosto de 2019

Data Science: Coeficiente de Correlación de Pearson

Vamos a ver cómo calcular el coeficiente de correlación de Pearson con Python:

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:

sábado, 17 de agosto de 2019

viernes, 16 de agosto de 2019

Python: Crear un dataframe desde HTML y Excel

Vamos a ver cómo crear un dataframe desde una página web y desde un archivo Excel:

jueves, 15 de agosto de 2019

Python: Librería pandas

La librería pandas nos permite la creación y manejo de series y dataframes.

miércoles, 14 de agosto de 2019

Python: Librería numpy

La librería numpy nos permite generar y realizar operaciones con números de forma rápida y simple.

martes, 13 de agosto de 2019

Python: Generar ejecutables

Vamos a ver cómo generar un ejecutable de nuestra aplicación Python para Windows.

lunes, 12 de agosto de 2019

Python: JSON y fechas

Vamos a ver brevemente cómo manejar datos JSON y de fechas.

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, 8 de agosto de 2019

miércoles, 7 de agosto de 2019

Python: Funciones Decoradoras

Vamos a ver qué son y para qué sirven las funciones decoradoras.

martes, 6 de agosto de 2019

Python: Expresiones Regulares o RegEx

Vamos a ver cómo utilizar las expresiones regulares en Python.

lunes, 5 de agosto de 2019

Python: Funciones Lambda, Filter y Map

Vamos a ver cómo utilizar las funiones Lambda, Filter y Map en Python.

viernes, 2 de agosto de 2019

Python: Bases de datos

Vamos a ver comandos básicos para bases de datos con Python:

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:

martes, 30 de julio de 2019

lunes, 29 de julio de 2019

Data Science: Joins entre datasets. Práctica

Vamos a ver cómo hacer los diferentes tipos de joins entre datasets en código Python.

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.

viernes, 26 de julio de 2019

Data Science: Concatenar varios dataset en uno solo

Vamos a ver cómo podemos concatenar varios datasets (que tengan las mismas columnas) en uno sólo.

martes, 23 de julio de 2019

Data Science: División de un dataset en conjunto de entrenamiento y pruebas

Vamos a ver cómo dividir un dataset en un conjunto para entrenamiento (training) y otro para pruebas (testing).

lunes, 22 de julio de 2019

Data Science: Agregación de datos, Filtrados, Transformaciones, etc.

Siguiendo con el ejercicio anterior, vamos a ver como podemos realizar cálculos con los valores de las columnas.

sábado, 20 de julio de 2019

Data Science: Agrupación de datos por categorías

Siguiendo con el ejercicio anterior, vamos a ver cómo agrupar los datos por los valores de una variable categórica.

jueves, 18 de julio de 2019

Data Science: Generación de dummy DataFrames

Vamos a ver cómo generar DataFrames con datos dummys o generados al azar.

miércoles, 17 de julio de 2019

Data Science: Generación de distribuciones uniformes y normales

Vamos a ver cómo podemos generar con Python una serie de números que sigan una distribución uniforme y otra normal.

martes, 16 de julio de 2019

Cómo sincronizar un proyecto Java en Eclipse con un repositorio GitHub

Vamos a ver cómo sincronizar un proyecto Java en Eclipse con un repositorio de GitHub.

lunes, 15 de julio de 2019

lunes, 8 de julio de 2019

Data Science: Visualización básica de un dataset: Boxplot

El boxplot, o diagrama de caja y bigotes, es uno de los más útiles.

domingo, 7 de julio de 2019

Data Science: Visualización básica de un dataset: Histograma de Frecuencias

El histograma de frecuencias, o gráfico de barras de toda la vida, es la forma más básica de visualización de datos.

sábado, 6 de julio de 2019

Data Science: Visualización básica de un dataset: Scatterplot (nube de puntos)

Los plots son representaciones gráficas de los datos. Vamos a ver cómo crear un scatterplot (nube de puntos).

jueves, 4 de julio de 2019

Data Science: Creación de variables dummies (Dummification)

Vamos a ver cómo crear variables dummies o de prueba en nuestros dataset:

miércoles, 3 de julio de 2019

Data Science: Cómo actuar ante valores vacíos de un dataset

Cuando nos encontramos con valores nulos en un dataset. Podemos actuar de las siguientes formas:

viernes, 28 de junio 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

Data Science: Instalaciones necesarias

Vamos a empezar con Machine Learning y Python. Lo primero es instalar todas las herramientas necesarias.

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/

martes, 11 de junio de 2019

domingo, 9 de junio de 2019

Angular: 60. Gráficas de estadísticas con Chartjs: Instalación

Vamos a ver cómo podemos pintar gráficas de estadísticas en Angular.

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.

domingo, 10 de marzo de 2019

sábado, 9 de marzo de 2019

Angular: 57. CRUD Firebase. AngularFire2: Autentificación con Google

Vamos a modificar la aplicación para poder autentificarnos con Google antes de entrar al chat.

miércoles, 27 de febrero de 2019

Angular: 56. CRUD Firebase. AngularFire2: Querys y ordenar los mensajes en pantalla

Vamos a ordenar correctamente los mensajes que aparecen en la ventana del chat. Para ello vamos a tener que realizar una query a FireBase.

martes, 26 de febrero de 2019

Angular: 55. CRUD Firebase. AngularFire2: Cargar y agregar mensajes al chat

Vamos a continuar con la aplicación. Esta vez vamos a cargar los mensajes de FireBase en la ventana del chat.

viernes, 22 de febrero de 2019

jueves, 21 de febrero de 2019

Angular: 53. CRUD Firebase. AngularFire2: Componente del chat

Vamos a continuar con la aplicación. Ahora vamos a crear y personalizar el componente del chat.

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.

lunes, 4 de febrero de 2019

domingo, 3 de febrero de 2019

Angular: 50. CRUD Firebase. HTTP - GET. Consultar todos los registros

Vamos a ver cómo consultar todos los registros y mostrarlos en una tabla.

sábado, 2 de febrero de 2019

jueves, 31 de enero de 2019

miércoles, 30 de enero de 2019

domingo, 27 de enero de 2019

Angular: 46. CRUD Firebase. Creación del servicio y el formulario

Vamos a continuar con la aplicación, esta vez crearemos el servicio y el formulario.

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.

miércoles, 23 de enero de 2019

martes, 22 de enero de 2019

lunes, 21 de enero de 2019

Angular: 42. Formularios. Validaciones personalizadas

Vamos a ver cómo podemos crear nuestras propias validaciones de campos.

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.

miércoles, 2 de enero de 2019

Vectorizar imágenes con Inkscape

Vamos a ver cómo vectorizar una imagen utilizando el programa gratuito Inkscape.