paint-brush
Cómo usar Streamlit y Python para crear una aplicación de ciencia de datospor@davisdavid
12,663 lecturas
12,663 lecturas

Cómo usar Streamlit y Python para crear una aplicación de ciencia de datos

por Davis David6m2021/10/28
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

Streamlit es una biblioteca de Python de código abierto para crear y compartir aplicaciones web para proyectos de ciencia de datos y aprendizaje automático. La biblioteca puede ayudarlo a crear e implementar su solución de ciencia de datos en unos minutos con unas pocas líneas de código. La aplicación web de ciencia de datos mostrará un campo de texto para agregar la reseña de la película y un botón simple para enviar la reseña y hacer predicciones. Mostrará resultados cada vez que un usuario agregue la reseña de una película y haga clic en el botón "hacer predicción" en la sección del formulario.

Company Mentioned

Mention Thumbnail
featured image - Cómo usar Streamlit y Python para crear una aplicación de ciencia de datos
Davis David HackerNoon profile picture

Las aplicaciones web siguen siendo herramientas útiles para que los científicos de datos presenten sus proyectos de ciencia de datos a los usuarios. Dado que es posible que no tengamos habilidades de desarrollo web, podemos usar bibliotecas de Python de código abierto como Streamlit para desarrollar fácilmente aplicaciones web en poco tiempo.

TABLA DE CONTENIDO

  1. Introducción a Streamlit
  2. Instalación y configuración
  3. Desarrollar la aplicación web
  4. Probar la aplicación web
  5. Conclusión

1. Introducción a Streamlit

Streamlit es una biblioteca de Python de código abierto para crear y compartir aplicaciones web para proyectos de ciencia de datos y aprendizaje automático. La biblioteca puede ayudarlo a crear e implementar su solución de ciencia de datos en unos minutos con unas pocas líneas de código.

Streamlit puede integrarse a la perfección con otras bibliotecas populares de python utilizadas en la ciencia de datos, como NumPy, Pandas, Matplotlib, Scikit-learn y muchas más.

Nota: Streamlit usa React como marco de interfaz para representar los datos en la pantalla.

2. Instalación y configuración

Streamlit requiere la versión python >= 3.7 en su máquina.

Para instalar streamlit, debe ejecutar el siguiente comando en la terminal.

 pip install streamlit

También puede verificar la versión instalada en su máquina con el siguiente comando.

 streamlit --version

streamlit, versión 1.1.0

Después de instalar streamlit con éxito, puede probar la biblioteca ejecutando el siguiente comando en la terminal.

 streamlit hello

La aplicación Hello de Streamlit aparecerá en una nueva pestaña en su navegador web.

Esto muestra que todo está funcionando bien, podemos continuar y crear nuestra primera aplicación web usando Streamlit.

3. Desarrollar la aplicación web

En esta parte, implementaremos el modelo NLP entrenado que predice el sentimiento de la crítica de una película (positiva o negativa). Puede acceder al código fuente y al conjunto de datos aquí .

La aplicación web de ciencia de datos mostrará un campo de texto para agregar la reseña de la película y un botón simple para enviar la reseña y hacer predicciones.

Importar paquetes importantes

El primer paso es crear un archivo de python llamado app.py y luego importar los paquetes de python necesarios tanto para streamlit como para el modelo NLP entrenado.

 # import packages import streamlit as st import os import numpy as np from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer # text preprocessing modules from string import punctuation # text preprocessing modules from nltk.tokenize import word_tokenize import nltk from nltk.corpus import stopwords from nltk.stem import WordNetLemmatizer import re # regular expression import joblib import warnings warnings.filterwarnings( "ignore" ) # seeding np.random.seed( 123 ) # load stop words stop_words = stopwords.words( "english" )

Función para limpiar la revisión

Las reseñas pueden tener palabras y caracteres innecesarios que no necesitamos a la hora de hacer predicciones.

Limpiaremos la revisión eliminando palabras vacías, números y puntuación. Luego, convertiremos cada palabra a su forma base usando el proceso de lematización en el paquete NLTK.

La función text_cleaning() se encargará de todos los pasos necesarios para limpiar nuestra revisión antes de hacer una predicción.

 # function to clean the text @st.cache def text_cleaning (text, remove_stop_words=True, lemmatize_words=True) : # Clean the text, with the option to remove stop_words and to lemmatize word # Clean the text text = re.sub( r"[^A-Za-z0-9]" , " " , text) text = re.sub( r"\'s" , " " , text) text = re.sub( r"http\S+" , " link " , text) text = re.sub( r"\b\d+(?:\.\d+)?\s+" , "" , text) # remove numbers # Remove punctuation from text text = "" .join([c for c in text if c not in punctuation]) # Optionally, remove stop words if remove_stop_words: text = text.split() text = [w for w in text if not w in stop_words] text = " " .join(text) # Optionally, shorten words to their stems if lemmatize_words: text = text.split() lemmatizer = WordNetLemmatizer() lemmatized_words = [lemmatizer.lemmatize(word) for word in text] text = " " .join(lemmatized_words) # Return a list of words return text

