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
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.
İlgili içerik
- normal ifadeleri
- series_periods_validate()