Aracılığıyla paylaş


series_periods_detect()

Şunlar için geçerlidir: ✅Microsoft Fabric

Bir zaman serisi içindeki en önemli dönemleri bulur.

series_periods_detect() işlevi günlük, haftalık veya aylık döngüler gibi verilerdeki düzenli desenleri algılamak için kullanışlıdır.

Sözdizimi

series_periods_detect( seri,min_period ,max_period num_periods,)

Söz dizimi kuralları hakkında daha fazla bilgi edinin.

Parametreler

Ad Tür Zorunlu Açıklama
silsile dynamic ✔️ Sayısal değerler dizisi, genellikle make-series veya make_list işleçlerinin elde edilen çıkışıdır.
min_period real ✔️ Aranacak en küçük nokta uzunluğu.
max_period real ✔️ Aranacak en büyük dönem uzunluğu.
num_periods long ✔️ Döndürülecek en fazla dönem sayısı. Bu sayı, çıkış dinamik dizilerinin uzunluğudur.

Önemli

  • Algoritma, en az 4 nokta ve seri uzunluğunun en fazla yarısını içeren dönemleri algılayabilir.
  • min_period biraz aşağıya ayarlayın ve zaman serisinde bulmayı beklediğiniz dönemlerin biraz üzerinde max_period. Örneğin, saatlik toplanmış bir sinyaliniz varsa ve hem günlük hem de haftalık dönemleri (sırasıyla 24 ve 168 saat) arıyorsanız, min_period=0,8*24, max_period=1,2*168 ayarlayabilir ve bu dönemler etrafında %20 kenar boşluğu bırakabilirsiniz.
  • Giriş zaman serisi düzenli olmalıdır. Başka bir ifadeyle, sabit bölmeler halinde toplanır; bu durum, make-series kullanılarak oluşturulmuşsa her zaman böyledir. Aksi takdirde çıkış anlamsızdır.

Döndürülenler

İşlev, iki sütunlu bir tablo döndürür:

  • dönemler: Bulunan dönemleri içeren, puanlarına göre sıralanmış, bölme boyutundaki birimler halinde dinamik bir dizi.
  • scores: 0 ile 1 arasında değerler içeren dinamik bir dizi. Her dizi, bir dönemin nokta dizisindeki ilgili konumundaki önemini ölçer.

Örnek

Aşağıdaki sorgu, bir ay boyunca uygulama trafiğinin anlık görüntüsünü ekler. Trafik miktarı günde iki kez toplanır ve bölme boyutu 12 saattir. Sorgu, verilerdeki deseni açıkça gösteren bir çizgi grafik oluşturur.

print y=dynamic([80, 139, 87, 110, 68, 54, 50, 51, 53, 133, 86, 141, 97, 156, 94, 149, 95, 140, 77, 61, 50, 54, 47, 133, 72, 152, 94, 148, 105, 162, 101, 160, 87, 63, 53, 55, 54, 151, 103, 189, 108, 183, 113, 175, 113, 178, 90, 71, 62, 62, 65, 165, 109, 181, 115, 182, 121, 178, 114, 170])
| project x=range(1, array_length(y), 1), y  
| render linechart

Seri dönemleri.

Yinelenen desenleri tanımlamak için series_periods_detect() işlevini aynı seride çalıştırabilirsiniz. İşlev, belirtilen dönem aralığındaki desenleri arar ve iki değer döndürür. İlk değer, yaklaşık 0,84 puanla 14 nokta uzunluğunda algılanan bir deseni gösterir. Diğer değer, ek desen bulunamadığını gösteren sıfırdır.

print y=dynamic([80, 139, 87, 110, 68, 54, 50, 51, 53, 133, 86, 141, 97, 156, 94, 149, 95, 140, 77, 61, 50, 54, 47, 133, 72, 152, 94, 148, 105, 162, 101, 160, 87, 63, 53, 55, 54, 151, 103, 189, 108, 183, 113, 175, 113, 178, 90, 71, 62, 62, 65, 165, 109, 181, 115, 182, 121, 178, 114, 170])
| project x=range(1, array_length(y), 1), y  
| project series_periods_detect(y, 0.0, 50.0, 2)

Çıktı

series_periods_detect_y_periods series_periods_detect_y_periods_scores
[14, 0] [0.84, 0]

series_periods_detect_y_periods_scores değeri kesilir.

Not

Grafikte günlük bir desen de görünür, ancak örnekleme çok kaba (12h bölme boyutu) olduğundan bu sorgu tarafından döndürülmüyor. Günlük 2 bölmeli dönem, algoritmanın gerektirdiği en düşük 4 nokta nokta boyutunun altındadır.