Función para hacer predicción

La función de python llamada make_prediction() realizará las siguientes tareas.

  1. Recibir la revisión y limpiarla.
  2. Cargue el modelo NLP entrenado.
  3. Haz una predicción.
  4. Estime la probabilidad de la predicción.
  5. Finalmente, devolverá la clase predicha y su probabilidad.
 # functon to make prediction @st.cache def make_prediction (review) : # clearn the data clean_review = text_cleaning(review) # load the model and make prediction model = joblib.load( "sentiment_model_pipeline.pkl" ) # make prection result = model.predict([clean_review]) # check probabilities probas = model.predict_proba([clean_review]) probability = "{:.2f}" .format(float(probas[:, result])) return result, probability

Nota: si el modelo de PNL entrenado predice 1, significa Positivo y si predice 0, significa Negativo.

Crear título y descripción de la aplicación

Puede crear el título de su aplicación web y su descripción utilizando el método title() y write() de streamlit.

 # Set the app title st.title( "Sentiment Analyisis App" ) st.write( "A simple machine laerning app to predict the sentiment of a movie's review" )

Para mostrar la aplicación web, debe ejecutar el siguiente comando en su terminal.

 streamlit run app.py

Luego verá que la aplicación web aparece automáticamente en su navegador web o puede usar la URL local creada http://localhost:8501.

Crear un formulario para recibir la reseña de una película

El siguiente paso es crear un formulario simple usando streamlit. El formulario mostrará un campo de texto para agregar su revisión y, debajo del campo de texto, mostrará un botón simple para enviar la revisión agregada y luego hacer una predicción.

 # Declare a form to receive a movie's review form = st.form(key= "my_form" ) review = form.text_input(label= "Enter the text of your movie review" ) submit = form.form_submit_button(label= "Make Prediction" )

Ahora, puede ver el formulario en la aplicación web.

Hacer predicciones y mostrar resultados

Nuestro último fragmento de código es para hacer predicciones y mostrar resultados cada vez que un usuario agrega una reseña de una película y hace clic en el botón "hacer predicción" en la sección del formulario.

Después de hacer clic en el botón, la aplicación web ejecutará la función make_prediction() y mostrará el resultado en la aplicación web en el navegador.

 if submit: # make prediction from the input text result, probability = make_prediction(review) # Display results of the NLP task st.header( "Results" ) if int(result) == 1 : st.write( "This is a positive review with a probabiliy of " , probability) else : st.write( "This is a negative review with a probabiliy of " , probability)

4. Pruebe la aplicación web

Con unas pocas líneas de código, hemos creado una aplicación web de ciencia de datos simple que puede recibir una reseña de una película y predecir si es una reseña positiva o negativa.

Para probar la aplicación web, complete el campo de texto agregando una reseña de la película de su elección. Agregué la siguiente reseña de la película sobre la película Justice League de Zack Snyder estrenada en 2021.

"Me encantó la película desde el principio hasta el final. Tal como dijo Ray Fisher, esperaba que la película no terminara. La escena de la mendicidad fue alucinante, me gustó mucho esa escena. A diferencia de 'La Liga de la Justicia', la película mostrar que cada héroe es mejor en lo suyo, hacer que amemos a cada personaje. Gracias, Zack y todo el equipo".

Luego haga clic en el botón de hacer predicción y vea el resultado.

Como puede ver en la aplicación web que hemos creado, el modelo de PNL entrenado predice que la revisión añadida es positiva con una probabilidad de 0,64.

Le recomiendo que agregue otra reseña de la película en la aplicación web de ciencia de datos que hemos creado y la vuelva a probar.

5. Conclusión

Hay muchas características y componentes de Streamlit que puede usar para desarrollar una aplicación web de ciencia de datos de la manera que desee. Lo que ha aprendido aquí son algunos de los elementos comunes de streamlit.

Para obtener más información, puede visitar sus hermosas páginas de documentación diseñadas aquí.

Si aprendiste algo nuevo o disfrutaste leyendo este artículo, compártelo para que otros puedan verlo. Hasta entonces, ¡nos vemos en el próximo artículo!.

También puedes encontrarme en Twitter @Davis_McDavid y puedes leer más artículos como este aquí .

¿Quieres estar al día con lo último en ciencia de datos? ¡ Suscríbase a nuestro boletín en el pie de página a continuación!