Tengo un array numpy con m columnas y n filas, siendo las columnas dimensiones y las filas puntos de datos.
Ahora tengo que calcular los valores del núcleo para cada combinación de puntos de datos.
Para un núcleo lineal K(xi,xj)=⟨xi,xj⟩ Simplemente puedo hacer dot(X,X.T)
¿Cómo puedo calcular eficazmente todos los valores del núcleo gaussiano? K(xi,xj)=exp−‖ con un determinado s ?
1 votos
Bueno, si no te importa demasiado el aumento de un factor de dos en los cálculos, siempre puedes hacer \newcommand{\m}{\mathbf} \m S = \m X \m X^T y luego K(\m x_i, \m x_j ) = \exp( - (S_{ii} + S_{jj} - 2 S_{ij})/s^2 ) donde, por supuesto, S_{ij} es el (i,j) elemento de \m S . Esto es probablemente no tampoco es el más estable numéricamente.
2 votos
(Años más tarde) para grandes matrices dispersas, véase sklearn.metrics.pairwise.pairwise_distances.html en scikit-learn .