Compartir a través de


TimeSeriesCatalog.DetectSeasonality Método

Definición

En los datos de series temporales, la estacionalidad (o la periodicidad) es la presencia de variaciones que se producen a intervalos regulares específicos, como semanal, mensual o trimestral.

Este método detecta este intervalo predecible (o período) mediante la adopción de técnicas de análisis de fourier. Suponiendo que los valores de entrada tienen el mismo intervalo de tiempo (por ejemplo, los datos del sensor recopilados en cada segundo ordenados por marcas de tiempo), este método toma una lista de datos de serie temporal y devuelve el período regular para los datos estacionales de entrada, si se puede encontrar una fluctuación o patrón predecible que se repite o repite durante este período a lo largo de los valores de entrada.

Devuelve -1 si no se encuentra este patrón, es decir, los valores de entrada no siguen una fluctuación estacional.

public static int DetectSeasonality (this Microsoft.ML.AnomalyDetectionCatalog catalog, Microsoft.ML.IDataView input, string inputColumnName, int seasonalityWindowSize = -1, double randomnessThreshold = 0.95);
static member DetectSeasonality : Microsoft.ML.AnomalyDetectionCatalog * Microsoft.ML.IDataView * string * int * double -> int
<Extension()>
Public Function DetectSeasonality (catalog As AnomalyDetectionCatalog, input As IDataView, inputColumnName As String, Optional seasonalityWindowSize As Integer = -1, Optional randomnessThreshold As Double = 0.95) As Integer

Parámetros

catalog
AnomalyDetectionCatalog

Catálogo de detección de estacionalidad.

input
IDataView

Input DataView.Los datos son una instancia de IDataView.

inputColumnName
String

Nombre de la columna que se va a procesar. Los datos de columna deben ser Double.

seasonalityWindowSize
Int32

Límite superior en el número de valores que se deben tener en cuenta en los valores de entrada. Cuando se establece en -1, use toda la entrada para ajustarse al modelo; cuando se establece en un entero positivo, solo se considerará el primer número de valoresSize de windowSize. El valor predeterminado es -1.

randomnessThreshold
Double

Umbral de aleatoriedad que especifica la confianza de los valores de entrada que siguen un patrón predecible periódico como datos estacionales. El intervalo está comprendido entre [0, 1]. De forma predeterminada, se establece como 0,95.

Devoluciones

Intervalo regular de la entrada como datos estacionales; de lo contrario, devuelve -1.

Ejemplos

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.ML;
using Microsoft.ML.TimeSeries;

namespace Samples.Dynamic
{
    public static class DetectSeasonality
    {
        public static void Example()
        {
            /* Create a new ML context, for ML.NET operations. It can be used for
             exception tracking and logging, as well as the source of randomness.*/
            var mlContext = new MLContext();

            // Create a seasonal data as input: y = sin(2 * Pi + x)
            var seasonalData = Enumerable.Range(0, 100).Select(x => new TimeSeriesData(Math.Sin(2 * Math.PI + x)));

            // Load the input data as a DataView.
            var dataView = mlContext.Data.LoadFromEnumerable(seasonalData);

            /* Two option parameters:
             * seasonalityWindowSize: Default value is -1. When set to -1, use the whole input to fit model; 
             * when set to a positive integer, only the first windowSize number of values will be considered.
             * randomnessThreshold: Randomness threshold that specifies how confidence the input values follows 
             * a predictable pattern recurring as seasonal data. By default, it is set as 0.99. 
             * The higher the threshold is set, the more strict recurring pattern the 
             * input values should follow to be determined as seasonal data.
             */
            int period = mlContext.AnomalyDetection.DetectSeasonality(
                dataView,
                nameof(TimeSeriesData.Value),
                seasonalityWindowSize: 40);

            // Print the Seasonality Period result.
            Console.WriteLine($"Seasonality Period: #{period}");
        }

        private class TimeSeriesData
        {
            public double Value;

            public TimeSeriesData(double value)
            {
                Value = value;
            }
        }

    }
}

Se aplica a