В этом руководстве мы создаём продвинутую систему интеллектуального агента, которая автономно обрабатывает прогнозирование временных рядов с использованием библиотеки Darts в сочетании с лёгкой моделью HuggingFace для рассуждений. Мы разрабатываем агента, который будет работать по циклу «восприятие — рассуждение — действие», где он сначала анализирует закономерности в данных, затем выбирает подходящую модель прогнозирования, генерирует прогнозы и, наконец, объясняет и визуализирует результаты.
Пройдя через этот конвейер, мы увидим, как интеллектуальный агент может объединить статистическое моделирование и рассуждения на естественном языке, чтобы сделать прогнозирование точным и понятным.
Установка и импорт библиотек
Сначала мы устанавливаем и импортируем необходимые библиотеки, включая Darts для прогнозирования временных рядов, Transformers для рассуждений и вспомогательные пакеты, такие как pandas, NumPy и matplotlib. С помощью этих инструментов мы закладываем основу для создания и запуска нашего автономного агента прогнозирования.
«`python
!pip install darts transformers pandas matplotlib numpy -q
import pandas as pd
import numpy as np
from darts import TimeSeries
from darts.models import ExponentialSmoothing, NaiveSeasonal, LinearRegressionModel
from darts.metrics import mape, rmse
from transformers import pipeline
import matplotlib.pyplot as plt
from datetime import datetime, timedelta
«`
Класс TimeSeriesAgent
Мы определяем класс `TimeSeriesAgent`, который думает с помощью лёгкой модели HuggingFace и действует с небольшим портфелем моделей Darts. Мы воспринимаем закономерности (тенденцию, волатильность, сезонность), рассуждаем, чтобы выбрать лучшую модель, затем обучаем, прогнозируем и валидируем. Наконец, мы объясняем прогноз простым языком и визуализируем историю по сравнению с прогнозом.
«`python
class TimeSeriesAgent:
«»»Автономный агент для анализа временных рядов и прогнозирования»»»
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_seasonal’: NaiveSeasonal(K=12),
‘linear_regression’: LinearRegressionModel(lags=12)
}
self.selected_model = None
self.forecast = None
def perceive(self, data):
«»»Агент воспринимает и анализирует данные временных рядов»»»
print(«\n PERCEPTION PHASE»)
self.ts = TimeSeries.from_dataframe(data, ‘date’, ‘value’, freq=’M’)
trend = «increasing» if data[‘value’].iloc[-1] > data[‘value’].iloc[0] else «decreasing»
volatility = data[‘value’].std() / data[‘value’].mean()
seasonality = self.detectseasonality(data[‘value’])
analysis = {
‘length’: len(data),
‘trend’: trend,
‘volatility’: f»{volatility:.2f}»,
‘has_seasonality’: seasonality,
‘mean’: f»{data[‘value’].mean():.2f}»,
‘range’: f»{data[‘value’].min():.2f} to {data[‘value’].max():.2f}»
}
print(f» Data Points: {analysis[‘length’]}»)
print(f» Trend: {analysis[‘trend’].upper()}»)
print(f» Volatility: {analysis[‘volatility’]}»)
print(f» Seasonality: {‘Detected’ if seasonality else ‘Not detected’}»)
return analysis
# [дополнительный код класса]
«`
Генерация данных
Мы создаём вспомогательную функцию `createsampledata()`, которая генерирует синтетические данные временных рядов с чёткой тенденцией, синусоидальной сезонностью и случайным шумом. Это позволяет нам имитировать реалистичные ежемесячные данные с 2020 по 2023 год для тестирования и демонстрации рабочего процесса агента.
«`python
def createsampledata():
«»»Generate sample time series data»»»
dates = pd.date_range(start=’2020-01-01′, periods=48, freq=’M’)
trend = np.linspace(100, 150, 48)
seasonality = 10 np.sin(np.linspace(0, 4np.pi, 48))
noise = np.random.normal(0, 3, 48)
values = trend + seasonality + noise
return pd.DataFrame({‘date’: dates, ‘value’: values})
«`
Основная функция
Мы определяем основную функцию, которая запускает полный конвейер интеллектуального агента. Мы загружаем синтетические данные временных рядов, позволяем агенту `TimeSeriesAgent` воспринимать закономерности, рассуждать, чтобы выбрать лучшую модель, действовать, обучая и прогнозируя, объяснять результаты и, наконец, визуализировать их. Это завершает цикл автономного восприятия, рассуждения и действия.
«`python
def main():
«»»Main execution: Agent autonomously handles forecasting task»»»
print(«=»*70)
print(» AGENTIC AI TIME SERIES FORECASTING SYSTEM»)
print(«=»*70)
print(«\n Loading data…»)
data = createsampledata()
print(f»Loaded {len(data)} data points from 2020-01 to 2023-12″)
agent = TimeSeriesAgent()
analysis = agent.perceive(data)
agent.reason(analysis)
agent.act(horizon=12)
agent.explain()
agent.visualize()
print(«\n» + «=»*70)
print(» AGENT COMPLETED FORECASTING TASK SUCCESSFULLY»)
print(«=»*70)
if name == «main«:
main()
«`
В заключение мы видим, как автономный агент может анализировать данные временных рядов, рассуждать о выборе модели, генерировать прогнозы и объяснять свои прогнозы на естественном языке. Комбинируя Darts с HuggingFace, мы создаём компактную, но мощную структуру, которая не только выдаёт точные прогнозы, но и чётко передаёт идеи. Мы завершаем цикл визуализацией, подчёркивая, как интеллектуальный агент делает прогнозирование более интуитивным и интерактивным.
1. Какие библиотеки и инструменты используются для создания автономного интеллектуального агента для прогнозирования временных рядов в данной статье?
В статье используются следующие библиотеки и инструменты: Darts для прогнозирования временных рядов, Transformers для рассуждений, pandas, NumPy и matplotlib для вспомогательных функций.
2. Какие методы анализа данных временных рядов применяются в классе TimeSeriesAgent?
В классе TimeSeriesAgent применяются методы анализа данных временных рядов, такие как определение тенденции (увеличение или уменьшение), волатильности и сезонности.
3. Какие модели прогнозирования временных рядов включены в портфель моделей Darts, используемых в статье?
В портфель моделей Darts включены следующие модели прогнозирования временных рядов: ExponentialSmoothing, NaiveSeasonal и LinearRegressionModel.
4. Какие этапы включает в себя цикл работы автономного интеллектуального агента, описанного в статье?
Цикл работы автономного интеллектуального агента включает в себя следующие этапы: восприятие (анализ закономерностей в данных), рассуждение (выбор подходящей модели прогнозирования), действие (генерация прогнозов), объяснение результатов и визуализация.
5. Какие функции используются для генерации синтетических данных временных рядов в статье?
Для генерации синтетических данных временных рядов используется функция createsampledata(), которая создаёт данные с чёткой тенденцией, синусоидальной сезонностью и случайным шумом.