Share via


TimeSeriesCatalog.DetectSeasonality Metoda

Definice

V datech časových řad je sezónnost (nebo periodicita) přítomnost variací, ke kterým dochází v určitých pravidelných intervalech, například týdně, měsíčně nebo čtvrtletně.

Tato metoda detekuje tento předvídatelný interval (nebo období) přijetím technik fourierové analýzy. Za předpokladu, že vstupní hodnoty mají stejný časový interval (např. data ze snímačů shromážděná při každém druhém seřazení podle časových razítek), tato metoda vezme seznam dat časových řad a vrátí pravidelné období pro vstupní sezónní data, pokud je možné zjistit předvídatelné kolísání nebo vzor, které se v tomto období opakuje nebo opakuje v průběhu tohoto období ve vstupních hodnotách.

Vrátí hodnotu -1, pokud se nenajde žádný takový vzor, tj. vstupní hodnoty nesledují sezónní kolísání.

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 zjišťování sezónnosti.

input
IDataView

Input DataView.Data is an instance of IDataView.

inputColumnName
String

Název sloupce, který se má zpracovat. Data sloupce musí být Double.

seasonalityWindowSize
Int32

Horní mez počtu hodnot, které se mají brát v úvahu ve vstupních hodnotách. Při nastavení na hodnotu -1 použijte celý vstup k přizpůsobení modelu; pokud je nastaveno na kladné celé číslo, bude považováno pouze za první počet hodnot. Výchozí hodnota je -1.

randomnessThreshold
Double

Prahová hodnota náhodnosti , která určuje, jak s jistotou se vstupní hodnoty řídí předvídatelným vzorem, který se opakuje jako sezónní data. Rozsah je mezi [0, 1]. Ve výchozím nastavení je nastavená na hodnotu 0,95.

Návraty

Pravidelný interval vstupu jako sezónních dat, jinak vrátí hodnotu -1.

Příklady

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

    }
}

Platí pro