Spaces:
Sleeping
Sleeping
Commit
路
c7f9f06
1
Parent(s):
0b1127d
[FIX] clean code
Browse files- doctest.py +0 -5
- modelo.py +0 -137
- requirements.txt +0 -65
doctest.py
DELETED
@@ -1,5 +0,0 @@
|
|
1 |
-
import janitor
|
2 |
-
import pandas as pd
|
3 |
-
|
4 |
-
diabetes_df = pd.read_csv("https://nrvis.com/data/mldata/pima-indians-diabetes.csv", names=['pregnancies', 'glucose', 'blood_pressurte', 'skin_thinckness', 'insulin', 'bmi', 'diabetes_pedigree_function', 'age', 'outcome'])
|
5 |
-
print(diabetes_df.info())
|
|
|
|
|
|
|
|
|
|
|
|
modelo.py
DELETED
@@ -1,137 +0,0 @@
|
|
1 |
-
import random
|
2 |
-
import os
|
3 |
-
import requests
|
4 |
-
from dotenv import load_dotenv
|
5 |
-
import folium
|
6 |
-
import streamlit as st
|
7 |
-
import joblib
|
8 |
-
from sklearn.cluster import KMeans
|
9 |
-
import numpy as np
|
10 |
-
import matplotlib.pyplot as plt
|
11 |
-
|
12 |
-
load_dotenv()
|
13 |
-
|
14 |
-
API_KEY = os.getenv('API_KEY')
|
15 |
-
BASE_URL = os.getenv('BASE_URL')
|
16 |
-
|
17 |
-
def geocode_address(address):
|
18 |
-
# Aqu铆 debes insertar tu clave de API de Google Maps
|
19 |
-
api_key = API_KEY
|
20 |
-
|
21 |
-
# URL base de la API de Geocodificaci贸n de Google Maps
|
22 |
-
base_url = BASE_URL
|
23 |
-
|
24 |
-
# Par谩metros de la solicitud
|
25 |
-
params = {
|
26 |
-
'address': address,
|
27 |
-
'key': api_key
|
28 |
-
}
|
29 |
-
|
30 |
-
try:
|
31 |
-
# Realizar la solicitud a la API de Geocodificaci贸n
|
32 |
-
response = requests.get(base_url, params=params)
|
33 |
-
data = response.json()
|
34 |
-
|
35 |
-
if data['status'] == 'OK' and len(data['results']) > 0:
|
36 |
-
# Obtener las coordenadas geogr谩ficas de la primera coincidencia
|
37 |
-
location = data['results'][0]['geometry']['location']
|
38 |
-
latitude = location['lat']
|
39 |
-
longitude = location['lng']
|
40 |
-
|
41 |
-
return latitude, longitude
|
42 |
-
else:
|
43 |
-
print('No se encontraron resultados para la direcci贸n especificada.')
|
44 |
-
except requests.exceptions.RequestException as e:
|
45 |
-
print('Error en la solicitud:', e)
|
46 |
-
|
47 |
-
|
48 |
-
# Direcciones ficticias en Cosqu铆n, C贸rdoba, Argentina
|
49 |
-
direcciones = [
|
50 |
-
'San Mart铆n 123',
|
51 |
-
'Tucum谩n 456',
|
52 |
-
'Catamarca 789',
|
53 |
-
'Per贸n 1321',
|
54 |
-
'Corrientes 654',
|
55 |
-
'Laurencena 877',
|
56 |
-
'San Mart铆n 234',
|
57 |
-
'Tucum谩n 567',
|
58 |
-
'Catamarca 890',
|
59 |
-
'San Martin 1432',
|
60 |
-
'Avenida parana 10',
|
61 |
-
'Japon 23'
|
62 |
-
]
|
63 |
-
|
64 |
-
# Obtener las coordenadas geogr谩ficas de cada direcci贸n
|
65 |
-
coordenadas = []
|
66 |
-
for direccion in direcciones:
|
67 |
-
resultado = geocode_address(direccion + ', Cosqu铆n, C贸rdoba, Argentina')
|
68 |
-
if resultado:
|
69 |
-
coordenadas.append(resultado)
|
70 |
-
else:
|
71 |
-
coordenadas.append((None, None))
|
72 |
-
|
73 |
-
# Calcular el n煤mero de zonas (k) utilizando el m茅todo del codo
|
74 |
-
max_k = len(coordenadas)
|
75 |
-
inertias = []
|
76 |
-
for k in range(2, max_k+1):
|
77 |
-
modelo = KMeans(n_clusters=k, random_state=42)
|
78 |
-
modelo.fit(coordenadas)
|
79 |
-
inertias.append(modelo.inertia_)
|
80 |
-
|
81 |
-
# Graficar las inercias en funci贸n de k
|
82 |
-
plt.plot(range(2, max_k+1), inertias, marker='o')
|
83 |
-
plt.xlabel('N煤mero de zonas (k)')
|
84 |
-
plt.ylabel('Inercia')
|
85 |
-
plt.title('M茅todo del Codo')
|
86 |
-
plt.show()
|
87 |
-
|
88 |
-
# Elegir el valor de k 贸ptimo
|
89 |
-
k_optimo = int(input("Ingrese el valor 贸ptimo de k seg煤n el gr谩fico: "))
|
90 |
-
|
91 |
-
# Crear el modelo de K-Means con k_optimo zonas
|
92 |
-
modelo = KMeans(n_clusters=k_optimo, random_state=42)
|
93 |
-
modelo.fit(coordenadas)
|
94 |
-
|
95 |
-
# Obtener las etiquetas de las zonas
|
96 |
-
etiquetas = modelo.labels_
|
97 |
-
|
98 |
-
# Contar el n煤mero de zonas
|
99 |
-
num_zonas = len(set(etiquetas))
|
100 |
-
|
101 |
-
# Crear un diccionario para almacenar las direcciones por zona
|
102 |
-
zonas = {}
|
103 |
-
for i, etiqueta in enumerate(etiquetas):
|
104 |
-
if etiqueta not in zonas:
|
105 |
-
zonas[etiqueta] = []
|
106 |
-
zonas[etiqueta].append(direcciones[i])
|
107 |
-
|
108 |
-
# Mostrar las direcciones por zona
|
109 |
-
for zona, direcciones_zona in zonas.items():
|
110 |
-
print(f"Zona {zona + 1}:")
|
111 |
-
for direccion in direcciones_zona:
|
112 |
-
print(direccion)
|
113 |
-
print()
|
114 |
-
|
115 |
-
# Lista de colores predefinidos
|
116 |
-
colores = ['red', 'blue', 'green', 'purple', 'orange', 'gray', 'pink',
|
117 |
-
'cyan', 'yellow', 'brown', 'black', 'white', 'violet']
|
118 |
-
|
119 |
-
# Crear un mapa centrado en la primera coordenada
|
120 |
-
primer_coordenada = coordenadas[0]
|
121 |
-
mapa = folium.Map(location=primer_coordenada, zoom_start=15)
|
122 |
-
|
123 |
-
# Agregar marcadores para cada coordenada con su zona y color correspondiente
|
124 |
-
for i, coordenada in enumerate(coordenadas):
|
125 |
-
zona = etiquetas[i] + 1 # Sumar 1 para que las zonas se muestren como n煤meros a partir de 1
|
126 |
-
if coordenada != (None, None):
|
127 |
-
color = colores[zona % len(colores)] # Obtener el color correspondiente a la zona
|
128 |
-
folium.Marker(location=coordenada, popup=f'Zona: {zona}', icon=folium.Icon(color=color)).add_to(mapa)
|
129 |
-
else:
|
130 |
-
folium.Marker(location=coordenada, popup='Ubicaci贸n desconocida').add_to(mapa)
|
131 |
-
|
132 |
-
# Guardar el mapa como un archivo HTML
|
133 |
-
mapa.save('mapa.html')
|
134 |
-
|
135 |
-
# Abrir el archivo HTML en el navegador para visualizar el mapa
|
136 |
-
import webbrowser
|
137 |
-
webbrowser.open('mapa.html')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
requirements.txt
DELETED
@@ -1,65 +0,0 @@
|
|
1 |
-
altair==4.2.2
|
2 |
-
args==0.1.0
|
3 |
-
attrs==23.1.0
|
4 |
-
blinker==1.6.2
|
5 |
-
branca==0.6.0
|
6 |
-
cachetools==5.3.0
|
7 |
-
certifi==2023.5.7
|
8 |
-
charset-normalizer==3.1.0
|
9 |
-
click==8.1.3
|
10 |
-
clint==0.5.1
|
11 |
-
contourpy==1.0.7
|
12 |
-
coverage==7.2.5
|
13 |
-
cycler==0.11.0
|
14 |
-
decorator==5.1.1
|
15 |
-
entrypoints==0.4
|
16 |
-
folium==0.14.0
|
17 |
-
fonttools==4.39.4
|
18 |
-
gitdb==4.0.10
|
19 |
-
GitPython==3.1.31
|
20 |
-
idna==3.4
|
21 |
-
importlib-metadata==6.6.0
|
22 |
-
Jinja2==3.1.2
|
23 |
-
joblib==1.2.0
|
24 |
-
jsonschema==4.17.3
|
25 |
-
kiwisolver==1.4.4
|
26 |
-
mamba==0.11.2
|
27 |
-
markdown-it-py==2.2.0
|
28 |
-
MarkupSafe==2.1.2
|
29 |
-
matplotlib==3.7.1
|
30 |
-
mdurl==0.1.2
|
31 |
-
numpy==1.24.3
|
32 |
-
packaging==23.1
|
33 |
-
pandas==2.0.1
|
34 |
-
Pillow==9.5.0
|
35 |
-
plotly==5.14.1
|
36 |
-
protobuf==3.20.3
|
37 |
-
pyarrow==12.0.0
|
38 |
-
pydeck==0.8.1b0
|
39 |
-
Pygments==2.15.1
|
40 |
-
Pympler==1.0.1
|
41 |
-
pyparsing==3.0.9
|
42 |
-
pyrsistent==0.19.3
|
43 |
-
python-dateutil==2.8.2
|
44 |
-
python-dotenv==1.0.0
|
45 |
-
pytz==2023.3
|
46 |
-
requests==2.31.0
|
47 |
-
rich==13.3.5
|
48 |
-
scikit-learn==1.2.2
|
49 |
-
scipy==1.10.1
|
50 |
-
six==1.16.0
|
51 |
-
smmap==5.0.0
|
52 |
-
streamlit==1.22.0
|
53 |
-
streamlit-folium==0.11.1
|
54 |
-
tenacity==8.2.2
|
55 |
-
threadpoolctl==3.1.0
|
56 |
-
toml==0.10.2
|
57 |
-
toolz==0.12.0
|
58 |
-
tornado==6.3.2
|
59 |
-
typing_extensions==4.6.0
|
60 |
-
tzdata==2023.3
|
61 |
-
tzlocal==5.0.1
|
62 |
-
urllib3==2.0.2
|
63 |
-
validators==0.20.0
|
64 |
-
watchdog==3.0.0
|
65 |
-
zipp==3.15.0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|