Saltar al contenido principal
Página

Tema 4.5 - Distancia Euclidiana para el Caso Multivariante

Distancia Euclidiana para el Caso Multivariante

En la última misión, entrenamos dos modelos univariantes de vecinos más cercanos, el  primero utilizó el atributo de accommodates mientras que el segundo utilizó el atributo de bathrooms, ahora vamos a entrenar un modelo que utilice ambos atributos para determinar la similitud de dos espacios habitables, volvamos a consultar la ecuación de la distancia euclidiana para ver cómo sería el cálculo de la distancia utilizando 2 atributos:


Como estamos utilizando 2 atributos, el cálculo de la distancia sería como:



Para encontrar la distancia entre 2 espacios habitables, tenemos que calcular la diferencia al cuadrado entre ambos valores de los acommodates, la diferencia al cuadrado entre ambos valores de los bathrooms, sumarlos y luego sacar la raíz cuadrada de la suma resultante, este es el aspecto de la distancia euclidiana entre las 2 primeras filas de normalized_listings:



Hasta ahora, hemos calculado la distancia euclidiana nosotros mismos escribiendo la lógica de la ecuación, en cambio, podemos utilizar la función distance.euclidean() de scipy.spatial, que toma 2 vectores como parámetros y calcula la distancia euclidiana entre ellos, la función euclidiana() espera:

  • Que ambos vectores se representen con un objeto tipo lista (lista de Python, array de NumPy o serie de pandas)
  • Ambos vectores deben ser unidimensionales y tener el mismo número de elementos


He aquí un ejemplo sencillo:


Utilicemos la función euclidean() para calcular la distancia euclidiana entre 2 filas de nuestro conjunto de datos para practicar.


Instrucciones

  • Calcular la distancia euclidiana utilizando sólo las características de los acommodates y los bathrooms entre la primera fila y la quinta fila en normalized_listings utilizando la función distance. euclidean()
  • Asignar el valor de la distancia a first_fifth_distance y mostrarlo mediante la función print


Soluciones


1
2
3
4
5
6
7
8
from scipy.spatial import distance
first_listing = normalized_listings.iloc[0][['accommodates',
'bathrooms']]
fifth_listing = normalized_listings.iloc[4][['accommodates',
'bathrooms']]
first_fifth_distance = distance.euclidean(first_listing,
fifth_listing)
print(first_fifth_distance)
Última modificación: miércoles, 27 de abril de 2022, 22:41