La funzione sigmoide in Python

Muhammad Waiz Khan 30 gennaio 2023
  1. Implementa la funzione sigmoide in Python usando il modulo math
  2. Implementa la funzione Sigmoid in Python usando il metodo numpy.exp()
  3. Implementa la funzione Sigmoid in Python usando la libreria SciPy
La funzione sigmoide in Python

In questo tutorial, esamineremo vari metodi per utilizzare la funzione sigmoide in Python. La funzione sigmoide è una funzione logistica matematica. È comunemente usato in statistica, elaborazione del segnale audio, biochimica e funzione di attivazione nei neuroni artificiali. La formula per la funzione sigmoide è F(x) = 1/(1 + e^(-x)).

Implementa la funzione sigmoide in Python usando il modulo math

Possiamo implementare la nostra funzione sigmoide in Python usando il modulo math. Abbiamo bisogno del metodo math.exp() dal modulo math per implementare la funzione sigmoide.

Il codice di esempio seguente mostra come utilizzare la funzione sigmoid in Python.

import math


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

Il problema con questa implementazione è che non è numericamente stabile e potrebbe verificarsi l’overflow.

Di seguito viene fornito il codice di esempio dell’implementazione numericamente stabile della funzione sigmoide in Python.

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

Implementa la funzione Sigmoid in Python usando il metodo numpy.exp()

Possiamo anche implementare la funzione sigmoid usando il metodo numpy.exp() in Python. Come le implementazioni della funzione sigmoid usando il metodo math.exp(), possiamo anche implementare la funzione sigmoid usando il metodo numpy.exp().

Il vantaggio del metodo numpy.exp() rispetto a math.exp() è che oltre a integer o float, può anche gestire l’input nella forma di un array.

Di seguito è riportata l’implementazione della normale funzione sigmoid utilizzando il metodo numpy.exp() in Python.

import numpy as np


def sigmoid(x):

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

    return sig

Per l’implementazione numericamente stabile della funzione sigmoide, dobbiamo prima controllare il valore di ciascun valore dell’array di input e quindi passare il valore del sigmoide. Per questo, possiamo usare il metodo np.where(), come mostrato nel codice di esempio sotto.

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

Implementa la funzione Sigmoid in Python usando la libreria SciPy

Possiamo anche usare la versione SciPy della funzione sigmoid di Python semplicemente importando la funzione sigmoide chiamata expit nella libreria SciPy.

Il codice di esempio seguente mostra come utilizzare la funzione sigmoid utilizzando la libreria SciPy:

from scipy.special import expit

x = 0.25
sig = expit(x)

Il metodo expit() è più lento delle implementazioni precedenti. Il vantaggio del metodo expit() è che può gestire automaticamente i vari tipi di input come list, array, ecc.

from scipy.special import expit

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

Produzione:

[0.5621765  0.62245933 0.64565631 0.66818777 0.59868766]