Mochis NoticiasTecnologíaRiver para el aprendizaje automático en línea: un ejemplo
Mochis NoticiasTecnologíaRiver para el aprendizaje automático en línea: un ejemplo
Tecnología

River para el aprendizaje automático en línea: un ejemplo


River para el aprendizaje automático en línea: un ejemplo

River es el paquete de aprendizaje automático en línea en Python. Puede funcionar para una variedad de problemas de aprendizaje automático, ya sea regresión o clasificación.

River consta de Creme y Scikit-Multiflow y está destinado a trabajar con los datos que se generan continuamente. Este blog muestra un procedimiento paso a paso para utilizar River en un conjunto de datos de ejemplo comenzando con su instalación. Los conceptos básicos de River se han analizado en detalle en mi blog anterior. Si no ha leído esto, se recomienda que lo lea primero antes de seguir este blog para una mejor comprensión.

Instalación

Instalar River es lo mismo que instalar otros paquetes de Python. Puede usar pip para instalarlo en su entorno.



pip install river


Funciones

Tomemos un ejemplo para construir un modelo de clasificación de texto simple usando River. El objetivo es clasificar la prueba dada como software o hardware. Para ello, utilizaremos BagOfWords() como transformador para convertir el texto en características y Naive Bayes MultinomialNB para modelar los datos. Por lo tanto, primero importamos los paquetes necesarios.



from river.naive_bayes import MultinomialNB
from river.feature_extraction import BagOfWords,TFIDF
from river.compose import Pipeline 
from river.metrics import ClassificationReport, Accuracy


Creemos un canal de aprendizaje automático y también midamos el rendimiento del modelo en función de su precisión. Aquí podemos muestrear los datos de emoción, que son solo una lista de tuplas que consisten en el texto y su etiqueta asociada. El objetivo es clasificar el texto en una de las emociones; feliz o triste. Los datos también se pueden ingerir desde una fuente de transmisión. Se puede hacer lo mismo leyendo datos de un archivo csv, pero en ese caso, es necesario convertir el marco de datos en un diccionario usando el paquete Pandas habitual.



import pandas as pd
df = pd.read_csv("emotion_dataset.csv")
# Convert to Format
df.to_dict(records)

# Convert to Tuple
df.to_records(index=False)


conjunto de datos

Aquí está el conjunto de datos de emociones que podemos usar para seguir los pasos:



data = [("My dreams have come true", "happy"),
("He is happy as a pig in mud", "happy"),
("Broke My Heart", "sad"),
("He jumped with joy", "happy"),
("Cut up about something", "sad"),
("Are you feeling down", "sad"),
("Friends, you made my day", "happy"),
("He walked away with heavy heart", "sad"),
("I'm so happy, I'm on cloud nine", "happy"),
("He is in sad state of mind", "sad"),
("You are on the of the world", "happy"),
("Why are you shedding tears", "sad"),
("She is walking over the moon", "happy"),
("She finds herself under the weather", "sad")]


Modelo de clasificación

Ahora crearemos un proceso de dos etapas; la etapa transformadora y estimadora. Una vez construida la tubería, podemos dibujarla usando la función de dibujo.



pipe_nb = Pipeline(('vectorizer',BagOfWords(lowercase=True)),
('nb',MultinomialNB()))
pipe_nb.steps


Dado que los datos se obtienen en tiempo de ejecución, ajustaremos el modelo a los datos uno por uno. Para ello, utilizaremos la función .learn_one(x,y) durante el entrenamiento. Podemos simular esto iterando nuestros datos usando un bucle for.



for text,label in data:
    pipe_nb = pipe_nb.learn_one(text,label)


Encontrar probabilidad de predicción

Para probar el modelo en una entrada de muestra, usamos la función predict_one(). Esto devuelve la clase a la que pertenece la entrada de muestra. Si desea conocer la probabilidad asociada, también puede utilizar la función predict_proba_one.



pipe_nb.predict_one('She is dancing with joy')
pipe_nb.predict_proba_one('She is dancing with joy')


Medida de desempeño del modelo

Una vez que el modelo esté entrenado, evaluaremos el rendimiento del modelo utilizando funciones del submódulo river.metrics como Precisión, Informe de clasificación, etc.



metric_accuracy = Accuracy()
for x,y in data:
    y_predict_before = pipe_nb.predict_one(x)
    # Check Acccuracy
    metric_accuracy = metric_accuracy.update(y,y_predict_before)
    pipe_nb = pipe_nb.fit_one(x,y)

print("Final Accuracy",metric_accuracy)


Considere los siguientes datos de muestra, que usaremos para comprobar qué tan bien se ajusta nuestro modelo a los datos.



sample_data = ["You colour me happy", 
"My friend cracked a smile to see me", 
"He cried his eyes out", 
“You are down in the dumps”]
y_actual = ["happy", "happy", "sad", "sad"]


Pasemos los datos de muestra para predecir su salida.



y_predict = []
for i in sample_data:
    result = pipe_nb.predict_one(i)
    print("{}: Prediction: {}".format(i,result))
    y_predict.append(result)


Para obtener el resultado de la clasificación en forma de informe de clasificación, utilizaremos el conjunto de datos de prueba de muestra anterior.



report = ClassificationReport()
for y_act, y_pred in zip(y_actual, y_predict):
    report = report.update(y_act, y_pred)

report


Esto es realmente interesante y también súper rápido. ¿No es así? Disfruté explorando sus funcionalidades. Espero que a ti también te guste.





Source link

Hi, I’m Corina Guzman

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *