Una guía de codificación para construir una IA agente autónoma para el pronóstico de series de tiempo con dardos y cara de abrazo

En este tutorial, construimos un sistema de IA de agente avanzado que maneja de forma autónoma el pronóstico de series temporales utilizando la biblioteca DARTS combinada con un modelo de cara de abrazo ligero para el razonamiento. Diseñamos al agente para operar en un ciclo de percepción -condición -acción, donde primero analiza los patrones en los datos, luego selecciona un modelo de pronóstico apropiado, genera predicciones y finalmente explica y visualiza los resultados. Al caminar a través de esta tubería, experimentamos cómo la IA agente puede reunir el modelado estadístico y el razonamiento del lenguaje natural para hacer que el pronóstico sea preciso e interpretable. Mira los códigos completos aquí.

! Pip Instale Darts Transformadores Pandas matplotlib numpy -q import pandas como pd import numpy como np de darts importaciones de importación de dardos.

Comenzamos instalando e importando las bibliotecas esenciales, incluidos los dardos para el pronóstico de las series de tiempo, los transformadores para razonamiento y los paquetes de soporte como pandas, numpy y matplotlib. Con estas herramientas en su lugar, configuramos la base para construir y ejecutar nuestro agente de pronóstico autónomo. Mira los códigos completos aquí.

class TimeSeriesAgent: “””Autonomous agent for time series analysis and forecasting””” def __init__(self): print(“🤖 Initializing Agent Brain…”) self.llm = pipeline(“text-generation”, model=”distilgpt2″, max_length=150, do_sample=True, temperature=0.7) self.models = { ‘exponential_smoothing’: ExponentialSmoothing (), ‘Naive_Sasonal’: NaiveSasonal (k = 12), ‘lineal_regression’: lineAreRegressionModel (LAGS = 12)} self.selected_model = ninguno self.forecast = none def percibe (self, data): “” “El agente percibe y analiza los datos de la serie de tiempo” “” Impres. Timeseries.From_DataFrame (datos, ‘fecha’, ‘valor’, freq = ‘m’) tendencia = “aumentando” si los datos[‘value’].iloc[-1] > Datos[‘value’].iloc[0] de la otra volatilidad “disminuida” = datos[‘value’].std () / datos[‘value’].mean () estacionalidad = self._detect_sonseality (datos[‘value’]) Análisis = {‘Longitud’: Len (Data), ‘Trend’: Trend, ‘Volatilidad’: F “{volatilidad: .2f}”, ‘Has_sonityality’: estacionalidad, ‘media’: f “{data[‘value’].mean () :. 2f} “, ‘rango’: f” {datos[‘value’].min ():. 2f} a {datos[‘value’].max () :. 2f} “} print (f” 📊 Puntos de datos: {Análisis[‘length’]} “) print (f” 📈 tendencia: {análisis[‘trend’].upper ()} “) print (f” 🎲 volatilidad: {análisis[‘volatility’]} “) print (f” 🔄 estacionalidad: {‘detectado’ si la estacionalidad else ‘no detectado’} “) Análisis de retorno def _detect_sonseality (self, series, umbral = 0.3):” “” Detección de temporada de temporada simple “” “si dent (serie) <24: return acf = np.Correlate (Series - Series.Mean (), serie - serie. ACF[len(acf)//2:] ACF /= ACF[0] devolver np.max (ACF[12:24])> umbral si len (ACF)> 24 más falso defens de la razón (self, análisis): “” “Razones de agente sobre qué modelo usar” “” imprima (“\ n🧠 fase de razonamiento”) Aviso de series de tiempo: {Análisis de tiempo: {Análisis[‘length’]} puntos de datos, {análisis[‘trend’]} tendencia, volatilidad “\ f” {análisis[‘volatility’]}, estacionalidad: {análisis[‘has_seasonality’]}. “Thought = Self.llm (indic, max_length = 100, num_return_sequences = 1)[0][‘generated_text’]

imprimir (f “💭 pensamiento del agente: {pensamiento[:150]} … “) Si análisis[‘has_seasonality’]: self.selected_model = “Naive_Sasonal” razonal = “Estacionalidad detectada – Uso de un modelo estacional ingenuo” Elif float (análisis[‘volatility’])> 0.3: self.selected_model = “exponencial_smoothing” razon = “alta volatilidad – usando suavizado exponencial” else: self.selected_model = “lineal_regression” razon = “tendencia estable – usando regresión lineal” imprime (f “✅ decisión: {razon}”) return Genera pronosticar “” “imprimir (” \ n⚡ fase de acción “) tren, val = self.ts[:-12]self.ts[-12:]

modelo = self.models[self.selected_model]
print (f “🎯 entrenamiento {self.selected_model} …”) model.fit (trenes) self.forecast = model.Predict (horizon) if len (val)> 0: val_pred = model.Predict (len (val)) Accuracy = 100 – Mape (val, val_preed) impresión (F “📊 Validación: {Acurrente: {ACTuracio: .2f}} Generado {Horizon} -Step pronóstico “) return self.forecast defin explicar (self):” “” agente explica sus predicciones “” imprima (“\ n💬 fase de explicación”) pronostice_values ​​= self.forecast.values ​​(). Flatten () hist_values ​​= self.ts.values ​​().[-1] – Hist_Values[-1]) / hist_values[-1]) * 100 dirección = “aumentar” si cambio> 0 más “disminuir” explicación = f “basado en mi análisis usando {self.selected_model},” \ f “predigo un {abs (cambio) :. 1f}% {dirección} en el siguiente período.” \ F “rango de pronóstico: {prevaleciente_values.min ():. 2f} a {Forecast_Values.max () :. 2f}. print (f “📝 {explicación}”) indic = f “Resumen de pronóstico: {Explicación} Explicar implicaciones:” Summary = Self.llm (indic, max_length = 120)[0][‘generated_text’]

