def GaussianMatrix(X,sigma):
row,col=X.shape
GassMatrix=np.zeros(shape=(row,row))
X=np.asarray(X)
i=0
for v_i in X:
j=0
for v_j in X:
GassMatrix[i,j]=Gaussian(v_i.T,v_j.T,sigma)
j+=1
i+=1
return GassMatrix
def Gaussian(x,z,sigma):
return np.exp((-(np.linalg.norm(x-z)**2))/(2*sigma**2))
Questo è il mio modo attuale. C'è un modo in cui posso usare l'operazione matrix per fare questo? X è i punti dati.Come calcolare una matrice di kernel gaussiana in modo efficiente in numpy?
Perché si prende la radice quadrata del prodotto esterno (cioè 'kernel_raw = np.sqrt (np.outer (kern1d, kern1d)) ') e non solo moltiplicarli? Mi sento come se mi mancasse qualcosa qui .. – trueter
potresti fornire alcuni dettagli, per favore, su come funziona la tua funzione? Perché hai bisogno di 'np.diff (st.norm.cdf (x))'? –
inoltre, l'implementazione fornisce risultati diversi da quelli di altri nella pagina :( –