Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 29 additions & 29 deletions pages/pred_imagen.py
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
import streamlit as st
from PIL import Image
import numpy as np
from utils import predict_imagen

# Título de la aplicación
st.title('Predicción de imágenes')

# Cargar la imagen
uploaded_file = st.file_uploader("Cargar imagen", type=["jpg", "jpeg", "png"])

# Si se carga una imagen
if uploaded_file is not None:
# Mostrar la imagen
st.write('**Vista Previa de la imagen cargada:**')
image = Image.open(uploaded_file).resize((32, 32))
st.image(image, caption='Imagen cargada', use_column_width=True)

# Convertir la imagen a una matriz de valores de píxeles
image = np.array(image) / 255.0 # Normalizar los valores de píxeles

# Botón para realizar la predicción con las columnas seleccionadas
if st.button('Realizar Predicción de la categoría de la imagen'):
# Predecirla
pred = predict_imagen(image)

# Mostrar los resultados de la predicción
st.success('Éxito al realizar la predicción!')
st.write('La categoría predicha para la imagen:')
import streamlit as st
from PIL import Image
import numpy as np
from utils import predict_imagen
# Título de la aplicación
st.title('Predicción de imágenes')
# Cargar la imagen
uploaded_file = st.file_uploader("Cargar imagen", type=["jpg", "jpeg", "png"])
# Si se carga una imagen
if uploaded_file is not None:
# Mostrar la imagen
st.write('**Vista Previa de la imagen cargada:**')
image = Image.open(uploaded_file).resize((32, 32))
st.image(image, caption='Imagen cargada', use_column_width=True)
# Convertir la imagen a una matriz de valores de píxeles
image = np.array(image) / 255.0 # Normalizar los valores de píxeles
# Botón para realizar la predicción con las columnas seleccionadas
if st.button('Realizar Predicción de la categoría de la imagen'):
# Predecirla
pred = predict_imagen(image)
# Mostrar los resultados de la predicción
st.success('Éxito al realizar la predicción!')
st.write('La categoría predicha para la imagen:')
st.write(pred)
92 changes: 46 additions & 46 deletions pages/pred_iris_csv.py
Original file line number Diff line number Diff line change
@@ -1,46 +1,46 @@
import streamlit as st
import pandas as pd
from utils import predict_flores

# Título de la aplicación
st.title('Predicción de flores desde un archivo CSV')
st.image('iris.jpg', caption='Imagen de iris', use_column_width=True)

# Widget para cargar un archivo CSV
uploaded_file = st.file_uploader("Selecciona un archivo CSV", type=['csv'])

# Si se carga un archivo
if uploaded_file is not None:
# Leer el archivo CSV en un DataFrame
df = pd.read_csv(uploaded_file)

# Mostrar una vista previa de los primeros registros del DataFrame
st.write('**Vista Previa del DataFrame:**')
st.write(df.head())

# Sección para realizar la predicción
st.subheader('Realizar la predicción')

# Widget para seleccionar las columnas a utilizar para la predicción
feature_cols = st.multiselect('Selecciona las columnas para la predicción', df.columns)

# Botón para realizar la predicción con las columnas seleccionadas
if st.button('Realizar Predicción con CSV'):
# Realizar la predicción utilizando las columnas seleccionadas
predicted_values = predict_flores(df[feature_cols])

# Mostrar los resultados de la predicción
st.success('Éxito al realizar la predicción!')
st.write('Los resultados de la predicción son:')
st.write(predicted_values)

# Convertir los resultados de la predicción a un DataFrame
predictions_df = pd.DataFrame(predicted_values, columns=['Predicciones'])

# Widget para descargar el archivo CSV de las predicciones
st.subheader('Descargar Predicciones como CSV')
st.download_button(label='Descargar CSV',
data=predictions_df.to_csv(index=False),
file_name='predicciones.csv',
mime='text/csv')

