La función sigmoidea en Python

Muhammad Waiz Khan 30 enero 2023
  1. Implementar la función sigmoidea en Python usando el módulo math
  2. Implementar la función sigmoidea en Python usando el método numpy.exp()
  3. Implementar la función sigmoidea en Python usando la biblioteca SciPy
La función sigmoidea en Python

En este tutorial, veremos varios métodos para usar la función sigmoidea en Python. La función sigmoidea es una función logística matemática. Se usa comúnmente en estadística, procesamiento de señales de audio, bioquímica y la función de activación en neuronas artificiales. La fórmula para la función sigmoidea es F(x) = 1/(1 + e^(-x)).

Implementar la función sigmoidea en Python usando el módulo math

Podemos implementar nuestra propia función sigmoidea en Python usando el módulo math. Necesitamos el método math.exp() del módulo math para implementar la función sigmoidea.

El siguiente código de ejemplo demuestra cómo utilizar la función sigmoidea en Python.

import math


def sigmoid(x):
    sig = 1 / (1 + math.exp(-x))
    return sig

El problema con esta implementación es que no es estable numéricamente y puede ocurrir el desbordamiento.

El código de ejemplo de la implementación numéricamente estable de la función sigmoidea en Python se da a continuación.

import math


def stable_sigmoid(x):

    if x >= 0:
        z = math.exp(-x)
        sig = 1 / (1 + z)
        return sig
    else:
        z = math.exp(x)
        sig = z / (1 + z)
        return sig

Implementar la función sigmoidea en Python usando el método numpy.exp()

También podemos implementar la función sigmoidea usando el método numpy.exp() en Python. Al igual que las implementaciones de la función sigmoidea usando el método math.exp(), también podemos implementar la función sigmoidea usando el método numpy.exp().

La ventaja del método numpy.exp() sobre math.exp() es que, además de integer o float, también puede manejar la entrada en forma de array.

A continuación se muestra la implementación de la función sigmoidea normal utilizando el método numpy.exp() en Python.

import numpy as np


def sigmoid(x):

    z = np.exp(-x)
    sig = 1 / (1 + z)

    return sig

Para la implementación numéricamente estable de la función sigmoidea, primero necesitamos verificar el valor de cada valor del array de entrada y luego pasar el valor de la sigmoidea. Para esto, podemos usar el método np.where(), como se muestra en el código de ejemplo a continuación.

import numpy as np


def stable_sigmoid(x):

    sig = np.where(x < 0, np.exp(x) / (1 + np.exp(x)), 1 / (1 + np.exp(-x)))
    return sig

Implementar la función sigmoidea en Python usando la biblioteca SciPy

También podemos usar la versión SciPy de la función sigmoidea de Python simplemente importando la función sigmoide llamada expit en la biblioteca SciPy.

El siguiente código de ejemplo demuestra cómo utilizar la función sigmoidea utilizando la biblioteca SciPy:

from scipy.special import expit

x = 0.25
sig = expit(x)

El método expit() es más lento que las implementaciones anteriores. La ventaja del método expit() es que puede manejar automáticamente varios tipos de entradas como lista, matriz, etc.

from scipy.special import expit

sig = expit(np.array([0.25, 0.5, 0.6, 0.7, 0.4]))
print(sig)

Producción :

[0.5621765  0.62245933 0.64565631 0.66818777 0.59868766]