TimeSeriesCatalog.DetectSeasonality Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Nei dati delle serie temporali, la stagionalità (o periodicità) è la presenza di variazioni che si verificano a intervalli regolari specifici, ad esempio settimanali, mensili o trimestrali.
Questo metodo rileva questo intervallo prevedibile (o periodo) adottando tecniche di analisi più quattro. Supponendo che i valori di input abbiano lo stesso intervallo di tempo (ad esempio, i dati del sensore raccolti ogni secondo ordinati in base ai timestamp), questo metodo accetta un elenco di dati di serie temporali e restituisce il periodo regolare per i dati stagionali di input, se è possibile trovare una fluttuazione o un modello prevedibile che si ripeta in questo periodo in tutti i valori di input.
Restituisce -1 se non viene trovato alcun criterio di questo tipo, ovvero i valori di input non seguono una fluttuazione stagionale.
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
Parametri
- catalog
- AnomalyDetectionCatalog
Catalogo di rilevamento della stagionalità.
- seasonalityWindowSize
- Int32
Limite superiore sul numero di valori da considerare nei valori di input. Se impostato su -1, usare l'intero input per adattare il modello; se impostato su un numero intero positivo, verrà considerato solo il numero di valori windowSize della prima finestra. Il valore predefinito è -1.
- randomnessThreshold
- Double
Soglia di casualità che specifica in che modo i valori di input seguono un modello prevedibile ricorrente come dati stagionali. L'intervallo è compreso tra [0, 1]. Per impostazione predefinita, è impostato su 0,95.
Restituisce
L'intervallo regolare per l'input come dati stagionali, altrimenti restituisce -1.
Esempio
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;
}
}
}
}