Udostępnij za pośrednictwem


TimeSeriesCatalog.DetectSeasonality Metoda

Definicja

W danych szeregów czasowych sezonowość (lub okresowość) to obecność odmian występujących w określonych regularnych odstępach czasu, takich jak cotygodniowe, miesięczne lub kwartalne.

Ta metoda wykrywa ten przewidywalny interwał (lub okres) przy użyciu technik analizy czteroletniej. Przy założeniu, że wartości wejściowe mają ten sam interwał czasu (np. dane czujnika zbierane co sekundę uporządkowane według sygnatur czasowych), ta metoda przyjmuje listę danych szeregów czasowych i zwraca regularny okres dla danych sezonowych danych wejściowych, jeśli można znaleźć przewidywalne wahania lub wzorzec, które powtarzają się lub powtarzają w tym okresie przez całe wartości wejściowe.

Zwraca wartość -1, jeśli nie znaleziono takiego wzorca, czyli wartości wejściowe nie są zgodne z sezonowymi wahaniami.

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

Parametry

catalog
AnomalyDetectionCatalog

Katalog wykryć sezonowość.

input
IDataView

Input DataView.Dane są wystąpieniem IDataViewklasy .

inputColumnName
String

Nazwa kolumny do przetworzenia. Dane kolumny muszą mieć wartość Double.

seasonalityWindowSize
Int32

Górna granica liczby wartości, które mają być brane pod uwagę w wartościach wejściowych. W przypadku ustawienia wartości -1 użyj wszystkich danych wejściowych, aby dopasować model; po ustawieniu wartości na dodatnią liczbę całkowitą, uwzględniana będzie tylko pierwsza liczba wartości windowSize. Wartość domyślna to -1.

randomnessThreshold
Double

Próg losowości określający, jak pewnie wartości wejściowe są zgodne z przewidywalnym wzorcem cyklicznym jako dane sezonowe. Zakres wynosi od [0, 1]. Domyślnie jest ona ustawiona na 0,95.

Zwraca

Regularny interwał danych wejściowych jako danych sezonowych, w przeciwnym razie zwraca wartość -1.

Przykłady

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;
            }
        }

    }
}

Dotyczy