Cómo convertir la probabilidad de registro en probabilidad simple entre 0 y 1 valores usando python

Estoy usando el modelo de mezcla gaussiana para la identificación del hablante. Utilizo este código para predecir el altavoz para cada clip de voz.

for path in file_paths: path = path.strip() print (path) sr,audio = read(source + path) vector = extract_features(audio,sr) #print(vector) log_likelihood = np.zeros(len(models)) #print(len(log_likelihood)) for i in range(len(models)): gmm1 = models[i] #checking with each model one by one #print(gmm1) scores = np.array(gmm1.score(vector)) #print(scores) #print(len(scores)) log_likelihood[i] = scores.sum() print(log_likelihood) winner = np.argmax(log_likelihood) #print(winner) print ("\tdetected as - ", speakers[winner]) 

y me da la salida como esta:

 [ 311.79769716 0. 0. 0. 0. ] [ 311.79769716 -5692.56559902 0. 0. 0. ] [ 311.79769716 -5692.56559902 -6170.21460788 0. 0. ] [ 311.79769716 -5692.56559902 -6170.21460788 -6736.73192695 0. ] [ 311.79769716 -5692.56559902 -6170.21460788 -6736.73192695 -6753.00196447] detected as - bart 

Aquí la función de puntuación me da la probabilidad de registro para cada hablante. Ahora quiero decidir el valor de umbral, para eso necesito registrar el valor de probabilidad en el valor de probabilidad simple (entre 0 y 1). ¿Cómo puedo hacer eso? Estoy usando el software de Python.

Gracias de antemano.

    Tienes que tomar exponentes ( np.exp() ) de las probabilidades de registro para recuperar las probabilidades reales. Aquí hay un ejemplo:

     # some array In [9]: a Out[9]: array([1, 2, 3, 4, 5, 6, 7, 8, 9]) # softmax In [10]: probs = np.exp(a) / (np.exp(a)).sum() In [11]: probs.sum() Out[11]: 1.0 # log probabilities In [12]: log_probs = np.log(probs) In [13]: log_probs Out[13]: array([-8.45855173, -7.45855173, -6.45855173, -5.45855173, -4.45855173, -3.45855173, -2.45855173, -1.45855173, -0.45855173]) # mostly, won't sum to 1.0 In [14]: log_probs.sum() Out[14]: -40.126965551706405 # get the probabilities back In [15]: probabilities = np.exp(log_probs) In [16]: probabilities.sum() Out[16]: 1.0 In [17]: probabilities Out[17]: array([ 2.12078996e-04, 5.76490482e-04, 1.56706360e-03, 4.25972051e-03, 1.15791209e-02, 3.14753138e-02, 8.55587737e-02, 2.32572860e-01, 6.32198578e-01])