Impresión (F “\ n🤖 Resumen del agente: {Resumen[:200]} … “) Return Explation Def Visualize (self):” “” El agente crea la visualización de su trabajo “” “imprime (” \ n📊 Generación de visualización … “) plt.figure (figSize = (14, 6)) self.ts.plot (etiqueta =” datos históricos “, lw = 2) self.forecast.plot (etiqueta = f’formes Linestyle = “-“) plt.title (‘🤖 🤖 🤖 🤖 🤖 🤖 🤖 agente de la serie temporal del tiempo’, fontSize = 16, fontWeight = “Bold”) plt.xlabel (‘date’, fontSize = 12) plt.ylabel (‘value’, fontsize = 12) plt.legend (loc = “o mejor plt.tight_layout () plt.show ()

Definimos un TimeseriesAgent que piensa con un modelo de cara de abrazo ligera y actúa con una pequeña cartera de modelos de dardos. Percibimos patrones (tendencia, volatilidad, estacionalidad), razón para elegir el mejor modelo, luego entrenar, pronosticar y validar. Finalmente, explicamos la predicción en lenguaje sencillo y visualizamos la historia versus pronóstico. Mira los códigos completos aquí.

🚨 [Recommended Read] VIPE (Video Pose Engine): una herramienta de anotación de video 3D potente y versátil para AI espacial

Def create_sample_data (): “” “Genere datos de la serie de tiempo de muestra” “” fechas = pd.date_range (start = “2020-01-01”, períodos = 48, freq = ‘m’) tend = np.linspace (100, 150, 48) estacionalidad = 10 * np.sin (np.linspace (0, 4 * np.p.p.pi, 48) ruido = 48). np.random.normal (0, 3, 48) valores = tendencia + estacionalidad + ruido return pd.dataframe ({‘date’: fechas, ‘valor’: valores})

Creamos una función de ayuda create_sample_data () que genera datos de series de tiempo sintéticas con una tendencia clara, estacionalidad sinusoidal y ruido aleatorio. Esto nos permite simular datos mensuales realistas de 2020 a 2023 para probar y demostrar el flujo de trabajo de pronóstico del agente. Mira los códigos completos aquí.

Def Main (): “” “” “Ejecución principal: el agente maneja autónoma la tarea de pronóstico” “” imprime (“=”*70) print (“🚀 agente AI Sistema de pronóstico de la serie temporal”) print (“=”*70) print (“\ n📥 cargando datos …”) data = create_sample_data () imprime (f “cargado {len (data)} data puntos de 2020-01 a 202 TimeseriesAgent () análisis = agente.perceive (data) agent.Rason (análisis) agente.act (horizon = 12) agent.explain () agent.visualize () print (“\ n” + “=”*70) print (“✅ agente completó la tarea de pronóstico con éxito”) imprime (“=”*70) si __name__ == “__Main__”: Main ()

Definimos la función principal que ejecuta la tubería AI de agente completa. Cargamos datos de series de tiempo sintéticas, dejamos que los patrones de percepción de TimeseriesAgent, la razón para seleccionar el mejor modelo, actuar por capacitación y pronóstico, explicar los resultados y finalmente visualizarlos. Esto completa la percepción autónoma, el razonamiento y el ciclo de acción de extremo a extremo.

En conclusión, vemos cómo un agente autónomo puede analizar los datos de la serie temporal, la razón sobre la selección del modelo, generar pronósticos y explicar sus predicciones en el lenguaje natural. Al combinar los dardos con Huggingface, creamos un marco compacto pero poderoso que no solo produce pronósticos precisos, sino que también comunica claramente las ideas. Completamos el ciclo con visualización, reforzando cómo la IA de agente hace que el pronóstico sea más intuitivo e interactivo.

Mira los códigos completos aquí. No dude en consultar nuestra página de GitHub para obtener tutoriales, códigos y cuadernos. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro subreddit de 100k+ ml y suscribirse a nuestro boletín. ¡Esperar! ¿Estás en Telegram? Ahora también puedes unirte a nosotros en Telegram.

Asif Razzaq es el CEO de MarktechPost Media Inc .. Como empresario e ingeniero visionario, ASIF se compromete a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, MarktechPost, que se destaca por su cobertura profunda de noticias de aprendizaje automático y de aprendizaje profundo que es técnicamente sólido y fácilmente comprensible por una audiencia amplia. La plataforma cuenta con más de 2 millones de vistas mensuales, ilustrando su popularidad entre el público.

🙌 Siga a MarkTechPost: agrégenos como una fuente preferida en Google.