import streamlit as st
import pandas as pd
from utils import predict_flores
# Título de la aplicación
st.title('Predicción de flores desde un archivo CSV')
st.image('Streamlit-Tutorial/iris.jpg', caption='Imagen de iris', use_column_width=True)
# Widget para cargar un archivo CSV
uploaded_file = st.file_uploader("Selecciona un archivo CSV", type=['csv'])
# Si se carga un archivo
if uploaded_file is not None:
# Leer el archivo CSV en un DataFrame
df = pd.read_csv(uploaded_file)
# Mostrar una vista previa de los primeros registros del DataFrame
st.write('**Vista Previa del DataFrame:**')
st.write(df.head())
# Sección para realizar la predicción
st.subheader('Realizar la predicción')
# Widget para seleccionar las columnas a utilizar para la predicción
feature_cols = st.multiselect('Selecciona las columnas para la predicción', df.columns)
# Botón para realizar la predicción con las columnas seleccionadas
if st.button('Realizar Predicción con CSV'):
# Realizar la predicción utilizando las columnas seleccionadas
predicted_values = predict_flores(df[feature_cols])
# Mostrar los resultados de la predicción
st.success('Éxito al realizar la predicción!')
st.write('Los resultados de la predicción son:')
st.write(predicted_values)
# Convertir los resultados de la predicción a un DataFrame
predictions_df = pd.DataFrame(predicted_values, columns=['Predicciones'])
# Widget para descargar el archivo CSV de las predicciones
st.subheader('Descargar Predicciones como CSV')
st.download_button(label='Descargar CSV',
data=predictions_df.to_csv(index=False),
file_name='predicciones.csv',
mime='text/csv')
64 changes: 32 additions & 32 deletions pages/pred_iris_man.py
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
import streamlit as st
import pandas as pd
from utils import predict_flores

# Título de la aplicación
st.title('Predicción manual de flores')
st.image('iris.jpg', caption='Imagen de iris', use_column_width=True)

# Texto introductorio
st.write('**Ingresa los datos manualmente para realizar la predicción de la flor:**')

# Diccionario para almacenar los datos de entrada
input_data = {}

# Lista de columnas para las características de la flor
columns = ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']

# Bucle para recorrer las columnas y obtener los datos de entrada
for col in columns:
# Widget de entrada numérica para cada característica
input_data[col] = st.number_input(col, value=0.0)

# Botón para realizar la predicción
if st.button('Realizar Predicción'):
# Convertir el diccionario de entrada a un DataFrame de una sola fila
input_df = pd.DataFrame([input_data])

# Realizar la predicción utilizando la función predict_flores
predicted_value = predict_flores(input_df)

# Mostrar el resultado de la predicción
st.success('Éxito al realizar la predicción!')
import streamlit as st
import pandas as pd
from utils import predict_flores
# Título de la aplicación
st.title('Predicción manual de flores')
st.image('Streamlit-Tutorial/iris.jpg', caption='Imagen de iris', use_column_width=True)
# Texto introductorio
st.write('**Ingresa los datos manualmente para realizar la predicción de la flor:**')
# Diccionario para almacenar los datos de entrada
input_data = {}
# Lista de columnas para las características de la flor
columns = ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
# Bucle para recorrer las columnas y obtener los datos de entrada
for col in columns:
# Widget de entrada numérica para cada característica
input_data[col] = st.number_input(col, value=0.0)
# Botón para realizar la predicción
if st.button('Realizar Predicción'):
# Convertir el diccionario de entrada a un DataFrame de una sola fila
input_df = pd.DataFrame([input_data])
# Realizar la predicción utilizando la función predict_flores
predicted_value = predict_flores(input_df)
# Mostrar el resultado de la predicción
st.success('Éxito al realizar la predicción!')
st.write('El resultado de la predicción es:', predicted_value[0])
8 changes: 4 additions & 4 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
streamlit
scikit-learn
streamlit_extras
keras
streamlit
scikit-learn
streamlit_extras
keras
tensorflow
60 changes: 30 additions & 30 deletions streamlit_tutorial.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
import streamlit as st
from streamlit_extras.switch_page_button import switch_page

# https://docs.streamlit.io/library/get-started/multipage-apps
# Local: streamlit run streamlit_tutorial.py
# Streamlit Sharing
# render, heroku, AWS EC2

def main():
# Bienvenida y selección del servicio
st.title('Bienvenido al portal predictivo de la empresa XYZ')
st.write('**Por favor seleccione el servicio predictivo que desea utilizar**')

# Selección del servicio entre dos opciones
opcion = st.radio('Seleccione el servicio:', ('Predicción del tipo de flor', 'Predicción de imagen'), index=None)

# Redirección a la página del servicio seleccionado
if opcion == 'Predicción del tipo de flor':
way_to_pred = st.radio('¿Cómo desea realizar la predicción de la flor?', ('Ingresando datos manualmente', 'Subiendo un archivo CSV'), index=None)
if way_to_pred == 'Ingresando datos manualmente':
# Redirigir a la página de predicción de iris con datos manuales
switch_page("pred_iris_man")
elif way_to_pred == 'Subiendo un archivo CSV':
# Redirigir a la página de predicción de iris con archivo CSV
switch_page("pred_iris_csv")
elif opcion == 'Predicción de imagen':
# Redirigir a la página de predicción de imagen
switch_page("pred_imagen")

