Innanzitutto mi chiedo, che cos'è labels
in ogni fase del ciclo?
Con dist_ = array([2,1,2])
e TLabels=array([1,2,3])
ottengo
[-1 1]
[1]
[-1 1]
La lunghezza diversa sollevare immediatamente una bandiera di avvertimento - può essere difficile per vettorizzare questo.
Con gli array lunghi nell'esempio modificato
[-1 1 -1 -1 -1]
[ 1 1 1 1 -1]
[-1 1 -1 -1 -1]
[ 1 1 1 1 -1]
[ 1 1 1 1 -1]
[-1 1 -1 -1 -1]
[-1 1 -1 -1 -1]
[ 1 1 1 1 -1]
[ 1 1 1 1 -1]
[-1 1 -1 -1 -1]
I labels
vettori sono tutte la stessa lunghezza. È normale, o solo una coincidenza di valori?
goccia un paio di elementi di fuori dist_
e labels
sono:
In [375]: for i in range(len(dist_)):
labels = TLabels[dist_ == dist_[i]]
v = (1.*np.sum(labels)/t); v1 = 1-TLabels[i]*v
print(labels, v, TLabels[i], v1)
cLoss += v1
.....:
(array([-1, 1, -1, -1]), -0.25, -1, 0.75)
(array([1, 1, 1, 1]), 0.5, 1, 0.5)
(array([-1, 1, -1, -1]), -0.25, 1, 1.25)
(array([1, 1, 1, 1]), 0.5, 1, 0.5)
(array([1, 1, 1, 1]), 0.5, 1, 0.5)
(array([-1, 1, -1, -1]), -0.25, -1, 0.75)
(array([-1, 1, -1, -1]), -0.25, -1, 0.75)
(array([1, 1, 1, 1]), 0.5, 1, 0.5)
Ancora differenti lunghezze di etichette, ma in realtà solo pochi calcoli. Esiste 1 valore v
per ciascun valore dist_
diverso.
Senza elaborare tutti i dettagli, sembra che si stia calcolando solo labels*labels
per ciascun valore distinto dist_
e quindi sommando quelli.
Questo sembra un problema groupBy
. Si desidera dividere lo dist_
in gruppi con un valore comune e sommare alcune funzioni dei rispettivi valori TLabels
corrispondenti. Python itertools
ha una funzione groupBy
, quindi pandas
. Penso che entrambi richiedano di ordinare dist_
.
Provare a ordinare dist_
e vedere se questo aggiunge chiarezza al problema.
Che cosa stai cercando di realizzare? –
Beh, credo sia corretto, 'TLabels [dist_ == dist_ [i]]' restituirà valori da 'TLabels' che hanno indici dove' dist_ == dist_ [i] '. Ad esempio, 'dist_ = array ([2,1,2])' e 'TLabels = array ([1,2,3])' così 'dist_ == dist_ [0]' restituirà 'array ([Vero, False, True]) 'than' TLabels [dist_ == dist_ [0]] = array ([1,3]) ' – farhawa
Giusto per essere chiari, sono gli array' (t, 1) 'o' (t,) '? Dove è inizializzato 'cLoss'? – hpaulj