scipy

Análisis Cluster (III): Clasificación no supervisada mediante K-medias

(Este es el tercer capítulo de la mini-serie de artículos sobre análisis cluster que estamos haciendo en pybonacci, si todavía no has leído los anteriores artículos les puedes echar un ojo ahora. Escribir esta tercera parte solo ha tardado ¡¡¡tres años en salir!!!).El algoritmo de k-medias es uno de los… Leer más »Análisis Cluster (III): Clasificación no supervisada mediante K-medias

Teoría de control en Python con SciPy (II): Control PID

Introducción En esta serie de artículos vamos a estudiar cómo podemos aplicar Python al estudio de la teoría de control, en este caso utilizando SciPy. La teoría de control se centra en los sistemas dinámicos con entradas: sistemas físicos cuyo estado evoluciona con el tiempo en función de la información… Leer más »Teoría de control en Python con SciPy (II): Control PID

Teoría de control en Python con SciPy (I): Conceptos básicos

Introducción En esta serie de artículos vamos a estudiar cómo podemos aplicar Python al estudio de la teoría de control, en este caso utilizando SciPy. La teoría de control se centra en los sistemas dinámicos con entradas: sistemas físicos cuyo estado evoluciona con el tiempo en función de la información… Leer más »Teoría de control en Python con SciPy (I): Conceptos básicos

Hoja de ruta para SciPy 1.0

Los desarrolladores de SciPy han anunciado, a través de la lista de correo, que se ha preparado un borrador con la hoja de ruta hacia la consolidación de SciPy 1.0. Hoja de ruta: https://github.com/rgommers/scipy/blob/roadmap/doc/ROADMAP.rst.txt Anuncio en la lista de correo: http://mail.scipy.org/pipermail/scipy-dev/2013-September/019237.html Ralf Gommers, Pauli Virtanen y David Cournapeau se reunieron… Leer más »Hoja de ruta para SciPy 1.0

Ajuste e interpolación unidimensionales básicos en Python con SciPy

Introducción En este artículo vamos a ver una introducción a cómo hacer ajustes e interpolaciones en Python utilizando NumPy y los módulos interpolate y optimize de SciPy. Ajustes de curvas e interpolaciones son dos tareas básicas que realizaremos con mucha frecuencia. Por ejemplo, cuando recojamos los datos de un experimento:… Leer más »Ajuste e interpolación unidimensionales básicos en Python con SciPy

Análisis Cluster (II): Clasificación no supervisada mediante clasificación jerárquica aglomerativa

(Este es el segundo capítulo de la mini-serie de artículos sobre análisis cluster que estamos haciendo en pybonacci, si todavía no has leído el artículo inicial échale un ojo ahora).
Como vimos anteriormente, existen diferentes formas de hacer clustering y, como también comentamos anteriormente, una de las más habituales es el clustering jerárquico.
El clustering jerárquico asociativo pretende, partiendo de m observaciones, ir encontrado agrupaciones de forma jerarquizada. Para ello, primero busca similitudes entre las observaciones y después procura asociar en grupos o ‘clusters’ las observaciones que se encuentran ‘más cercanas’ o presentan mayor similitud.
Si os acordáis, en el primer capítulo de esta mini-serie, entrecomillamos la palabra ‘similitud’. Vamos a ver qué significa esto de similitud en general y en nuestro ejemplo concreto (ver capítulo anterior de la serie para conocer el ejemplo). Dependiendo del problema concreto necesitaremos asociar las variables para poder medir como son de similares o a qué distancia se encuentran entre sí. Estas medidas de asociación (similitud o distancia) dependerán del problema concreto con el que nos encontremos y no se usaría lo mismo para variables booleanas, binarias, reales,… Gracias al módulo scipy.spatial.distance podemos ver muchas de estas medidas de asociación en las que no voy a entrar en detalle. Un resumen de la mayoría de ellas lo podéis ver en el siguiente enlace del profesor José Ángel Gallardo San Salvador, nuevamente. En el ejemplo propuesto usaremos la correlación como medida de asociación ya que es una medida invariante aunque las variables se escalen y/o se les sumen/resten parámetros (algo muy útil para el caso que nos ocupa).
Leer más »Análisis Cluster (II): Clasificación no supervisada mediante clasificación jerárquica aglomerativa

Cómo resolver ecuaciones algebraicas en Python con SciPy

Introducción

En este artículo vamos a utilizar las rutinas de búsqueda de raíces ya disponibles en el módulo scipy.optimize para resolver ecuaciones algebraicas con Python. Ya vimos hace tiempo cómo encontrar el mínimo de una función con SciPy, y también cómo implementar los métodos de la bisección y de Newton en Python. Ahora, además, exploraremos el caso de sistemas de ecuaciones.
En esta entrada se ha usado python 2.7.3, numpy 1.6.2 y scipy 0.11.

Ejemplo básico: métodos de Brent y de Newton

Aunque el método de la bisección es muy conocido porque conceptualmente es muy sencillo de entender, nos vamos a olvidar de él y vamos a utilizar en su lugar el método de Brent, que viene implementado en SciPy en la función scipy.optimize.brentq, ya que según la documentación es la mejor opción. El método de Brent es un algoritmo complicado que combina el método de la bisección, el de la secante e interpolación cuadrática inversa: como el método de la bisección, tiene convergencia garantizada siempre que demos un intervalo $latex [a, b]$ donde $latex f(a) f(b) < 0$; es decir, que haya un cambio de signo en el intervalo.
Leer más »Cómo resolver ecuaciones algebraicas en Python con SciPy