if __name__ == "__main__":
import streamlit as st
from streamlit_extras.switch_page_button import switch_page
# https://docs.streamlit.io/library/get-started/multipage-apps
# Local: streamlit run streamlit_tutorial.py
# Streamlit Sharing
# render, heroku, AWS EC2
def main():
# Bienvenida y selección del servicio
st.title('Bienvenido al portal predictivo de la empresa XYZ')
st.write('**Por favor seleccione el servicio predictivo que desea utilizar**')
# Selección del servicio entre dos opciones
opcion = st.radio('Seleccione el servicio:', ('Predicción del tipo de flor', 'Predicción de imagen'), index=None)
# Redirección a la página del servicio seleccionado
if opcion == 'Predicción del tipo de flor':
way_to_pred = st.radio('¿Cómo desea realizar la predicción de la flor?', ('Ingresando datos manualmente', 'Subiendo un archivo CSV'), index=None)
if way_to_pred == 'Ingresando datos manualmente':
# Redirigir a la página de predicción de iris con datos manuales
switch_page("pred_iris_man")
elif way_to_pred == 'Subiendo un archivo CSV':
# Redirigir a la página de predicción de iris con archivo CSV
switch_page("pred_iris_csv")
elif opcion == 'Predicción de imagen':
# Redirigir a la página de predicción de imagen
switch_page("pred_imagen")
if __name__ == "__main__":
main()
28 changes: 14 additions & 14 deletions train_iris.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
from sklearn.linear_model import LogisticRegression
from sklearn import datasets
import pickle

# Cargar el dataset de Iris
iris = datasets.load_iris(as_frame=True)
X = iris['data'] # Características de las flores
y = iris['target'] # Etiquetas de las especies de flores

# Entrenar un modelo de regresión logística con los datos de Iris
log_reg = LogisticRegression().fit(X, y)

# Guardar el modelo entrenado en un archivo 'iris_model.pkl'
with open('iris_model.pkl', 'wb') as f:
from sklearn.linear_model import LogisticRegression
from sklearn import datasets
import pickle
# Cargar el dataset de Iris
iris = datasets.load_iris(as_frame=True)
X = iris['data'] # Características de las flores
y = iris['target'] # Etiquetas de las especies de flores
# Entrenar un modelo de regresión logística con los datos de Iris
log_reg = LogisticRegression().fit(X, y)
# Guardar el modelo entrenado en un archivo 'iris_model.pkl'
with open('models/iris_model.pkl', 'wb') as f:
pickle.dump(log_reg, f)
58 changes: 29 additions & 29 deletions utils.py
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
import pickle
import streamlit as st
from keras.models import load_model
import tensorflow as tf

def predict_flores(data):
# Cargar el modelo previamente entrenado para predecir el tipo de flor
model = pickle.load(open('models/iris_model.pkl', "rb"))
# Realizar la predicción con los datos proporcionados
predictions = model.predict(data)
return predictions

def predict_imagen(imagen):
# Añadir una dimensión extra (lote)
imagen = imagen.reshape((1, 32, 32, 3))
# Cargar el modelo desde el archivo
model = load_model('models/modelo_cifar_10.h5')
# Realizar la predicción
predictions = model.predict(imagen)
predicted_class = tf.argmax(predictions[0]).numpy()
# Obtener el nombre de la clase predicha
class_names = ['avión', 'automóvil', 'pájaro', 'gato', 'ciervo', 'perro', 'rana', 'caballo', 'barco', 'camión']
return class_names[predicted_class]

def check_client_id(client_id):
# Simulación
# Cargar credenciales para la BBDD de la empresa y consultar si el identificador del cliente está activo
api_key = st.secrets["DB_USERNAME"]
ls_ids = [123,12345,12345678]
import pickle
import streamlit as st
from keras.models import load_model
import tensorflow as tf
def predict_flores(data):
# Cargar el modelo previamente entrenado para predecir el tipo de flor
model = pickle.load(open('Streamlit-Tutorial/models/iris_model.pkl', "rb"))
# Realizar la predicción con los datos proporcionados
predictions = model.predict(data)
return predictions
def predict_imagen(imagen):
# Añadir una dimensión extra (lote)
imagen = imagen.reshape((1, 32, 32, 3))
# Cargar el modelo desde el archivo
model = load_model('Streamlit-Tutorial/models/modelo_cifar_10.h5')
# Realizar la predicción
predictions = model.predict(imagen)
predicted_class = tf.argmax(predictions[0]).numpy()
# Obtener el nombre de la clase predicha
class_names = ['avión', 'automóvil', 'pájaro', 'gato', 'ciervo', 'perro', 'rana', 'caballo', 'barco', 'camión']
return class_names[predicted_class]
def check_client_id(client_id):
# Simulación
# Cargar credenciales para la BBDD de la empresa y consultar si el identificador del cliente está activo
api_key = st.secrets["DB_USERNAME"]
ls_ids = [123,12345,12345678]
return True if client_id in ls_ids else False