Pré-processamento e tratamento de dados
Este módulo contém todas as funcionalidades relacionadas ao carregamento, pré-processamento, imputação e gerenciamento de dados para análise de séries temporais.
Leitura de dados
Módulo para carregamento de dados de séries temporais.
Este módulo fornece funcionalidades para carregar e processar dados de séries temporais.
- llm4time.core.data.loader.load_data(path: str) DataFrame | None [código-fonte]
Carrega dados de séries temporais a partir de um arquivo.
Esta função identifica a extensão do arquivo e utiliza a função de leitura apropriada do pandas. Formatos suportados: CSV, XLSX, JSON, Parquet.
- Parâmetros:
path (str) – Caminho para o arquivo a ser carregado.
- Retorna:
DataFrame contendo os dados carregados ou None em caso de erro.
- Tipo de retorno:
pd.DataFrame | None
Exemplos
>>> df = load_data("etth2.csv")
Pré-processamento
Módulo para pré-processamento de dados de séries temporais.
Este módulo fornece funcionalidades essenciais para preparação e estruturação de dados de séries temporais, incluindo seleção e padronização de colunas, normalização de frequência temporal, e divisão de dados para treino e validação.
- llm4time.core.data.preprocessor.standardize(df: DataFrame, date_col: str, value_col: str, duplicates: str = None) DataFrame [código-fonte]
Padroniza um DataFrame para o formato de série temporal.
- Realiza os seguintes passos:
Seleciona apenas as colunas date_col e value_col.
Renomeia date_col para “date” e value_col para “value”.
Converte a coluna “date” para datetime.
Ordena o DataFrame pela coluna “date” em ordem crescente.
Remove ou agrega duplicatas conforme o parâmetro duplicates.
Reseta os índices do DataFrame resultante.
- Parâmetros:
df (pd.DataFrame) – DataFrame original contendo as colunas de interesse.
date_col (str) – Nome da coluna que contém as datas.
value_col (str) – Nome da coluna que contém os valores.
duplicates (str | None) – Como tratar dados duplicados: “first” → mantém a primeira ocorrência. “last” → mantém a última ocorrência. “sum” → soma os valores duplicados. None → não remove duplicatas.
- Retorna:
DataFrame padronizado com colunas date e value, ordenado por date.
- Tipo de retorno:
pd.DataFrame
Exemplos
>>> df = pd.DataFrame({ ... "col1": ["2025-01-03", "2025-01-01", "2025-01-02"], ... "col2": [30, 10, 20], ... "col3": ["a", "b", "c"] ... }) >>> padronize(df, date_col="col1", value_col="col2") date value 0 2025-01-01 10 1 2025-01-02 20 2 2025-01-03 30
- llm4time.core.data.preprocessor.normalize(ts: DataFrame, freq: str, start: str = None, end: str = None) DataFrame [código-fonte]
Normaliza a série temporal garantindo que todas as datas dentro de um intervalo estejam presentes.
Cria um intervalo contínuo de datas, baseado nos limites fornecidos ou, se não especificados, na menor e maior data da coluna ‘date’. Datas ausentes são preenchidas com NaN.
- Parâmetros:
ts (pd.DataFrame) – DataFrame contendo obrigatoriamente a coluna ‘date’.
freq (str) – Frequência da série temporal (ex.: ‘D’ = diário, ‘M’ = mensal, ‘H’ = horário).
start (str, optional) – Data inicial do intervalo (ex.: “2020-01” ou “2020-01-01”). Se None, usa data mínima em df[“date”]. Padrão: None.
end (str, optional) – Data final do intervalo (ex.: “2024-12” ou “2024-12-31”). Se None, usa data máxima em df[“date”]. Padrão: None.
- Retorna:
DataFrame expandido para conter todas as datas no intervalo definido, com valores ausentes preenchidos como NaN.
- Tipo de retorno:
pd.DataFrame
Exemplos
>>> ts = pd.DataFrame({"date": pd.to_datetime(["2021-01-01", "2021-01-03"]), "value": [10, 30]}) >>> normalize(ts, freq="D", start="2021-01-01", end="2021-01-05") date value 0 2021-01-01 10.0 1 2021-01-02 NaN 2 2021-01-03 30.0 3 2021-01-04 NaN 4 2021-01-05 NaN
- llm4time.core.data.preprocessor.split(ts: DataFrame, start_date: str, end_date: str, periods: int) tuple[list[tuple[str, float]], list[float]] [código-fonte]
Divide uma série temporal em conjunto de treino e validação com base em datas de corte.
O conjunto de treino contém as observações no intervalo entre start_date e end_date, enquanto o conjunto de validação contém as observações após end_date, limitado a periods valores.
- Parâmetros:
ts (pd.DataFrame) – DataFrame com colunas obrigatórias ‘date’ e ‘value’.
start_date (str) – Data inicial do período de treino (formato “YYYY-MM-DD”).
end_date (str) – Data final do período de treino (formato “YYYY-MM-DD”).
periods (int) – Quantidade de valores a considerar no conjunto de validação.
- Retorna:
- Tupla contendo:
train: Lista de tuplas (date, value) representando o conjunto de treino
y_val: Lista de valores (float) do conjunto de validação, limitado a periods
- Tipo de retorno:
tuple[list[tuple[str, float]], list[float]]
Exemplos
>>> ts = pd.DataFrame({ ... "date": ["2025-01-01", "2025-01-02", "2025-01-03", "2025-01-04"], ... "value": [10.123, 20.456, 30.789, 40.321] ... }) >>> split(ts, start_date="2025-01-01", end_date="2025-01-02", periods=2) ([('2025-01-01', 10.123), ('2025-01-02', 20.456)], [30.789, 40.321])
Métodos de imputação
Módulo para imputação de valores ausentes em séries temporais.
Este módulo fornece diversas estratégias para tratamento de valores NaN em dados de séries temporais, incluindo métodos estatísticos, de preenchimento e interpolação.
- llm4time.core.data.imputation.mean(ts: Series | DataFrame, decimals: int = 4) Series | DataFrame [código-fonte]
Imputa valores ausentes usando a média da coluna ‘value’.
Substitui todos os valores NaN na coluna ‘value’ pela média dos valores não nulos, arredondada para o número de casas decimais definido.
- Parâmetros:
ts (Union[pd.Series, pd.DataFrame]) – Dados contendo uma coluna ‘value’ com possíveis valores ausentes.
decimals (int, opcional) – Número de casas decimais para arredondamento. Padrão: 4.
- Retorna:
Dados com valores ausentes imputados pela média.
- Tipo de retorno:
Union[pd.Series, pd.DataFrame]
Exemplos
>>> ts = pd.DataFrame({'value': [1.0, np.nan, 3.0, np.nan, 5.0]}) >>> mean(ts, decimals=2) [1.0, 3.0, 3.0, 3.0, 5.0]
- llm4time.core.data.imputation.median(ts: Series | DataFrame, decimals: int = 4) Series | DataFrame [código-fonte]
Imputa valores ausentes usando a mediana da coluna ‘value’.
Substitui todos os valores NaN na coluna ‘value’ pela mediana dos valores não nulos, arredondada para o número de casas decimais definido.
- Parâmetros:
ts (Union[pd.Series, pd.DataFrame]) – Dados contendo uma coluna ‘value’ com possíveis valores ausentes.
decimals (int, opcional) – Número de casas decimais para arredondamento. Padrão: 4.
- Retorna:
Dados com valores ausentes imputados pela mediana.
- Tipo de retorno:
Union[pd.Series, pd.DataFrame]
Exemplos
>>> ts = pd.DataFrame({'value': [1.0, np.nan, 100.0, np.nan, 5.0]}) >>> median(ts, decimals=2) [1.0, 5.0, 100.0, 5.0, 5.0]
- llm4time.core.data.imputation.ffill(ts: Series | DataFrame) Series | DataFrame [código-fonte]
Imputa valores ausentes usando forward fill seguido de backward fill.
Preenche valores NaN propagando o último valor válido para frente, e depois preenche valores restantes propagando para trás. Preserva a continuidade temporal dos dados.
- Parâmetros:
ts (Union[pd.Series, pd.DataFrame]) – Dados contendo uma coluna ‘value’ com possíveis valores ausentes.
- Retorna:
Dados com valores ausentes imputados por propagação temporal.
- Tipo de retorno:
Union[pd.Series, pd.DataFrame]
Exemplos
>>> ts = pd.DataFrame({'value': [np.nan, 2.0, np.nan, 4.0, np.nan]}) >>> ffill(ts) [2.0, 2.0, 2.0, 4.0, 4.0]
- llm4time.core.data.imputation.bfill(ts: Series | DataFrame) Series | DataFrame [código-fonte]
Imputa valores ausentes usando backward fill seguido de forward fill.
Preenche valores NaN propagando o próximo valor válido para trás, e depois preenche valores restantes propagando para frente.
- Parâmetros:
ts (Union[pd.Series, pd.DataFrame]) – Dados contendo uma coluna ‘value’ com possíveis valores ausentes.
- Retorna:
Dados com valores ausentes imputados por propagação temporal reversa.
- Tipo de retorno:
Union[pd.Series, pd.DataFrame]
Exemplos
>>> ts = pd.DataFrame({'value': [np.nan, 2.0, np.nan, 4.0, np.nan]}) >>> bfill(ts) [2.0, 2.0, 4.0, 4.0, 4.0]
- llm4time.core.data.imputation.sma(ts: Series | DataFrame, window: int, min_periods: int = 1) Series | DataFrame [código-fonte]
Imputa valores ausentes usando média móvel simples.
Calcula a média móvel dos valores não nulos e usa para imputar valores ausentes, seguido de forward/backward fill para garantir cobertura completa.
- Parâmetros:
ts (Union[pd.Series, pd.DataFrame]) – Dados contendo uma coluna ‘value’ com possíveis valores ausentes.
window (int) – Tamanho da janela para cálculo da média móvel.
min_periods (int, optional) – Número mínimo de observações na janela. Padrão: 1.
- Retorna:
Dados com valores ausentes imputados por média móvel.
- Tipo de retorno:
Union[pd.Series, pd.DataFrame]
Exemplos
>>> ts = pd.DataFrame({'value': [1.0, np.nan, 3.0, np.nan, 5.0]}) >>> sma(ts, window=3)
- llm4time.core.data.imputation.ema(ts: Series | DataFrame, span: int, adjust: bool = False) Series | DataFrame [código-fonte]
Imputa valores ausentes usando média móvel exponencial.
Aplica média móvel exponencial que dá maior peso aos valores recentes para imputar valores ausentes, seguido de forward/backward fill.
- Parâmetros:
ts (Union[pd.Series, pd.DataFrame]) – Dados contendo uma coluna ‘value’ com possíveis valores ausentes.
span (int) – Span para o cálculo da média móvel exponencial.
adjust (bool, optional) – Se True, divide por fator de decaimento em expansão. Padrão: False.
- Retorna:
Dados com valores ausentes imputados por média móvel exponencial.
- Tipo de retorno:
Union[pd.Series, pd.DataFrame]
Exemplos
>>> ts = pd.DataFrame({'value': [1.0, np.nan, 3.0, np.nan, 5.0]}) >>> ema(ts, span=3)
- llm4time.core.data.imputation.linear_interpolation(ts: Series | DataFrame) Series | DataFrame [código-fonte]
Imputa valores ausentes usando interpolação linear.
Usa interpolação linear entre pontos conhecidos para estimar valores ausentes, seguido de forward/backward fill para extremos.
- Parâmetros:
ts (Union[pd.Series, pd.DataFrame]) – Dados contendo uma coluna ‘value’ com possíveis valores ausentes.
- Retorna:
Dados com valores ausentes imputados por interpolação linear.
- Tipo de retorno:
Union[pd.Series, pd.DataFrame]
Exemplos
>>> ts = pd.DataFrame({'value': [1.0, np.nan, np.nan, 4.0]}) >>> linear_interpolation(ts) [1.0, 2.0, 3.0, 4.0]
- llm4time.core.data.imputation.spline_interpolation(ts: Series | DataFrame, order: int = 2) Series | DataFrame [código-fonte]
Imputa valores ausentes usando interpolação spline.
Aplica interpolação spline de ordem especificada para suavizar a estimação de valores ausentes. Em caso de falha, recorre à interpolação linear.
- Parâmetros:
ts (Union[pd.Series, pd.DataFrame]) – Dados contendo uma coluna ‘value’ com possíveis valores ausentes.
order (int, optional) – Ordem do polinômio spline. Padrão: 2.
- Retorna:
Dados com valores ausentes imputados por interpolação spline ou linear (fallback).
- Tipo de retorno:
Union[pd.Series, pd.DataFrame]
Exemplos
>>> ts = pd.DataFrame({'value': [1.0, np.nan, np.nan, 4.0, np.nan, 6.0]}) >>> spline_interpolation(ts, order=3)
- llm4time.core.data.imputation.zero(ts: Series | DataFrame) Series | DataFrame [código-fonte]
Imputa valores ausentes com zero.
Substitui todos os valores NaN na coluna ‘value’ por 0. Útil quando valores ausentes representam ausência de eventos ou medições.
- Parâmetros:
ts (Union[pd.Series, pd.DataFrame]) – Dados contendo uma coluna ‘value’ com possíveis valores ausentes.
- Retorna:
Dados com valores ausentes imputados com zero.
- Tipo de retorno:
Union[pd.Series, pd.DataFrame]
Exemplos
>>> ts = pd.DataFrame({'value': [1.0, np.nan, 3.0, np.nan, 5.0]}) >>> zero(ts) [1.0, 0.0, 3.0, 0.0, 5.0]
Gerenciamento de dados
Módulo para gerenciamento de dados de séries temporais.
Este módulo fornece funcionalidades para salvar DataFrames processados em diferentes formatos, facilitando a persistência de dados após o processamento e análise de séries temporais.
- llm4time.core.data.manager.save(df: DataFrame, path: str) None [código-fonte]
Salva um DataFrame em arquivo, identificando automaticamente o formato.
Suporta os seguintes formatos: CSV, XLSX, JSON, Parquet.
- Parâmetros:
df (pd.DataFrame) – DataFrame contendo os dados a serem salvos.
path (str) – Caminho completo incluindo nome e extensão do arquivo.
Exemplos
>>> df = pd.DataFrame({'date': ['2023-01-01', '2023-01-02'], ... 'value': [10.5, 12.3]}) >>> save(df, "etth2.csv") # Arquivo salvo em etth2.csv
Prompts e formatações
Este módulo contém todas as funcionalidades relacionadas à criação, formatação e gerenciamento de prompts para modelos de linguagem aplicados a análise de séries temporais.
Tipos de prompts
Estratégias de amostragem
Formatos de série temporal
Tipos de série temporal
- class llm4time.core.formatting.encoders.decoders.TSType(value)[código-fonte]
- NUMERIC = 'NUMERIC'
- TEXTUAL = 'TEXTUAL'
Geração de prompts
Módulo para geração e carregamento de prompts de previsão em séries temporais.
- llm4time.core.prompt.load_prompt(path: str, **kwargs) str [código-fonte]
Carrega um template de prompt de um arquivo e realiza substituições de variáveis.
Lê o conteúdo do arquivo especificado por path e formata a string com os argumentos fornecidos em kwargs. É útil para reutilizar prompts de previsão de séries temporais com placeholders dinâmicos.
- Parâmetros:
path (str) – Caminho para o arquivo de texto contendo o template do prompt.
**kwargs – Argumentos para substituição de placeholders no template.
- Retorna:
Conteúdo do arquivo formatado com os argumentos fornecidos.
- Tipo de retorno:
str
- Levanta:
FileNotFoundError – Se o arquivo não for encontrado.
IOError – Se houver erro ao ler o arquivo.
KeyError – Se algum placeholder no template não tiver correspondência em kwargs.
Exemplos
>>> load_prompt("templates/zero_shot.txt", train_data="...", periods=7)
- llm4time.core.prompt.generate(train: list[tuple], periods: int, prompt_type: PromptType, ts_format: TSFormat, ts_type: TSType, sampling: Sampling = None, num_examples: int = 0, template: str = None, **kwargs) str [código-fonte]
Gera um prompt de previsão de séries temporais de acordo com o tipo especificado.
A função prepara os dados de treino no formato e tipo desejados, constrói exemplos de acordo com a estratégia de amostragem especificada e insere essas informações em diferentes templates.
- Parâmetros:
train (list[tuple]) – Série temporal de treino no formato [(date, value), …].
periods (int) – Número de períodos a serem previstos.
prompt_type (PromptType) – Tipo de prompt a ser gerado: - ZERO_SHOT: Sem exemplos. - FEW_SHOT: Com exemplos de previsões passadas. - COT: Com raciocínio passo a passo (Chain of Thought). - COT_FEW: Combinação de exemplos e raciocínio passo a passo. - CUSTOM: Se desejar utilizar um prompt customizado.
ts_format (TSFormat) – Formato de serialização da série temporal (ex.: CSV, JSON, Markdown).
ts_type (TSType) – Tipo de codificação dos valores (ex.: NUMERIC, TEXTUAL).
sampling (Sampling, opcional) – Estratégia de amostragem dos dados de exemplo. Padrão: Sampling.FRONTEND.
num_examples (int, opcional) – Quantidade de exemplos a serem gerados. Padrão: 0.
template (str, opcional) – Prompt customizado se prompt_type for CUSTOM. Padrão: None.
**kwargs – Se desejar inserir chaves adicionais ao prompt ou substituir as chaves padrão.
- Retorna:
Prompt formatado pronto para ser usado em um modelo de linguagem.
- Tipo de retorno:
str
- Levanta:
ValueError –
Se prompt_type for inválido. - Se prompt_type for CUSTOM e template for None. - Se num_examples for maior que 0 e não houver períodos suficientes para os exemplos solicitados.
Exemplos
>>> generate( ... train=[("2025-01-01", 100), ("2025-01-02", 200)], ... periods=7, ... prompt_type=PromptType.ZERO_SHOT, ... ts_format=TSFormat.CSV, ... ts_type=TSType.NUMERIC ... )
Formatação de dados
Módulo para formatação e parsing de séries temporais.
- llm4time.core.formatter.format(data: list, ts_format: TSFormat, ts_type: TSType) str [código-fonte]
Formata uma série temporal de acordo com o tipo e o formato especificados.
- Parâmetros:
- Retorna:
Série temporal formatada como string de acordo com ts_format e ts_type.
- Tipo de retorno:
str
- Levanta:
ValueError – Se ts_format ou ts_type forem desconhecidos.
Exemplos
>>> format([("2025-01-01", 100), ("2025-01-02", 200)], ... ts_format=TSFormat.CSV, ts_type=TSType.NUMERIC) 'Date,Value\n2025-01-01,100\n2025-01-02,200'
>>> format([("2025-01-01", 100), ("2025-01-02", 200)], ... ts_format=TSFormat.CSV, ts_type=TSType.TEXTUAL) 'Date,Value\n2025-01-01,1 0 0\n2025-01-02,2 0 0'
- llm4time.core.formatter.parse(data: str, ts_format: TSFormat, ts_type: TSType) list [código-fonte]
Converte uma string representando uma série temporal em uma lista de valores ou tuplas (date, value), de acordo com o formato e o tipo especificados.
Caso ocorra falha durante o parsing, a função tenta uma alternativa de fallback, assumindo formato ARRAY e tipo NUMERIC.
- Parâmetros:
- Retorna:
Série temporal como lista de valores ou tuplas (date, value).
- Tipo de retorno:
list
- Levanta:
ValueError – Se ts_format ou ts_type forem desconhecidos.
Exemplos
>>> parse("Date,Value\n2025-01-01,100\n2025-01-02,200", ... ts_format=TSFormat.CSV, ts_type=TSType.NUMERIC) [('2025-01-01', 100), ('2025-01-02', 200)]
>>> parse("Date,Value\n2025-01-01,1 0 0\n2025-01-02,2 0 0", ... ts_format=TSFormat.CSV, ts_type=TSType.TEXTUAL) [('2025-01-01', 100), ('2025-01-02', 200)]
Previsão com LLMs
Este módulo contém todas as funcionalidades relacionadas à utilização de modelos de linguagem de grande escala (LLMs) para previsão e análise de séries temporais, incluindo diferentes provedores de API e configurações de modelos.
Modelos
- class llm4time.core.models.Provider(value)[código-fonte]
- LM_STUDIO = 'LM_STUDIO'
- OPENAI = 'OPENAI'
- AZURE = 'AZURE'
- classmethod enum(name: str)[código-fonte]
Módulo para integração com modelos OpenAI em séries temporais.
- class llm4time.core.models.openai.OpenAI(model: str, api_key: str, base_url: str)[código-fonte]
Classe para integração com modelos OpenAI para previsão de séries temporais.
- model
Nome do modelo OpenAI.
- Type:
str
- api_key
Chave de API para autenticação.
- Type:
str
- base_url
URL base do endpoint OpenAI.
- Type:
str
- __init__(model: str, api_key: str, base_url: str) None [código-fonte]
Inicializa a classe OpenAI com configurações de conexão.
- Parâmetros:
model (str) – Nome do modelo OpenAI.
api_key (str) – Chave de API para autenticação.
base_url (str) – URL base do endpoint OpenAI.
- predict(content: str, temperature: float = 0.7, **kwargs) tuple[str, int, int, float] [código-fonte]
Envia uma requisição de chat para um modelo OpenAI e retorna a resposta com métricas.
- Parâmetros:
content (str) – Conteúdo da mensagem do usuário a ser enviada.
temperature (float, optional) – Grau de aleatoriedade da resposta. Padrão: 0.7.
**kwargs – Argumentos adicionais passados para client.chat.completions.create.
- Retorna:
- Tupla contendo:
response: Resposta do modelo.
prompt_tokens: Número de tokens usados no prompt.
response_tokens: Número de tokens usados na resposta.
response_time: Tempo total da requisição em segundos.
- Tipo de retorno:
tuple[str, int, int, float]
Exemplos
>>> response, prompt_tokens, response_tokens, time_sec = model.predict( ... content="Série temporal: [199.99, 190.10, 180.01, 178.45, 160.33]. Preveja próximos 3 valores.", ... temperature=0.5 ... ) >>> print(response) '[149.25, 140.10, 128.50]'
Módulo para integração com modelos Azure OpenAI em séries temporais.
- class llm4time.core.models.azure.AzureOpenAI(model: str, api_key: str, azure_endpoint: str, api_version: str)[código-fonte]
Classe para integração com modelos Azure OpenAI para previsão de séries temporais.
- model
Nome do modelo Azure OpenAI.
- Type:
str
- api_key
Chave de API para autenticação.
- Type:
str
- azure_endpoint
URL do endpoint Azure OpenAI.
- Type:
str
- api_version
Versão da API Azure OpenAI.
- Type:
str
- __init__(model: str, api_key: str, azure_endpoint: str, api_version: str) None [código-fonte]
Inicializa a classe AzureOpenAI com configurações de conexão.
- Parâmetros:
model (str) – Nome do modelo Azure OpenAI.
api_key (str) – Chave de API para autenticação.
azure_endpoint (str) – URL do endpoint Azure OpenAI.
api_version (str) – Versão da API Azure OpenAI.
- predict(content: str, temperature: float = 0.7, **kwargs) tuple[str, int, int, float] [código-fonte]
Envia uma requisição de chat para um modelo OpenAI Azure e retorna a resposta com métricas.
- Parâmetros:
content (str) – Conteúdo da mensagem do usuário a ser enviada.
temperature (float, optional) – Grau de aleatoriedade da resposta. Padrão: 0.7.
**kwargs – Argumentos adicionais passados para client.chat.completions.create.
- Retorna:
- Tupla contendo:
response: Resposta do modelo.
prompt_tokens: Número de tokens usados no prompt.
response_tokens: Número de tokens usados na resposta.
response_time: Tempo total da requisição em segundos.
- Tipo de retorno:
tuple[str, int, int, float]
Exemplos
>>> response, prompt_tokens, response_tokens, time_sec = model.predict( ... content="Série temporal: [199.99, 190.10, 180.01, 178.45, 160.33]. Preveja próximos 3 valores.", ... temperature=0.5 ... ) >>> print(response) '[149.25, 140.10, 128.50]'
Módulo para integração com modelos LM Studio em séries temporais.
- class llm4time.core.models.lmstudio.LMStudio(model: str)[código-fonte]
Classe para integração com modelos LM Studio para previsão de séries temporais.
- model
Nome ou caminho do modelo LM Studio.
- Type:
str
- __init__(model: str) None [código-fonte]
Inicializa a classe LMStudio com o modelo especificado.
- Parâmetros:
model (str) – Nome ou caminho do modelo LM Studio.
- predict(content: str, temperature: float = 0.7, **kwargs) tuple[str, int, int, float] [código-fonte]
Envia uma requisição para o modelo LM Studio e retorna a resposta com métricas.
- Parâmetros:
content (str) – Conteúdo da mensagem do usuário a ser enviada.
temperature (float, optional) – Grau de aleatoriedade da resposta. Padrão: 0.7.
**kwargs – Argumentos adicionais passados para client.respond.
- Retorna:
- Tupla contendo:
response: Resposta do modelo.
prompt_tokens: Número de tokens usados no prompt.
response_tokens: Número de tokens usados na resposta.
response_time: Tempo total da requisição em segundos.
- Tipo de retorno:
tuple[str, int, int, float]
Exemplos
>>> response, prompt_tokens, response_tokens, time_sec = model.predict( ... content="Série temporal: [199.99, 190.10, 180.01, 178.45, 160.33]. Preveja próximos 3 valores.", ... temperature=0.5 ... ) >>> print(response) '[149.25, 140.10, 128.50]'
Métricas de avaliação
Este módulo contém todas as funcionalidades relacionadas à avaliação de performance de modelos de previsão, incluindo métricas de erro, análises estatísticas e indicadores específicos para séries temporais.
Métricas de erro
Módulo para avaliação de modelos de séries temporais.
Este módulo fornece uma classe para calcular métricas de performance comumente utilizadas na avaliação de previsões de séries temporais.
- class llm4time.core.evaluate.metrics.Metrics(y_val: list[float], y_pred: list[float])[código-fonte]
Classe para calcular métricas de avaliação de previsões de séries temporais.
Esta classe calcula diversas métricas de erro entre valores observados e preditos, removendo automaticamente valores NaN antes dos cálculos para garantir robustez.
- Parâmetros:
y_val (list[float]) – Lista de valores observados (reais) da série temporal.
y_pred (list[float]) – Lista de valores preditos pelo modelo.
- y_val
Array numpy com valores observados sem NaN.
- Type:
np.array
- y_pred
Array numpy com valores preditos sem NaN.
- Type:
np.array
Exemplos
>>> metrics = Metrics([10, 20, 30], [12, 18, 32]) >>> print(metrics.mae) 2.0 >>> print(metrics.rmse) 2.31 >>> print(metrics.smape) 6.67 >>> print(Metrics.sem([2, -2, 2])) 1.1547
- __init__(y_val: list[float], y_pred: list[float]) None [código-fonte]
- property smape: float
SMAPE — Erro Percentual Absoluto Médio Simétrico.
Retorna a métrica em percentual, útil para avaliar a acurácia de previsões em diferentes escalas.
- Retorna:
Valor do SMAPE em percentual (duas casas decimais).
- Tipo de retorno:
float
- property mae: float
MAE — Erro Absoluto Médio.
Mede a média dos erros absolutos entre valores observados e preditos.
- Retorna:
Valor do MAE (duas casas decimais).
- Tipo de retorno:
float
- property rmse: float
RMSE — Raiz do Erro Quadrático Médio.
Penaliza mais fortemente erros grandes, sendo útil quando grandes desvios são indesejáveis.
- Retorna:
Valor do RMSE (duas casas decimais).
- Tipo de retorno:
float
- static sem(errors: list[float]) float [código-fonte]
SEM — Erro Padrão da Média.
Mede a variabilidade da média dos erros, útil para estimar intervalos de confiança.
- Parâmetros:
errors (list[float]) – Lista de erros individuais.
- Retorna:
Valor do SEM (quatro casas decimais).
- Tipo de retorno:
float
Estatísticas
Módulo para análise estatística de séries temporais.
Este módulo fornece uma classe para calcular estatísticas descritivas e análises avançadas de séries temporais, incluindo decomposição de tendência e sazonalidade usando STL.
- class llm4time.core.evaluate.statistics.Statistics(data: list[float])[código-fonte]
Classe para calcular estatísticas descritivas de séries temporais.
Esta classe fornece propriedades para calcular medidas estatísticas robustas de séries temporais, tratando automaticamente valores ausentes e fornecendo análises de tendência e sazonalidade.
- Parâmetros:
data (list[float]) – Lista de valores numéricos da série temporal.
- data
Array numpy com todos os dados originais.
- Type:
np.array
- valid_data
Array numpy apenas com dados válidos (sem NaN).
- Type:
np.array
Exemplos
>>> data = [10.5, 12.0, np.nan, 15.2, 13.8, 11.1] >>> stats = Statistics(data) >>> stats.mean 12.52 >>> stats.missing_count 1
- __init__(data: list[float]) None [código-fonte]
Inicializa a classe Statistics com dados da série temporal.
- Parâmetros:
data (list[float]) – Lista de valores numéricos.
- property mean: float
Calcula a média dos valores válidos.
- Retorna:
Média arredondada para 4 casas decimais.
- Tipo de retorno:
float
- property median: float
Calcula a mediana dos valores válidos.
- Retorna:
Mediana arredondada para 4 casas decimais.
- Tipo de retorno:
float
- property first_quartile: float
Calcula o primeiro quartil (percentil 25) dos valores válidos.
- Retorna:
Primeiro quartil arredondado para 4 casas decimais.
- Tipo de retorno:
float
- property third_quartile: float
Calcula o terceiro quartil (percentil 75) dos valores válidos.
- Retorna:
Terceiro quartil arredondado para 4 casas decimais.
- Tipo de retorno:
float
- property std: float
Calcula o desvio padrão amostral dos valores válidos.
Usa ddof=1 para calcular o desvio padrão amostral (divisão por n-1).
- Retorna:
Desvio padrão arredondado para 4 casas decimais.
- Tipo de retorno:
float
- property min: float
Encontra o valor mínimo dos valores válidos.
- Retorna:
Valor mínimo arredondado para 4 casas decimais.
- Tipo de retorno:
float
- property max: float
Encontra o valor máximo dos valores válidos.
- Retorna:
Valor máximo arredondado para 4 casas decimais.
- Tipo de retorno:
float
- property missing_count: int
Conta o número de valores ausentes (NaN) nos dados.
- Retorna:
Quantidade de valores NaN.
- Tipo de retorno:
int
- property missing_percentage: float
Calcula a porcentagem de valores ausentes nos dados.
- Retorna:
Percentual de valores NaN arredondado para 4 casas decimais.
- Tipo de retorno:
float
- static trend_seasonality(df: DataFrame, period: int = None, freq: str = None) tuple[Series, Series, Series, float, float] [código-fonte]
Decompõe uma série temporal em tendência, sazonalidade e resíduo usando STL.
Aplica decomposição STL (Seasonal and Trend decomposition using Loess) e calcula a força da tendência e da sazonalidade baseada na variância dos componentes.
- Parâmetros:
df (pd.DataFrame) – DataFrame contendo colunas “date” e “value”.
period (int, optional) – Período sazonal para STL. Se None, STL infere automaticamente. Defaults to None.
freq (str, optional) – Frequência da série temporal (ex.: “D”, “M”, “Q”). Se fornecida, será aplicada via asfreq. Defaults to None.
- Retorna:
- Tupla contendo:
trend: Componente de tendência estimada
seasonal: Componente sazonal estimado
resid: Resíduo após remoção de tendência e sazonalidade
trend_strength: Força da tendência (0 = fraca, 1 = forte)
seasonality_strength: Força da sazonalidade (0 = fraca, 1 = forte)
- Tipo de retorno:
tuple[pd.Series, pd.Series, pd.Series, float, float]
Exemplos
>>> data = pd.DataFrame({ ... "date": pd.date_range("2020-01-01", periods=24, freq="M"), ... "value": [i + (i % 12) * 2 for i in range(24)] ... }) >>> trend, seasonal, resid, t_str, s_str = Statistics.trend_seasonality(data, period=12) >>> # Retorna componentes decompostos e forças calculadas
Avaliação de performance de previsões de séries temporais
- llm4time.core.metrics.evaluate(y_val: list[float], y_pred: list[float]) tuple[Metrics, Statistics, Statistics] [código-fonte]
Avalia previsões de séries temporais e calcula estatísticas descritivas.
Esta função cria instâncias das classes
Metrics
eStatistics
para fornecer uma análise completa das previsões de séries temporais, incluindo métricas de erro e estatísticas descritivas tanto dos valores observados quanto dos valores preditos.- Parâmetros:
y_val (list[float]) – Lista de valores observados (reais).
y_pred (list[float]) – Lista de valores preditos pelo modelo.
- Retorna:
metrics (Metrics): Instância contendo métricas de erro.
stats_val (Statistics): Instância com estatísticas da série observada.
stats_pred (Statistics): Instância com estatísticas da série predita.
- Tipo de retorno:
tuple[Metrics, Statistics, Statistics]
Exemplos
>>> y_val = [10, 20, 30, 40] >>> y_pred = [12, 18, 29, 41] >>> metrics, val_stats, pred_stats = evaluate(y_val, y_pred) >>> print(metrics.mae, metrics.rmse, metrics.smape) 1.5 1.58 5.0 >>> print(val_stats.mean, pred_stats.mean) 25.0 25.0 >>> print(val_stats.missing_count, pred_stats.missing_count) 0 0
Visualização
Este módulo contém todas as funcionalidades relacionadas à criação de visualizações e gráficos para análise de séries temporais.
Gráficos interativos
Módulo para criação de gráficos.
Este módulo fornece funções especializadas para visualização de dados de séries temporais, incluindo plotagem de dados históricos, previsões, estatísticas comparativas e decomposição de séries temporais.
- llm4time.visualization.plots.plot_time_series(title: str, ts: DataFrame, **kwargs)[código-fonte]
Cria um gráfico de linha para uma série temporal com datas.
- Parâmetros:
title (str) – Título do gráfico.
ts (pd.DataFrame) – DataFrame contendo colunas ‘date’ e ‘value’ com os dados da série temporal.
**kwargs – Argumentos adicionais passados para fig.update_layout().
- Retorna:
Objeto Figure do Plotly com o gráfico da série temporal.
- Tipo de retorno:
go.Figure
Exemplos
>>> ts = pd.DataFrame({ ... 'date': pd.date_range('2020-01-01', periods=100), ... 'value': np.random.randn(100).cumsum() ... }) >>> fig = plot_time_series("Vendas Mensais", ts) >>> fig.show()
- llm4time.visualization.plots.plot_period_series(title: str, values: list, **kwargs)[código-fonte]
Cria um gráfico de linha para uma série temporal indexada por períodos.
- Parâmetros:
title (str) – Título do gráfico.
values (list) – Lista de valores numéricos da série temporal.
**kwargs – Argumentos adicionais passados para fig.update_layout().
- Retorna:
Objeto Figure do Plotly com o gráfico da série temporal.
- Tipo de retorno:
go.Figure
Exemplos
>>> values = [10, 15, 12, 18, 20, 16, 14] >>> fig = plot_period_series("Série por Períodos", values) >>> fig.show()
- llm4time.visualization.plots.plot_forecast(title: str, y_val: list, y_pred: list, **kwargs)[código-fonte]
Cria um gráfico comparativo entre valores reais e previstos.
Plota duas linhas sobrepostas para comparar visualmente os valores reais com as previsões do modelo.
- Parâmetros:
title (str) – Título do gráfico.
y_val (list) – Lista com valores reais da série temporal.
y_pred (list) – Lista com valores previstos pelo modelo.
**kwargs – Argumentos adicionais passados para fig.update_layout().
- Retorna:
Objeto Figure do Plotly com gráfico de comparação.
- Tipo de retorno:
go.Figure
Exemplos
>>> y_real = [10, 12, 15, 18, 20] >>> y_previsto = [9, 13, 14, 19, 21] >>> fig = plot_forecast("Previsão vs Reality", y_real, y_previsto) >>> fig.show()
- llm4time.visualization.plots.plot_forecast_statistics(title: str, y_val: list, y_pred: list, **kwargs)[código-fonte]
Cria um gráfico de barras comparando estatísticas descritivas.
Compara métricas estatísticas (média, mediana, desvio padrão, máximo, mínimo) entre valores reais e previstos usando gráfico de barras agrupadas.
- Parâmetros:
title (str) – Título do gráfico.
y_val (list) – Lista com valores reais da série temporal.
y_pred (list) – Lista com valores previstos pelo modelo.
**kwargs – Argumentos adicionais passados para fig.update_layout().
- Retorna:
Objeto Figure do Plotly com gráfico de barras comparativo.
- Tipo de retorno:
go.Figure
Exemplos
>>> y_real = [10, 12, 15, 18, 20, 8, 25] >>> y_previsto = [9, 13, 14, 19, 21, 7, 24] >>> fig = plot_forecast_statistics("Estatísticas Comparativas", y_real, y_previsto) >>> fig.show()
- llm4time.visualization.plots.plot_decomposition(title: str, trend: Series, seasonal: Series, resid: Series, **kwargs)[código-fonte]
Cria um gráfico de decomposição de série temporal em subplots.
Exibe a decomposição da série temporal em três componentes: tendência, sazonalidade e resíduos, cada um em um subplot separado.
- Parâmetros:
title (str) – Título principal do gráfico.
trend (pd.Series) – Série com o componente de tendência.
seasonal (pd.Series) – Série com o componente sazonal.
resid (pd.Series) – Série com os resíduos.
**kwargs – Argumentos adicionais passados para fig.update_layout().
- Retorna:
Objeto Figure do Plotly com subplots da decomposição.
- Tipo de retorno:
go.Figure
Exemplos
>>> # Assumindo decomposição já realizada >>> fig = plot_decomposition( ... "Decomposição da Série", ... trend_series, ... seasonal_series, ... residual_series ... ) >>> fig.show()