Aracılığıyla paylaş


TimeSeriesCatalog.DetectSeasonality Yöntem

Tanım

Zaman serisi verilerinde mevsimsellik (veya dönemsellik), haftalık, aylık veya üç aylık gibi belirli düzenli aralıklarla gerçekleşen varyasyonların varlığıdır.

Bu yöntem, fourier analiz tekniklerini benimseyerek bu öngörülebilir aralığı (veya dönemi) algılar. Giriş değerlerinin aynı zaman aralığına sahip olduğunu varsayarsak (örneğin, zaman damgaları tarafından sıralanan her saniyede toplanan sensör verileri), bu yöntem zaman serisi verilerinin listesini alır ve giriş değerleri boyunca bu dönemde yinelenen veya yinelenen öngörülebilir bir dalgalanma veya desen bulunabiliyorsa, giriş mevsimsel verileri için normal süreyi döndürür.

Böyle bir desen bulunmazsa, yani giriş değerleri mevsimsel bir dalgalanmayı izlemezse -1 döndürür.

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

Parametreler

catalog
AnomalyDetectionCatalog

Mevsimselliği algılama kataloğu.

input
IDataView

Input DataView.Veriler bir örneğidir IDataView.

inputColumnName
String

İşlenen sütunun adı. Sütun verileri olmalıdır Double.

seasonalityWindowSize
Int32

Giriş değerlerinde dikkate alınması gereken değer sayısına ilişkin üst sınır. -1 olarak ayarlandığında, modeli sığdırmak için girişin tamamını kullanın; pozitif bir tamsayıya ayarlandığında, yalnızca ilk windowSize değer sayısı dikkate alınır. Varsayılan değer -1'dir.

randomnessThreshold
Double

Giriş değerlerinin mevsimsel veriler olarak yinelenen tahmin edilebilir bir deseni ne kadar güvenle izlediğini belirten rastgelelik eşiği. Aralık [0, 1] arasındadır. Varsayılan olarak 0,95 olarak ayarlanır.

Döndürülenler

Giriş için mevsimsel veri olarak normal aralık, aksi takdirde -1 döndürür.

Örnekler

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

    }
}

Şunlara uygulanır