-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
1,101 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,40 @@ | ||
# Time Series Analysis with Python Prophet | ||
Bu repo youtube kanalimda anlattigim Prophet ile Zaman Serisi Analizi kodlarini ve kaynaklarini icermektedir. | ||
|
||
Prophet kütüphanesi, tek değişkenli zaman serisi veri kümeleri için tahminler yapmak için tasarlanmış açık kaynaklı bir kütüphanedir. Kullanımı kolaydır ve varsayılan olarak trendler ve mevsimsel yapıya sahip veriler için tahminler yapmak amacıyla model için iyi bir hiperparametre kümesini otomatik olarak bulmak üzere tasarlanmıştır. | ||
|
||
## Kurulumlar | ||
|
||
Bu projeyi gerceklestirmek icin asagidaki kutuphanelere ihtiyaciniz vardir: | ||
|
||
- fbprophet | ||
- pandas | ||
- matplotlib | ||
- plotly (Zorunlu degil fakat prophet bazi durumlarda ihtiyaci olacak) | ||
- scikit-learn | ||
|
||
Gerekli kutuphane kurulumlarini asagidaki kod satirini calistirarak tamamlayabilirsiniz. | ||
|
||
`pip install fbprophet pandas matplotlib plotly scikit-learn` | ||
|
||
## Dataset | ||
|
||
[Monthly Car Sales Dataset](https://raw.githubusercontent.com/jbrownlee/Datasets/master/monthly-car-sales.csv) | ||
|
||
Ayni zamanda [bu linkten](https://github.com/jbrownlee/Datasets/) onlarca farkli datasete ulasabilirsiniz | ||
|
||
## Kaynak | ||
|
||
Machine Learning Mastery Facebook Prophet ile basit zaman serisi egitimi. [Kaynak](https://machinelearningmastery.com/time-series-forecasting-with-prophet-in-python/) | ||
|
||
- https://github.com/kedarvkunte/End-to-End-Data-Science-Project-Time-Series-Analysis-for-Temperature-Forecasting-using-ARIMA-Model | ||
- https://towardsdatascience.com/an-end-to-end-project-on-time-series-analysis-and-forecasting-with-python-4835e6bf050b | ||
- https://www.machinelearningplus.com/time-series/time-series-analysis-python/ | ||
- https://medium.com/analytics-vidhya/time-series-analysis-a-quick-tour-of-fbprophet-cbbfbffdf9d8 | ||
- https://towardsdatascience.com/a-quick-start-of-time-series-forecasting-with-a-practical-example-using-fb-prophet-31c4447a2274 | ||
- https://machinelearningmastery.com/time-series-forecasting-with-prophet-in-python/ | ||
- https://scribe.rip/analytics-vidhya/facebook-prophet-algorithm-in-time-series-analysis-90da4a7c1b16 | ||
- https://www.youtube.com/watch?v=KvLG1uTC-KU&ab_channel=NicholasRenotte | ||
- https://www.analyticsvidhya.com/blog/2020/10/time-series-forecasting-using-facebook-prophet-library-in-python/ | ||
- https://medium.com/swlh/time-series-analysis-7006ea1c3326 | ||
- https://medium.com/featurepreneur/a-roadmap-for-time-series-analysis-3faf49b2126 | ||
- https://towardsdatascience.com/the-complete-guide-to-time-series-analysis-and-forecasting-70d476bfe775 |
Binary file not shown.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,299 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"id": "75130305-0dd6-4370-94e1-05bd00ccbd4d", | ||
"metadata": {}, | ||
"source": [ | ||
"# Time Series Analysis with Prophet\n", | ||
"\n", | ||
"Prophet kütüphanesi, tek değişkenli zaman serisi veri kümeleri için tahminler yapmak için tasarlanmış açık kaynaklı bir kütüphanedir. Kullanımı kolaydır ve varsayılan olarak trendler ve mevsimsel yapıya sahip veriler için tahminler yapmak amacıyla model için iyi bir hiperparametre kümesini otomatik olarak bulmak üzere tasarlanmıştır.\n", | ||
"\n", | ||
"## Kurulumlar\n", | ||
"\n", | ||
"Bu projeyi gerceklestirmek icin asagidaki kutuphanelere ihtiyaciniz vardir:\n", | ||
"- fbprophet\n", | ||
"- pandas\n", | ||
"- matplotlib\n", | ||
"- plotly (Zorunlu degil fakat prophet bazi durumlarda ihtiyaci olacak)\n", | ||
"- scikit-learn\n", | ||
"\n", | ||
"Gerekli kutuphane kurulumlarini asagidaki kod satirini calistirarak tamamlayabilirsiniz.\n", | ||
"\n", | ||
"`pip install fbprophet pandas matplotlib plotly scikit-learn`\n", | ||
"\n", | ||
"## Dataset\n", | ||
"\n", | ||
"[Monthly Car Sales Dataset](https://raw.githubusercontent.com/jbrownlee/Datasets/master/monthly-car-sales.csv)\n", | ||
"\n", | ||
"Ayni zamanda [bu linkten](https://github.com/jbrownlee/Datasets/) onlarca farkli datasete ulasabilirsiniz\n", | ||
"\n", | ||
"## Kaynak\n", | ||
"Machine Learning Mastery Facebook Prophet ile basit zaman serisi egitimi. [Kaynak](https://machinelearningmastery.com/time-series-forecasting-with-prophet-in-python/)" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "d59101c6-9b34-4d9d-90d6-e5508475ddca", | ||
"metadata": {}, | ||
"source": [ | ||
"# Baslayalim" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "db51733a-72b3-44bc-886b-8f029c61feea", | ||
"metadata": {}, | ||
"source": [ | ||
"Elimizdeki dataseti uc farkli sekilde inceleyecegiz: \n", | ||
"- oncelikle modelin egitildi veri seti ile egiterek modelin genel performansina bakacagiz\n", | ||
"- elimizdeki orneklerle gelecek yil icin bir tahminde bulunacagiz\n", | ||
"- elimizdeki verinin son bir yilini test icin ayirip bu kismi tahmin edip gercek degerler ile karsilastiracagiz" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "fc8c2f6d-29ac-453f-8b9b-18493306c843", | ||
"metadata": {}, | ||
"source": [ | ||
"### Verinin Iceri Aktarilmasi\n", | ||
"\n", | ||
"Aylık araba satışları veri setini kullanacağız.\n", | ||
"\n", | ||
"Hem trend hem de mevsimsellik içeren standart bir tek değişkenli zaman serisi veri setidir. Veri kümesi 108 aylık veriye sahiptir." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "08d293bd-6ea9-4a86-b816-9526c3b55b3d", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "d3394641-886e-4b5f-8319-e567b5e2aef7", | ||
"metadata": {}, | ||
"source": [ | ||
"### Verinin Gorsellestirilmesi\n", | ||
"\n", | ||
"Bir zaman serisini çizmek, aslında bir trend, mevsimsel bir döngü, aykırı değerler ve daha fazlası olup olmadığını görmemize yardımcı olur. Bize veriler için bir fikir verir." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "3e931440-0204-4e56-a1df-dc3b0dc8e1f7", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "e1baf44d-f983-4484-8a60-e7fb0bf7016d", | ||
"metadata": {}, | ||
"source": [ | ||
"Satışların zaman içindeki eğilimini ve satışlarda aylık mevsimsel bir deseni açıkça görebiliriz. Bunlar, tahmin modelinin dikkate almasını beklediğimiz kalıplardır." | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "b011f7c3-71c9-4e70-9d0e-9dab141167e9", | ||
"metadata": {}, | ||
"source": [ | ||
"### Veri Tipi Donusumu" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "a2c74aa0-5f1e-4613-ab9d-056b7f70190e", | ||
"metadata": {}, | ||
"source": [ | ||
"DataFrame belirli biçimi olmalıdır. İlk sütun **ds** adına sahip olmalı ve tarih-saatleri içermelidir. İkinci sütun **y** adına sahip olmalı ve gözlemleri içermelidir." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "865874fc-7a15-4871-a053-9ae3d82774c4", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "11bcaaec-16f9-446e-b17c-dbdaa3c5c01d", | ||
"metadata": {}, | ||
"source": [ | ||
"### Modelin Olusturulmasi" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "4d777700-5fe8-4df5-8c0b-07abe7b9031b", | ||
"metadata": { | ||
"tags": [] | ||
}, | ||
"source": [ | ||
"Prophet'i tahmin için kullanmak için, önce bir Prophet() nesnesi tanımlanır ve yapılandırılır, ardından fit() işlevi çağrılarak ve veriler geçirilerek veri kümesine sığdırılır.\n", | ||
"\n", | ||
"Model hemen hemen her şeyi otomatik olarak çözmek için çalışacaktır." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "0d2ad293-3761-4ade-bcdf-8d8e9acd65e7", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "3f33c27f-9bce-4cd9-8b16-34da89d1338a", | ||
"metadata": {}, | ||
"source": [ | ||
"## Ornek Ici Tahmin Yapmak\n", | ||
"\n", | ||
"Geçmiş veriler üzerinden bir tahmin yapmak faydalı olabilir.\n", | ||
"\n", | ||
"Yani, modeli eğitmek için girdi olarak kullanılan veriler üzerinde bir tahmin yapabiliriz. İdeal olarak, model verileri daha önce görmüştür ve mükemmel bir tahminde bulunur.\n", | ||
"\n", | ||
"Buna örnek içi (eğitim kümesi örneğinde) tahmin yapmak denir ve sonuçların gözden geçirilmesi modelin ne kadar iyi olduğuna dair fikir verebilir. Yani eğitim verilerini ne kadar iyi öğrendiğidir.\n", | ||
"\n", | ||
"predict() işlevi çağrılarak ve tahmin edilecek tüm aralıklar için 'ds' adlı bir sütun ve tarih-saat içeren satırlar içeren bir DataFrame geçirilerek bir tahmin yapılır.\n", | ||
"\n", | ||
"Bu \"tahmin\" DataFrame'i yaratmanın birçok yolu vardır. Bu durumda, bir yıllık tarihler arasında döngü yapacağız, ör. veri kümesindeki son 12 ay ve her ay için bir dize oluşturun. Daha sonra tarih listesini bir DataFrame'e dönüştüreceğiz ve dize değerlerini tarih-saat nesnelerine dönüştüreceğiz." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "9d73f79b-e1ed-46c1-bbc3-cc2036591481", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "27f4b942-2c67-446f-b1c2-d3f8192fbfa2", | ||
"metadata": {}, | ||
"source": [ | ||
"predict() işlevinin sonucu, birçok sütun içeren bir DataFrame'dir. \n", | ||
"\n", | ||
"En önemli sütunlar:\n", | ||
"- tahmin tarih saat **('ds')** \n", | ||
"- tahmin değeri **('yhat')** \n", | ||
"- tahmin edilen değerin üzerinde alt ve üst sınırları **('yhat_lower' ve 'yhat_upper')**\n", | ||
"\n", | ||
"Örneğin, ilk birkaç tahmini şu şekilde yazdırabiliriz:" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "474decdf-4cbb-4e7c-9253-d8c9b7adcc4e", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "72758cdc-d545-4f8b-938f-3d56b998affe", | ||
"metadata": {}, | ||
"source": [ | ||
"### Tahminlerin Cizdirilmesi\n", | ||
"\n", | ||
"Bu, modelde plot() işlevi çağrılarak ve bir sonuç DataFrame'e aktarilarak elde edilebilir. \n", | ||
"\n", | ||
"Asagidaki kod eğitim veri kümesinin bir grafiğini oluşturacak ve tahmin, tahmin tarihleri için üst ve alt sınırlarli gosterecektir." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "a1058885-8803-457d-92d1-711494602adf", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "c39db8b1-6814-4423-aa1b-7b9066b3b14a", | ||
"metadata": {}, | ||
"source": [ | ||
"## Ornek Disi Tahmin Yapmak\n", | ||
"\n", | ||
"Pratikte, eğitim verilerinin ötesinde bir tahmin yapmak için bir tahmin modeli isteriz.\n", | ||
"\n", | ||
"Buna örnek dışı tahmin denir.\n", | ||
"\n", | ||
"Bunu bir örnek içi tahminle aynı şekilde başarabilir ve basitçe farklı bir tahmin dönemi belirleyebiliriz.\n", | ||
"\n", | ||
"Bu durumda, 1969-01'den başlayarak eğitim veri kümesinin sonunun ötesinde bir dönem tahmin etmeyi deneyelim." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "04a08439-3143-476d-8063-81e11e8d694b", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "13854a7e-6952-4f62-8ef1-72a4902889ab", | ||
"metadata": {}, | ||
"source": [ | ||
"## Modeli Manuel Degerlendirmek\n", | ||
"\n", | ||
"Bir tahmin modelinin performansının objektif bir tahminini geliştirmek çok önemlidir.\n", | ||
"\n", | ||
"Bu, son 12 ay gibi bazı verileri modelden uzak tutarak başarılabilir. Ardından, modelin verilerin ilk kısmına uydurulması, tutulan paket kısmı üzerinde tahminler yapmak için kullanılması ve tahminlerdeki ortalama mutlak hata gibi bir hata ölçüsünün hesaplanması. Örneğin, simüle edilmiş bir örneklem dışı tahmin.\n", | ||
"\n", | ||
"Skor, örneklem dışı bir tahmin yaparken modelin ortalama olarak ne kadar iyi performans göstermesini bekleyebileceğimize dair bir tahmin verir.\n", | ||
"\n", | ||
"Bunu , son 12 ayı kaldırılmış eğitim için yeni bir DataFrame oluşturarak örnek verilerle yapabiliriz ." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "df6aadc4-c09f-47ff-8178-9ab25ee1003a", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "c14dd21e-46c2-403d-b875-8f517c2d2e24", | ||
"metadata": {}, | ||
"source": [ | ||
"## Harika!" | ||
] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "Python 3 (ipykernel)", | ||
"language": "python", | ||
"name": "python3" | ||
}, | ||
"language_info": { | ||
"codemirror_mode": { | ||
"name": "ipython", | ||
"version": 3 | ||
}, | ||
"file_extension": ".py", | ||
"mimetype": "text/x-python", | ||
"name": "python", | ||
"nbconvert_exporter": "python", | ||
"pygments_lexer": "ipython3", | ||
"version": "3.9.6" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 5 | ||
} |