No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

19 Días
18 Hrs
47 Min
22 Seg

Distancia entre vectores y búsqueda de departamento

21/28
Recursos

Aportes 30

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

La primer variable que se me incluye agregar es el precio del arrendamiento de cada apartamento. Teniendo encuenta la lógica de los demás componentes del vector, normalizaría la variable de manera similar como está la del tamaño, con rangos de precio representado por números entre 1 y 5 😁.

Este es un tema muy importante ya que es la base para las incrustaciones de palabras o Word Embeddings, un tema fundamental en el procesamiento del lenguaje natural entre sus aplicaciones tenemos: clasificación de texto, generacion de texto, traduccion etc.
esta imagen representa un ejemplo a pequeña escala, pero en la vida real, las incrustaciones de palabras contienen miles de palabras y cientos de dimenciones.

Modelos como GPT-3 de OpenIA funcionan de esta forma:

Dado una secuencia de palabras de entrada, el modelo busca la secuencia de palabras mas probable que debe continuar.
por ejemplo si yo digo:

Hola amigos de
y si el modelo se entreno con los dialogos de Platzi, probablemente complete la frase asi:
Hola amigos de Platzi, como estan?
y como se imaginaran para predecir las palabras que continuan se aplica , distancia entre vectores, el coseno del angulo entre ellos, probabilidad logaritmica etc.

Aquí mi solución. He incluido un vector para ponderar la importancia de las variables a tener en cuenta.

El resultado se muestra en una tabla hecha con ‘DataFrame’ de ‘pandas’

import numpy as np
import pandas as pd

I = np.array([3,2,2,1])
A_1 = np.array([4,3,3,3])
A_2 = np.array([3,3,2,1])
A_3 = np.array([5,4,3,0])

#importancia de cada variable (0-1)
arr_pond = np.array([0.5, #tamaño vivienda
                     0.8, #numero de recámaras
                     0.2, #numero baños
                     1    #numero estacionamientos
                     ])

def pond(arr,arr_pond=arr_pond):
  return arr*arr_pond

#array con todas las opciones
options = np.array([A_1, A_2, A_3])

#Esta es la funcion que nos va ayudar a decidir
#Introducimos como parámetros las opciones que estamos contemplando (options) y nuestra referencia ideal (I)
def decisor(options, ideal):
  results = []
  house_index = 0
  for option in options:
    house_index +=1
    result = ['A_' + str(house_index), np.linalg.norm(pond(ideal)-pond(option))] #generamos un array con el nombre de la casa y la nota (distancia)
    results.append(result)
    
  df = pd.DataFrame(results,columns=['Houses','Rate']).nsmallest(3,'Rate') # '.nsmallest()' ordena la tabla de menor a mayor
  return df

decisor(options,I)

esta clase tiene un componente muy importante para pensar como un Data Scientist --> las decisiones se pueden cuantificar. 💚

El valor del arriendo, también la distancia al trabajo (la pondría poner catalogada en rangos, esto para mi es muy importante)

A que se refiere con el ruido? Que tan grandes deben ser los números en las componentes de los vectores para qe haya “ruido” ?

El problema de la secretaria

es un problema matemático muy conocido. Consiste en, tú quieres contratar a una secretaria por lo que haces entrevistas, donde después entrevista puedes o contratar a la persona o dejarla ir y no tener posibilidad de arrepentirte, ¿cómo te aseguras de encontrar la correcta?

parece simple pero es muy interesante

Dicho esto, propondría agregar al sistema la consideration de que para poder juzgar objetivamente cuál es el mejor apartamento necesito un tiempo para recolectar datos donde podría dejar pasar el mejor.

¿Cuál sería la mejor estrategia a medida que tú recolectas datos?

La propuesta que presento consiste en crear un vector de valoración donde se cuantifique la importancia de cada componente del vector ideal, una vez creados los vectores de referencia se hace el producto interno entre ellos y el resultado sera el valor guía desde el cual mediremos las distancias. Además, tomando en cuenta la distancia de las opciones con nuestro valor ideal, podemos calcular un porcentaje de coincidencia.

Las variables que usaria para tener el algoritmo mas completo serian:

Tamaño del apartamento
numero de cuartos
numero de baños
numero de parqueos
precio del alquiler/venta
costo de expensas
zona
pet friendly

Variables que añadiría.

  • Distancia a zonas comerciales
  • Distancia de sitios como hospitales, colegios, etc.
  • Precio del apartamento.
  • Importancia del barrio, esto es facil de clasificar por que generalmente se clasifican por estratos.

Si tienen más ideas les agradecería que me dijeran 😀

Le puede faltar rango de precios, cercania al trabajo si es que tiene una oficina, supermercados, seguridad, costo de vida, todos representados como numeros del 1 al n variando segun la distancia o cantidad de la caracteristica en cuestion.

Yo agragaría que tan lejos estoy del trabajo, supero, gym, entre otros. Y para eliminar el ruido que traería introducir los km, haría un anormalización de los vectores en un ascala como el profesor hizo.

Yo agregaría:

  1. Precio
  2. Ubicación
  3. modalidad de arriendo
import numpy as np

# Definir el vector ideal y los vectores de apartamentos
I = np.array([3, 2, 2, 1])  # Vector ideal
A1 = np.array([4, 3, 3, 3])  # Primer apartamento
A2 = np.array([3, 3, 1, 0])  # Segundo apartamento
A3 = np.array([5, 4, 3, 0])  # Tercer apartamento

# Calcular las distancias euclidianas entre el vector ideal y los apartamentos
dist_A1 = np.linalg.norm(I - A1)
dist_A2 = np.linalg.norm(I - A2)
dist_A3 = np.linalg.norm(I - A3)

# Imprimir las distancias
print("Distancia a A1:", dist_A1)
print("Distancia a A2:", dist_A2)
print("Distancia a A3:", dist_A3)

Para ordenar los apartamentos en función de su proximidad al vector ideal, puede crear una lista de tuplas que contenga los apartamentos y sus distancias correspondientes, y luego ordenar la lista en función de las distancias. Aquí tienes un ejemplo:

# Crear una lista de tuplas (apartamento, distancia)
apartamentos = [(A1, dist_A1), (A2, dist_A2), (A3, dist_A3)]

# Ordenar la lista en función de las distancias
apartamentos_ordenados = sorted(apartamentos, key=lambda x: x[1])

# Imprimir los apartamentos ordenados
for apartamento, distancia in apartamentos_ordenados:
    print("Apartamento:", apartamento)
    print("Distancia:", distancia)
    print()

De esta manera, obtendrá los apartamentos ordenados por su proximidad al apartamento ideal, de menor a mayor distancia.

Incluiría :
-valor, también en rangos.
-Ubicación , dependiendo de lo que me sirva.
-Para mi es importante la vista entonces la altura.

La verdad que está bastante complicado encontrar el apartamento ideal. Hice una simulación con python generando 500 apartamentos con características aleatorias usando ese mismo rango de valores y no llegué a distancia 0. Tiene sentido igual. Creo que con unas 1000 extras lo lograría.

Buenas noches, realice mi programa en Deepnote y dando click aquí pueden ingresar para visualizarlo. Espero sea de su agrado.

Hola compañeros,
como característica agregaría, para complementar el modelo y mejorar toma de decisiones, el costo o precio del inmueble; categorizándolo por supuesto, para evitar el ruido. Podría ser respecto al monto máximo posible que estipule pagar el cliente.
Otra característica podría ser el tipo de zona, debido a que hay personas que les gusta estar fuera de la ciudad, cerca del centro y comercios, en la ciudad pero alejado del centro, etc.; podría ser categorizado por distancia. También podría ser una característica el tipo de estrato, facilidad de acceso, entre otras.
Respecto al supermercado, las características pudieran ser: Precio-calidad, frescura de los productos, variedad, calidad de servicio, seguridad, que posea estacionamiento, fácil acceso, que posea otros servicios como farmacia, panadería o fuente de soda, lugar de cuidado y juego para los niños, etc.

La facilidad del transporte publico, la cercanía con lugares a los que recurro (gym, supermercado, centros comerciales), el nivel de seguridad del sector…

Se podría colocar costo de alquiler, ponderar área o sector, si tiene seguridad, etc.

Para el caso de supermercados yo tomaría en cuenta la distancia, rango de precios y si se encuentran o no los productos que son de mi interés.

Le agregaría pesos a cada uno de los coeficientes que multiplicasen (o castigase) , o agregaría otra categorías adicionales como Costo por metro cuadrado normalizado a un valor ideal ($), distancia normalizada a mi trabajo, o estrato.

Categoría de valor de arrendamiento, si permite o no mascotas,

Esta clase me gusto mucho, sobre todo la explicación de agregar categorías a valores que puedes sesga el resultado

Les recomiendo leer este artículo de LinkedIn sobre KNN

Le agregaría precios , zonas de 1 a 5, valor de cada zona(ubicación)

Me gustaría hacer un modelo en algún momento que relacione los precios, las zonas, el tamaño, la cercanía al trabajo/universidad (me imaginó una variable estandarizada relacionada a través del tiempo en transporte público) y cercanía a tiendas que se frecuentan mucho (supermercado, lavandería, panadería, entre otras cosas que pueden ser relevantes). Sería un modelo muy interesante el mismo.

Yo pondría cómo una variable imprescindible el precio de arrendamiento o el precio de compra. También pondría la distancia a mi trabajo y a sitios de interés. También podría poner la ubicabión, y las normalizaría por zonas (Buena, regular, mala, etc)

Agregaría el rango de precios, distancias a ciertos lugares (hospital, trabajo, supermercado). Estas aplicaciones en las que se busca la menor distancia serían la base de la optimización?

Creo que sería fundamental introducir un vector para ponderar las condiciones y poder jugar con los resultados.