{"id":37182,"date":"2025-12-28T14:40:52","date_gmt":"2025-12-28T11:40:52","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37182"},"modified":"2025-12-28T14:40:52","modified_gmt":"2025-12-28T11:40:52","slug":"seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/","title":{"rendered":"Seaborn Kdeplot: Kapsaml\u0131 Bir Veri G\u00f6rselle\u015ftirme Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>Seaborn Kdeplot: Kapsaml\u0131 Bir Veri G\u00f6rselle\u015ftirme Rehberi<\/h2>\n<p>Seaborn, Python programlama dili i\u00e7in geli\u015ftirilmi\u015f, Matplotlib tabanl\u0131 bir istatistiksel veri g\u00f6rselle\u015ftirme k\u00fct\u00fcphanesidir. Veri bilimcilerin ve analistlerin karma\u015f\u0131k veri setlerindeki kal\u0131plar\u0131, ili\u015fkileri ve da\u011f\u0131l\u0131mlar\u0131 anlamalar\u0131na yard\u0131mc\u0131 olmak i\u00e7in tasarlanm\u0131\u015ft\u0131r. Seaborn, \u00f6zellikle istatistiksel grafikler olu\u015fturmada y\u00fcksek seviyeli bir aray\u00fcz sunar ve estetik a\u00e7\u0131dan \u00e7ekici, bilgilendirici grafikler olu\u015fturmay\u0131 son derece kolayla\u015ft\u0131r\u0131r. Bu kapsaml\u0131 rehberde, Seaborn&#8217;un en g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131ndan biri olan <code>kdeplot<\/code> fonksiyonunu derinlemesine inceleyece\u011fiz.<\/p>\n<h3>Giri\u015f: Veri Yo\u011funlu\u011funu Ke\u015ffetmek<\/h3>\n<p>Veri setlerindeki da\u011f\u0131l\u0131mlar\u0131 anlamak, veri analizinin temel ad\u0131mlar\u0131ndan biridir. Bir de\u011fi\u015fkenin de\u011ferlerinin nas\u0131l yay\u0131ld\u0131\u011f\u0131n\u0131, hangi aral\u0131klarda yo\u011funla\u015ft\u0131\u011f\u0131n\u0131 veya birden fazla de\u011fi\u015fkenin birlikte nas\u0131l davrand\u0131\u011f\u0131n\u0131 g\u00f6rselle\u015ftirmek, hipotez geli\u015ftirmek ve i\u00e7g\u00f6r\u00fcler elde etmek i\u00e7in kritik \u00f6neme sahiptir. \u0130\u015fte bu noktada <code>kdeplot<\/code> devreye girer.<\/p>\n<h4>Seaborn Nedir?<\/h4>\n<p>Seaborn, Matplotlib&#8217;in \u00fczerine in\u015fa edilmi\u015f bir k\u00fct\u00fcphanedir ve onun sundu\u011fu temel \u00e7izim yeteneklerini istatistiksel grafikler i\u00e7in optimize edilmi\u015f bir dizi fonksiyonla geni\u015fletir. Pandas DataFrame&#8217;leri ile sorunsuz bir \u015fekilde entegre olur ve karma\u015f\u0131k veri g\u00f6rselle\u015ftirme g\u00f6revlerini basitle\u015ftiren y\u00fcksek seviyeli API&#8217;ler sunar. Renk paletleri, stil \u015fablonlar\u0131 ve varsay\u0131lan ayarlar\u0131 sayesinde, minimum kodla profesyonel g\u00f6r\u00fcn\u00fcml\u00fc grafikler olu\u015fturmak m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<h4>\u00c7ekirdek Yo\u011funluk Tahmini (KDE) Nedir?<\/h4>\n<p>\u00c7ekirdek Yo\u011funluk Tahmini (Kernel Density Estimate &#8211; KDE), bir veri setindeki rastgele de\u011fi\u015fkenin olas\u0131l\u0131k yo\u011funluk fonksiyonunu (PDF) parametrik olmayan bir \u015fekilde tahmin etmek i\u00e7in kullan\u0131lan bir y\u00f6ntemdir. Basit\u00e7e ifade etmek gerekirse, bir histogram\u0131n &#8220;p\u00fcr\u00fczs\u00fczle\u015ftirilmi\u015f&#8221; bir versiyonudur. Histogramlar, veriyi belirli aral\u0131klara b\u00f6ler ve her aral\u0131ktaki g\u00f6zlem say\u0131s\u0131n\u0131 g\u00f6sterirken, KDE her bir veri noktas\u0131 etraf\u0131na k\u00fc\u00e7\u00fck bir &#8220;\u00e7ekirdek&#8221; (genellikle Gauss \u00e7ekirde\u011fi) yerle\u015ftirir ve bu \u00e7ekirdeklerin toplam\u0131n\u0131 alarak s\u00fcrekli bir yo\u011funluk e\u011frisi olu\u015fturur. Bu, da\u011f\u0131l\u0131m\u0131n \u015feklini daha net ve s\u00fcrekli bir \u015fekilde g\u00f6rmemizi sa\u011flar, \u00f6zellikle de veri setinde \u00e7ok fazla g\u00f6zlem olmad\u0131\u011f\u0131nda veya histogram\u0131n kutu geni\u015fli\u011fi se\u00e7imine duyarl\u0131 oldu\u011fumuzda.<\/p>\n<h4>Neden Kdeplot Kullanmal\u0131y\u0131z?<\/h4>\n<p><code>kdeplot<\/code>, verinin alt\u0131nda yatan da\u011f\u0131l\u0131m\u0131n \u015feklini, modlar\u0131n\u0131 (zirvelerini), \u00e7arp\u0131kl\u0131\u011f\u0131n\u0131 ve yay\u0131l\u0131m\u0131n\u0131 p\u00fcr\u00fczs\u00fcz bir \u015fekilde g\u00f6rselle\u015ftirmek i\u00e7in idealdir. Histogramlara k\u0131yasla baz\u0131 avantajlar\u0131 vard\u0131r:<\/p>\n<p>*   <strong>P\u00fcr\u00fczs\u00fczl\u00fck:<\/strong> Veri da\u011f\u0131l\u0131m\u0131n\u0131n daha ak\u0131c\u0131 ve s\u00fcrekli bir temsilini sunar, histogramlarda g\u00f6r\u00fclebilen &#8220;basamakl\u0131&#8221; g\u00f6r\u00fcn\u00fcm\u00fc ortadan kald\u0131r\u0131r.<br \/>\n*   <strong>Kutu Geni\u015fli\u011fi Duyarl\u0131l\u0131\u011f\u0131 Olmamas\u0131:<\/strong> Histogramlarda kutu geni\u015fli\u011fi se\u00e7imi grafi\u011fin g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc \u00f6nemli \u00f6l\u00e7\u00fcde etkileyebilir. KDE&#8217;de ise &#8220;bant geni\u015fli\u011fi&#8221; (bandwidth) benzer bir rol oynar ancak genellikle daha robust tahminler sa\u011flar.<br \/>\n*   <strong>Modlar\u0131 ve Yo\u011funluklar\u0131 Daha Net G\u00f6sterme:<\/strong> \u00c7ok modlu (birden fazla zirveli) da\u011f\u0131l\u0131mlar\u0131 veya belirli aral\u0131klardaki yo\u011funluk de\u011fi\u015fimlerini daha belirgin bir \u015fekilde ortaya \u00e7\u0131karabilir.<br \/>\n*   <strong>Kar\u015f\u0131la\u015ft\u0131rma Kolayl\u0131\u011f\u0131:<\/strong> Farkl\u0131 kategorik gruplara ait da\u011f\u0131l\u0131mlar\u0131 ayn\u0131 grafik \u00fczerinde kolayca kar\u015f\u0131la\u015ft\u0131rmaya olanak tan\u0131r.<\/p>\n<h3>Seaborn Kdeplot&#8217;un Temelleri<\/h3>\n<p>\u015eimdi <code>kdeplot<\/code> fonksiyonunun nas\u0131l kullan\u0131laca\u011f\u0131na ve temel parametrelerine bir g\u00f6z atal\u0131m.<\/p>\n<h4>Gerekli K\u00fct\u00fcphanelerin \u0130\u00e7e Aktar\u0131lmas\u0131<\/h4>\n<p>Her \u015feyden \u00f6nce, gerekli k\u00fct\u00fcphaneleri i\u00e7e aktarmam\u0131z gerekiyor:<\/p>\n<pre><code class=\"language-python\">import seaborn as sns\nimport matplotlib.pyplot as plt\nimport pandas as pd\nimport numpy as np<\/code><\/pre>\n<h4>Tek De\u011fi\u015fkenli (1D) Kdeplot<\/h4>\n<p>En temel kullan\u0131m \u015fekli, tek bir say\u0131sal de\u011fi\u015fkenin da\u011f\u0131l\u0131m\u0131n\u0131 g\u00f6rselle\u015ftirmektir. Bunun i\u00e7in, bir Pandas Series veya DataFrame s\u00fctunu sa\u011flayabiliriz.<\/p>\n<pre><code class=\"language-python\"># \u00d6rnek bir veri seti olu\u015ftural\u0131m\nnp.random.seed(42)\ndata = pd.DataFrame({\n    'De\u011fi\u015fken_A': np.random.normal(loc=0, scale=1, size=1000),\n    'De\u011fi\u015fken_B': np.random.normal(loc=5, scale=2, size=1000),\n    'Kategori': np.random.choice(['Grup1', 'Grup2'], size=1000)\n})\n\n<h2>Tek de\u011fi\u015fkenli kdeplot<\/h2>\nplt.figure(figsize=(8, 5))\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A')\nplt.title('De\u011fi\u015fken A\\'n\u0131n \u00c7ekirdek Yo\u011funluk Tahmini')\nplt.xlabel('De\u011fi\u015fken A De\u011ferleri')\nplt.ylabel('Yo\u011funluk')\nplt.show()<\/code><\/pre>\n<p>Bu kod par\u00e7as\u0131, <code>De\u011fi\u015fken_A<\/code> s\u00fctunundaki verilerin yo\u011funluk e\u011frisini \u00e7izecektir. Varsay\u0131lan olarak, Seaborn bir Gauss \u00e7ekirde\u011fi kullan\u0131r ve uygun bir bant geni\u015fli\u011fini otomatik olarak tahmin eder.<\/p>\n<h4>Temel Parametreler ve Varsay\u0131lan Davran\u0131\u015flar<\/h4>\n<p><code>kdeplot<\/code> fonksiyonunun bir\u00e7ok parametresi vard\u0131r, ancak en temel olanlar\u0131 \u015funlard\u0131r:<\/p>\n<p>*   <code>data<\/code>: G\u00f6rselle\u015ftirilecek veriyi i\u00e7eren Pandas DataFrame, Series veya NumPy dizisi.<br \/>\n*   <code>x<\/code>, <code>y<\/code>: Yo\u011funluk tahmini yap\u0131lacak s\u00fctunun adlar\u0131 (DataFrame kullan\u0131l\u0131yorsa). <code>x<\/code> tek de\u011fi\u015fkenli (1D) KDE i\u00e7in kullan\u0131l\u0131rken, <code>x<\/code> ve <code>y<\/code> birlikte iki de\u011fi\u015fkenli (2D) KDE i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <code>ax<\/code>: Grafi\u011fin \u00e7izilece\u011fi Matplotlib ekseni (Axes) nesnesi. Belirtilmezse, Seaborn yeni bir eksen olu\u015fturur.<\/p>\n<p>Varsay\u0131lan olarak, <code>kdeplot<\/code> p\u00fcr\u00fczs\u00fcz bir \u00e7izgi \u00e7izer. Bu \u00e7izginin \u015fekli, verinin yo\u011fun oldu\u011fu b\u00f6lgelerde y\u00fckselir ve seyrekle\u015fti\u011fi b\u00f6lgelerde al\u00e7al\u0131r. E\u011frinin alt\u0131ndaki toplam alan 1&#8217;e e\u015fittir, \u00e7\u00fcnk\u00fc bu bir olas\u0131l\u0131k yo\u011funluk fonksiyonunun tahminidir.<\/p>\n<h3>1D Kdeplot Parametreleri ve \u00d6zelle\u015ftirme<\/h3>\n<p><code>kdeplot<\/code> fonksiyonu, grafi\u011fin g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc ve hesaplama \u015feklini kontrol etmek i\u00e7in zengin bir parametre setine sahiptir.<\/p>\n<h4><code>data<\/code>, <code>x<\/code>, <code>y<\/code> Parametreleri<\/h4>\n<p>Yukar\u0131da bahsedildi\u011fi gibi, <code>data<\/code> parametresi veri kayna\u011f\u0131n\u0131 belirtir. <code>x<\/code> ve <code>y<\/code> ise, <code>data<\/code> i\u00e7inde hangi s\u00fctunlar\u0131n kullan\u0131laca\u011f\u0131n\u0131 belirtir. Tek de\u011fi\u015fkenli bir KDE i\u00e7in sadece <code>x<\/code> veya <code>y<\/code> kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-python\"># Hem x hem de y ile tek de\u011fi\u015fkenli kdeplot\nplt.figure(figsize=(12, 5))\n\nplt.subplot(1, 2, 1)\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A')\nplt.title('x ile De\u011fi\u015fken A')\n\nplt.subplot(1, 2, 2)\nsns.kdeplot(data=data, y='De\u011fi\u015fken_B')\nplt.title('y ile De\u011fi\u015fken B')\n\nplt.tight_layout()\nplt.show()<\/code><\/pre>\n<h4><code>hue<\/code> ile Kategorik Gruplara G\u00f6re G\u00f6rselle\u015ftirme<\/h4>\n<p><code>hue<\/code> parametresi, veri setindeki kategorik bir de\u011fi\u015fkene g\u00f6re farkl\u0131 KDE e\u011frileri \u00e7izmenizi sa\u011flar. Bu, farkl\u0131 gruplar\u0131n da\u011f\u0131l\u0131mlar\u0131n\u0131 kolayca kar\u015f\u0131la\u015ft\u0131rmak i\u00e7in son derece faydal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-python\">plt.figure(figsize=(8, 5))\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A', hue='Kategori')\nplt.title('De\u011fi\u015fken A\\'n\u0131n Kategoriye G\u00f6re Da\u011f\u0131l\u0131m\u0131')\nplt.xlabel('De\u011fi\u015fken A De\u011ferleri')\nplt.ylabel('Yo\u011funluk')\nplt.show()<\/code><\/pre>\n<p>Bu grafik, <code>De\u011fi\u015fken_A<\/code>&#8216;n\u0131n <code>Grup1<\/code> ve <code>Grup2<\/code> kategorileri i\u00e7in ayr\u0131 ayr\u0131 yo\u011funluk e\u011frilerini g\u00f6sterir.<\/p>\n<h4><code>fill<\/code> ile Alanlar\u0131 Doldurma<\/h4>\n<p>Yo\u011funluk e\u011frilerinin alt\u0131ndaki alanlar\u0131 doldurmak, g\u00f6rsel okunabilirli\u011fi art\u0131rabilir. <code>fill=True<\/code> parametresi bu i\u015flevi g\u00f6r\u00fcr. <code>hue<\/code> ile kullan\u0131ld\u0131\u011f\u0131nda, farkl\u0131 kategoriler i\u00e7in \u00fcst \u00fcste binen veya ayr\u0131k alanlar olu\u015fturur.<\/p>\n<pre><code class=\"language-python\">plt.figure(figsize=(8, 5))\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A', hue='Kategori', fill=True, alpha=0.5)\nplt.title('Doldurulmu\u015f De\u011fi\u015fken A Da\u011f\u0131l\u0131m\u0131 (Kategoriye G\u00f6re)')\nplt.xlabel('De\u011fi\u015fken A De\u011ferleri')\nplt.ylabel('Yo\u011funluk')\nplt.show()<\/code><\/pre>\n<p><code>alpha<\/code> parametresi, doldurulmu\u015f alanlar\u0131n \u015feffafl\u0131\u011f\u0131n\u0131 kontrol eder.<\/p>\n<h4><code>weights<\/code> ile G\u00f6zlemlere A\u011f\u0131rl\u0131k Verme<\/h4>\n<p>Baz\u0131 durumlarda, veri setindeki her g\u00f6zlemin e\u015fit derecede \u00f6nemli olmad\u0131\u011f\u0131n\u0131 d\u00fc\u015f\u00fcnebilirsiniz. <code>weights<\/code> parametresi, her bir g\u00f6zleme atanacak a\u011f\u0131rl\u0131klar\u0131 belirten bir dizi veya Series kabul eder. Bu, \u00f6zellikle \u00f6rneklem a\u011f\u0131rl\u0131kland\u0131rmas\u0131 yap\u0131lmas\u0131 gereken anket verileri gibi durumlarda kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-python\"># \u00d6rnek a\u011f\u0131rl\u0131klar olu\u015ftural\u0131m (rastgele)\ndata['A\u011f\u0131rl\u0131k'] = np.random.rand(len(data)) + 0.5\n\nplt.figure(figsize=(8, 5))\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A', weights='A\u011f\u0131rl\u0131k', fill=True, alpha=0.6)\nplt.title('A\u011f\u0131rl\u0131kland\u0131r\u0131lm\u0131\u015f De\u011fi\u015fken A Da\u011f\u0131l\u0131m\u0131')\nplt.xlabel('De\u011fi\u015fken A De\u011ferleri')\nplt.ylabel('Yo\u011funluk')\nplt.show()<\/code><\/pre>\n<h4><code>bw_method<\/code> (Bant Geni\u015fli\u011fi): P\u00fcr\u00fczs\u00fczl\u00fc\u011f\u00fcn Anahtar\u0131<\/h4>\n<p>Bant geni\u015fli\u011fi (bandwidth), KDE&#8217;nin en kritik parametresidir. Her bir veri noktas\u0131 etraf\u0131na yerle\u015ftirilen \u00e7ekirdeklerin yay\u0131l\u0131m\u0131n\u0131 kontrol eder.<\/p>\n<p>*   <strong>Bant Geni\u015fli\u011finin \u00d6nemi:<\/strong><br \/>\n    *   <strong>K\u00fc\u00e7\u00fck bant geni\u015fli\u011fi:<\/strong> E\u011fri daha &#8220;sivri&#8221; ve &#8220;\u00e7entikli&#8221; olur, g\u00fcr\u00fclt\u00fcy\u00fc daha fazla g\u00f6sterir ve a\u015f\u0131r\u0131 uyuma (overfitting) yol a\u00e7abilir. Veri noktalar\u0131na daha s\u0131k\u0131 sar\u0131l\u0131r.<br \/>\n    *   <strong>B\u00fcy\u00fck bant geni\u015fli\u011fi:<\/strong> E\u011fri daha &#8220;p\u00fcr\u00fczs\u00fcz&#8221; ve &#8220;yayvan&#8221; olur, daha az ayr\u0131nt\u0131 g\u00f6sterir ve eksik uyuma (underfitting) yol a\u00e7abilir. Da\u011f\u0131l\u0131m\u0131n genel \u015feklini daha iyi yakalayabilir ancak yerel modlar\u0131 ka\u00e7\u0131rabilir.<\/p>\n<p>*   <strong>Farkl\u0131 Y\u00f6ntemler ve Etkileri:<\/strong><br \/>\n    <code>bw_method<\/code> parametresi, bant geni\u015fli\u011fini otomatik olarak tahmin etmek i\u00e7in \u00e7e\u015fitli y\u00f6ntemler veya manuel bir de\u011fer kabul eder:<br \/>\n    *   <code>'scott'<\/code>: Scott&#8217;\u0131n kural\u0131.<br \/>\n    *   <code>'silverman'<\/code>: Silverman&#8217;\u0131n kural\u0131.<br \/>\n    *   Bir say\u0131sal de\u011fer: Manuel olarak belirlenmi\u015f bir bant geni\u015fli\u011fi.<br \/>\n    *   Bir callable (fonksiyon): \u00d6zel bir bant geni\u015fli\u011fi hesaplama fonksiyonu.<\/p>\n<pre><code class=\"language-python\">plt.figure(figsize=(12, 5))\n\nplt.subplot(1, 2, 1)\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A', bw_method=0.1) # Daha k\u00fc\u00e7\u00fck bant geni\u015fli\u011fi\nplt.title('K\u00fc\u00e7\u00fck Bant Geni\u015fli\u011fi (0.1)')\n\nplt.subplot(1, 2, 2)\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A', bw_method=1.0) # Daha b\u00fcy\u00fck bant geni\u015fli\u011fi\nplt.title('B\u00fcy\u00fck Bant Geni\u015fli\u011fi (1.0)')\n\nplt.tight_layout()\nplt.show()<\/code><\/pre>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere, bant geni\u015fli\u011fi se\u00e7imi grafi\u011fin g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc \u00f6nemli \u00f6l\u00e7\u00fcde de\u011fi\u015ftirebilir. Genellikle Seaborn&#8217;un varsay\u0131lan veya <code>'silverman'<\/code> gibi otomatik y\u00f6ntemler iyi bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<h4><code>cut<\/code> ve <code>clip<\/code> ile Yo\u011funluk Aral\u0131\u011f\u0131n\u0131 Kontrol Etme<\/h4>\n<p>*   <code>cut<\/code>: KDE e\u011frisinin verinin minimum ve maksimum de\u011ferlerinin ne kadar \u00f6tesine uzanaca\u011f\u0131n\u0131 kontrol eder. Varsay\u0131lan olarak, KDE e\u011frisi veri aral\u0131\u011f\u0131n\u0131n biraz d\u0131\u015f\u0131na uzan\u0131r. <code>cut=0<\/code> ayar\u0131, e\u011frinin sadece veri aral\u0131\u011f\u0131 i\u00e7inde \u00e7izilmesini sa\u011flar.<br \/>\n*   <code>clip<\/code>: Yo\u011funluk tahmininin yap\u0131laca\u011f\u0131 aral\u0131\u011f\u0131 do\u011frudan s\u0131n\u0131rlar. Bu, \u00f6zellikle veri setinizde ayk\u0131r\u0131 de\u011ferler varsa ve bu ayk\u0131r\u0131 de\u011ferlerin KDE hesaplamas\u0131n\u0131 etkilemesini istemiyorsan\u0131z kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-python\">plt.figure(figsize=(12, 5))\n\nplt.subplot(1, 2, 1)\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A', cut=0)\nplt.title('cut=0 ile Kdeplot')\n\nplt.subplot(1, 2, 2)\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A', clip=(-2, 2)) # Sadece -2 ile 2 aras\u0131ndaki veriler i\u00e7in yo\u011funluk tahmini yap\nplt.title('clip=(-2, 2) ile Kdeplot')\n\nplt.tight_layout()\nplt.show()<\/code><\/pre>\n<h4><code>log_scale<\/code> ile Logaritmik \u00d6l\u00e7ekleme<\/h4>\n<p>\u00c7ok geni\u015f bir aral\u0131\u011fa yay\u0131lm\u0131\u015f veya sa\u011fa \u00e7arp\u0131k da\u011f\u0131l\u0131mlara sahip verilerde, <code>log_scale=True<\/code> parametresi x eksenini logaritmik olarak \u00f6l\u00e7ekleyerek da\u011f\u0131l\u0131m\u0131n daha iyi g\u00f6r\u00fcnmesini sa\u011flayabilir.<\/p>\n<pre><code class=\"language-python\"># Logaritmik \u00f6l\u00e7ek i\u00e7in pozitif, sa\u011fa \u00e7arp\u0131k bir veri olu\u015ftural\u0131m\nlog_data = np.random.lognormal(mean=1, sigma=0.8, size=1000)\n\nplt.figure(figsize=(12, 5))\n\nplt.subplot(1, 2, 1)\nsns.kdeplot(x=log_data)\nplt.title('Normal \u00d6l\u00e7ekte Kdeplot')\n\nplt.subplot(1, 2, 2)\nsns.kdeplot(x=log_data, log_scale=True)\nplt.title('Logaritmik \u00d6l\u00e7ekte Kdeplot')\n\nplt.tight_layout()\nplt.show()<\/code><\/pre>\n<h4><code>cumulative<\/code> ile K\u00fcm\u00fclatif Da\u011f\u0131l\u0131m Fonksiyonu<\/h4>\n<p><code>cumulative=True<\/code> parametresi, olas\u0131l\u0131k yo\u011funluk fonksiyonu yerine k\u00fcm\u00fclatif da\u011f\u0131l\u0131m fonksiyonunu (CDF) \u00e7izer. CDF, belirli bir de\u011ferden k\u00fc\u00e7\u00fck veya ona e\u015fit olma olas\u0131l\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<pre><code class=\"language-python\">plt.figure(figsize=(8, 5))\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A', cumulative=True)\nplt.title('De\u011fi\u015fken A\\'n\u0131n K\u00fcm\u00fclatif Da\u011f\u0131l\u0131m Fonksiyonu')\nplt.xlabel('De\u011fi\u015fken A De\u011ferleri')\nplt.ylabel('K\u00fcm\u00fclatif Olas\u0131l\u0131k')\nplt.show()<\/code><\/pre>\n<h4>G\u00f6rsel Esteti\u011fi Ayarlama: <code>color<\/code>, <code>palette<\/code>, <code>linestyle<\/code>, <code>linewidth<\/code>, <code>alpha<\/code><\/h4>\n<p>Grafi\u011fin g\u00f6rsel \u00e7ekicili\u011fini ve okunabilirli\u011fini art\u0131rmak i\u00e7in \u00e7e\u015fitli estetik parametreler kullan\u0131labilir:<\/p>\n<p>*   <code>color<\/code>: Tek bir renk belirler.<br \/>\n*   <code>palette<\/code>: <code>hue<\/code> kullan\u0131ld\u0131\u011f\u0131nda, her kategori i\u00e7in kullan\u0131lacak renk paletini belirler.<br \/>\n*   <code>linestyle<\/code>: \u00c7izgi stilini (&#8216;-&#8216;, &#8216;&#8211;&#8216;, &#8216;:&#8217;, &#8216;-.&#8217;) belirler.<br \/>\n*   <code>linewidth<\/code>: \u00c7izginin kal\u0131nl\u0131\u011f\u0131n\u0131 belirler.<br \/>\n*   <code>alpha<\/code>: \u00c7izgilerin veya doldurulmu\u015f alanlar\u0131n \u015feffafl\u0131\u011f\u0131n\u0131 belirler (0.0 tamamen \u015feffaf, 1.0 opak).<\/p>\n<pre><code class=\"language-python\">plt.figure(figsize=(8, 5))\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A', hue='Kategori', fill=True, alpha=0.6,\n            palette='viridis', linewidth=2, linestyle='--')\nplt.title('\u00d6zelle\u015ftirilmi\u015f Kdeplot')\nplt.xlabel('De\u011fi\u015fken A De\u011ferleri')\nplt.ylabel('Yo\u011funluk')\nplt.show()<\/code><\/pre>\n<h4><code>legend<\/code> ile A\u00e7\u0131klamalar\u0131 Y\u00f6netme<\/h4>\n<p><code>legend=False<\/code> parametresi, <code>hue<\/code> kullan\u0131ld\u0131\u011f\u0131nda olu\u015fan a\u00e7\u0131klama kutusunu (legend) gizler. Varsay\u0131lan olarak <code>True<\/code>&#8216;dur.<\/p>\n<h3>\u0130ki De\u011fi\u015fkenli (2D) Kdeplot: \u0130li\u015fkileri Ke\u015ffetmek<\/h3>\n<p><code>kdeplot<\/code>, iki say\u0131sal de\u011fi\u015fken aras\u0131ndaki ortak da\u011f\u0131l\u0131m\u0131 g\u00f6rselle\u015ftirmek i\u00e7in de kullan\u0131labilir. Bu, de\u011fi\u015fkenler aras\u0131ndaki ili\u015fkinin yo\u011funluk haritas\u0131n\u0131 g\u00f6rmemizi sa\u011flar.<\/p>\n<h4>Temel 2D Kdeplot Kullan\u0131m\u0131<\/h4>\n<p>\u0130ki de\u011fi\u015fkenli bir KDE i\u00e7in <code>x<\/code> ve <code>y<\/code> parametrelerini birlikte kullan\u0131r\u0131z.<\/p>\n<pre><code class=\"language-python\">plt.figure(figsize=(8, 6))\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A', y='De\u011fi\u015fken_B')\nplt.title('De\u011fi\u015fken A ve De\u011fi\u015fken B\\'nin Ortak Yo\u011funluk Tahmini')\nplt.xlabel('De\u011fi\u015fken A')\nplt.ylabel('De\u011fi\u015fken B')\nplt.show()<\/code><\/pre>\n<p>Bu grafik, iki de\u011fi\u015fkenin birlikte en yo\u011fun oldu\u011fu b\u00f6lgeleri kontur \u00e7izgileriyle g\u00f6sterir. Kontur \u00e7izgileri, e\u015f yo\u011funluk seviyelerini temsil eder; i\u00e7e do\u011fru olan \u00e7izgiler daha y\u00fcksek yo\u011funluklar\u0131 g\u00f6sterir.<\/p>\n<h4>Kontur \u00c7izgilerini Yorumlama<\/h4>\n<p>2D KDE grafi\u011findeki kontur \u00e7izgileri, bir topo\u011frafik haritadaki e\u015fy\u00fckselti e\u011frilerine benzer. Her bir kontur \u00e7izgisi, belirli bir yo\u011funluk seviyesindeki (veya olas\u0131l\u0131k seviyesindeki) noktalar\u0131 birle\u015ftirir. Yo\u011funluk seviyeleri genellikle i\u00e7ten d\u0131\u015fa do\u011fru azal\u0131r. Bu, bize iki de\u011fi\u015fkenin hangi kombinasyonlar\u0131n\u0131n daha olas\u0131 oldu\u011funu g\u00f6rsel olarak anlat\u0131r.<\/p>\n<h4><code>fill<\/code> ile Alanlar\u0131 Doldurma ve <code>thresh<\/code> Parametresi<\/h4>\n<p><code>fill=True<\/code> parametresi, 2D KDE&#8217;de kontur alanlar\u0131n\u0131 renkle doldurur. Bu, yo\u011funluk b\u00f6lgelerini daha belirgin hale getirir. <code>thresh<\/code> parametresi, \u00e7izilecek en d\u00fc\u015f\u00fck yo\u011funluk seviyesini belirler. Bu e\u015fi\u011fin alt\u0131ndaki alanlar \u00e7izilmez.<\/p>\n<pre><code class=\"language-python\">plt.figure(figsize=(8, 6))\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A', y='De\u011fi\u015fken_B', fill=True, cmap='Blues', thresh=0.05)\nplt.title('Doldurulmu\u015f 2D Kdeplot (De\u011fi\u015fken A ve B)')\nplt.xlabel('De\u011fi\u015fken A')\nplt.ylabel('De\u011fi\u015fken B')\nplt.show()<\/code><\/pre>\n<p><code>cmap<\/code> parametresi, doldurulmu\u015f alanlar i\u00e7in kullan\u0131lacak renk haritas\u0131n\u0131 belirler. <code>'Blues'<\/code>, d\u00fc\u015f\u00fck yo\u011funluktan y\u00fcksek yo\u011funlu\u011fa do\u011fru mavi tonlar\u0131n\u0131 kullan\u0131r.<\/p>\n<h4><code>levels<\/code> ile Kontur Seviyelerini Belirleme<\/h4>\n<p><code>levels<\/code> parametresi, \u00e7izilecek kontur \u00e7izgilerinin say\u0131s\u0131n\u0131 veya belirli yo\u011funluk seviyelerini belirlemenizi sa\u011flar. Bir tam say\u0131 verilirse, o kadar e\u015fit aral\u0131kl\u0131 kontur \u00e7izilir. Bir liste verilirse, listedeki de\u011ferlere kar\u015f\u0131l\u0131k gelen yo\u011funluk seviyeleri \u00e7izilir.<\/p>\n<pre><code class=\"language-python\">plt.figure(figsize=(8, 6))\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A', y='De\u011fi\u015fken_B', levels=10, cmap='viridis')\nplt.title('10 Seviyeli 2D Kdeplot')\nplt.xlabel('De\u011fi\u015fken A')\nplt.ylabel('De\u011fi\u015fken B')\nplt.show()\n\nplt.figure(figsize=(8, 6))\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A', y='De\u011fi\u015fken_B', levels=[0.01, 0.05, 0.1, 0.2], colors='purple', linestyles='--')\nplt.title('Belirli Seviyeli 2D Kdeplot')\nplt.xlabel('De\u011fi\u015fken A')\nplt.ylabel('De\u011fi\u015fken B')\nplt.show()<\/code><\/pre>\n<h4><code>cbar<\/code> ve <code>cmap<\/code> ile Renk Skalas\u0131n\u0131 Y\u00f6netme<\/h4>\n<p><code>cbar=True<\/code> parametresi, 2D KDE grafi\u011finin yan\u0131na bir renk \u00e7ubu\u011fu (colorbar) ekler. Bu \u00e7ubuk, renklerin hangi yo\u011funluk seviyelerine kar\u015f\u0131l\u0131k geldi\u011fini g\u00f6sterir. <code>cmap<\/code> ise renk haritas\u0131n\u0131 belirler.<\/p>\n<pre><code class=\"language-python\">plt.figure(figsize=(8, 6))\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A', y='De\u011fi\u015fken_B', fill=True, cmap='Reds', cbar=True)\nplt.title('Renk \u00c7ubu\u011fu ile 2D Kdeplot')\nplt.xlabel('De\u011fi\u015fken A')\nplt.ylabel('De\u011fi\u015fken B')\nplt.show()<\/code><\/pre>\n<h4>2D Kdeplot&#8217;ta <code>hue<\/code> Kullan\u0131m\u0131<\/h4>\n<p>2D KDE&#8217;de <code>hue<\/code> kullanmak, farkl\u0131 kategorik gruplar i\u00e7in ayr\u0131 2D yo\u011funluk haritalar\u0131 \u00e7izmeye \u00e7al\u0131\u015f\u0131r. Bu, genellikle farkl\u0131 renklerde \u00fcst \u00fcste binen kontur setleri olarak g\u00f6sterilir. Ancak, \u00e7ok say\u0131da kategori veya karma\u015f\u0131k da\u011f\u0131l\u0131mlar oldu\u011funda grafik karma\u015f\u0131kla\u015fabilir.<\/p>\n<pre><code class=\"language-python\">plt.figure(figsize=(8, 6))\nsns.kdeplot(data=data, x='De\u011fi\u015fken_A', y='De\u011fi\u015fken_B', hue='Kategori', fill=True, alpha=0.5, palette='viridis')\nplt.title('Kategoriye G\u00f6re 2D Kdeplot')\nplt.xlabel('De\u011fi\u015fken A')\nplt.ylabel('De\u011fi\u015fken B')\nplt.show()<\/code><\/pre>\n<h3>Kdeplot&#8217;un Di\u011fer Seaborn Grafikleriyle Entegrasyonu<\/h3>\n<p><code>kdeplot<\/code> tek ba\u015f\u0131na g\u00fc\u00e7l\u00fc olsa da, Seaborn&#8217;un di\u011fer y\u00fcksek seviyeli fonksiyonlar\u0131yla birle\u015ftirildi\u011finde veri ke\u015ffini daha da zenginle\u015ftirir.<\/p>\n<h4><code>jointplot<\/code> ile Marjinal ve Ortak Da\u011f\u0131l\u0131mlar\u0131 Birle\u015ftirme<\/h4>\n<p><code>jointplot<\/code>, iki de\u011fi\u015fken aras\u0131ndaki ortak da\u011f\u0131l\u0131m\u0131 (genellikle bir scatter plot veya 2D KDE ile) ve her bir de\u011fi\u015fkenin marjinal da\u011f\u0131l\u0131m\u0131n\u0131 (genellikle histogram veya 1D KDE ile) tek bir grafikte birle\u015ftirir. <code>kind='kde'<\/code> parametresi, ortak da\u011f\u0131l\u0131m i\u00e7in 2D KDE&#8217;yi ve marjinal da\u011f\u0131l\u0131mlar i\u00e7in 1D KDE&#8217;yi kullan\u0131r.<\/p>\n<pre><code class=\"language-python\">sns.jointplot(data=data, x='De\u011fi\u015fken_A', y='De\u011fi\u015fken_B', kind='kde', fill=True, cmap='magma', height=7)\nplt.suptitle('De\u011fi\u015fken A ve B i\u00e7in Ortak ve Marjinal Kdeplot', y=1.02) # Genel ba\u015fl\u0131k\nplt.show()<\/code><\/pre>\n<p>Bu grafik, iki de\u011fi\u015fken aras\u0131ndaki ili\u015fkinin hem genel g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc hem de her bir de\u011fi\u015fkenin tek ba\u015f\u0131na nas\u0131l da\u011f\u0131ld\u0131\u011f\u0131n\u0131 anlamak i\u00e7in m\u00fckemmeldir.<\/p>\n<h4><code>PairGrid<\/code> ve <code>pairplot<\/code> ile \u00c7oklu De\u011fi\u015fken Analizi<\/h4>\n<p><code>PairGrid<\/code> ve <code>pairplot<\/code>, bir veri setindeki t\u00fcm say\u0131sal de\u011fi\u015fken \u00e7iftleri aras\u0131ndaki ili\u015fkileri ve tek tek de\u011fi\u015fkenlerin da\u011f\u0131l\u0131mlar\u0131n\u0131 g\u00f6rselle\u015ftirmek i\u00e7in kullan\u0131l\u0131r. <code>pairplot<\/code>, <code>PairGrid<\/code> \u00fczerine in\u015fa edilmi\u015f daha basit bir aray\u00fczd\u00fcr.<\/p>\n<p><code>pairplot<\/code>&#8216;ta <code>kde<\/code> kullanarak hem diyagonalde (tek de\u011fi\u015fkenli) hem de \u00fcst\/alt \u00fc\u00e7gende (iki de\u011fi\u015fkenli) KDE grafikleri \u00e7izebiliriz.<\/p>\n<pre><code class=\"language-python\"># Daha fazla de\u011fi\u015fken i\u00e7eren bir \u00f6rnek veri seti\niris = sns.load_dataset('iris')\n\nsns.pairplot(iris, kind='kde', hue='species', diag_kind='kde')\nplt.suptitle('Iris Veri Seti i\u00e7in Pairplot (KDE)', y=1.02)\nplt.show()<\/code><\/pre>\n<p>Bu, birden \u00e7ok de\u011fi\u015fkenin birbiriyle ve kategorik bir de\u011fi\u015fkenle nas\u0131l ili\u015fkili oldu\u011funu h\u0131zl\u0131ca anlamak i\u00e7in inan\u0131lmaz derecede g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r.<\/p>\n<h4><code>FacetGrid<\/code> ile Ko\u015fullu G\u00f6rselle\u015ftirmeler<\/h4>\n<p><code>FacetGrid<\/code>, bir veya daha fazla kategorik de\u011fi\u015fkene g\u00f6re verinin alt k\u00fcmeleri i\u00e7in ayr\u0131 grafikler olu\u015fturman\u0131z\u0131 sa\u011flar. Bu, farkl\u0131 ko\u015fullar alt\u0131ndaki da\u011f\u0131l\u0131mlar\u0131 kar\u015f\u0131la\u015ft\u0131rmak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-python\">g = sns.FacetGrid(iris, col='species', height=4, aspect=1.2)\ng.map_dataframe(sns.kdeplot, x='sepal_length', fill=True, alpha=0.6)\ng.set_axis_labels('\u00c7anak Yaprak Uzunlu\u011fu', 'Yo\u011funluk')\ng.set_titles(col_name='T\u00fcr: {col_name}')\nplt.suptitle('T\u00fcrlere G\u00f6re \u00c7anak Yaprak Uzunlu\u011fu Da\u011f\u0131l\u0131m\u0131', y=1.02)\nplt.tight_layout()\nplt.show()<\/code><\/pre>\n<p>Burada, <code>iris<\/code> veri setindeki <code>sepal_length<\/code> de\u011fi\u015fkeninin da\u011f\u0131l\u0131m\u0131n\u0131 <code>species<\/code> (t\u00fcr) kategorisine g\u00f6re ayr\u0131 panellerde g\u00f6rselle\u015ftirdik.<\/p>\n<h3>Geli\u015fmi\u015f Konular ve En \u0130yi Uygulamalar<\/h3>\n<p><code>kdeplot<\/code>&#8216;u etkin bir \u015fekilde kullanmak i\u00e7in baz\u0131 geli\u015fmi\u015f konular\u0131 ve en iyi uygulamalar\u0131 bilmek faydal\u0131d\u0131r.<\/p>\n<h4>\u00c7ekirdek Fonksiyonlar\u0131 (K\u0131saca)<\/h4>\n<p>Seaborn <code>kdeplot<\/code> varsay\u0131lan olarak Gauss (normal) \u00e7ekirde\u011fi kullan\u0131r. Di\u011fer \u00e7ekirdek fonksiyonlar\u0131 (\u00f6rne\u011fin, Epanechnikov, \u00fc\u00e7gensel) farkl\u0131 \u015fekillerde p\u00fcr\u00fczs\u00fczle\u015ftirme yapabilir, ancak Gauss \u00e7ekirde\u011fi genellikle iyi bir genel ama\u00e7l\u0131 se\u00e7imdir ve \u00e7o\u011fu durumda yeterlidir. \u00c7ekirdek fonksiyonu se\u00e7imi, bant geni\u015fli\u011fi se\u00e7imi kadar kritik de\u011fildir, ancak \u00f6zel durumlarda denenebilir. <code>kdeplot<\/code> do\u011frudan \u00e7ekirdek fonksiyonu parametresi sunmaz, ancak d\u00fc\u015f\u00fck seviyeli <code>scipy.stats.gaussian_kde<\/code> gibi fonksiyonlarla \u00f6zel \u00e7ekirdekler kullan\u0131labilir.<\/p>\n<h4>Veri \u00d6n \u0130\u015fleme ve Haz\u0131rl\u0131k<\/h4>\n<p><code>kdeplot<\/code> kullanmadan \u00f6nce verinizin uygun \u015fekilde haz\u0131rland\u0131\u011f\u0131ndan emin olun:<\/p>\n<p>*   <strong>Eksik De\u011ferler:<\/strong> <code>kdeplot<\/code>, eksik de\u011ferleri (NaN) otomatik olarak yoksayar. Ancak, eksik de\u011ferlerin varl\u0131\u011f\u0131 da\u011f\u0131l\u0131m\u0131 etkileyebilir, bu y\u00fczden onlar\u0131 uygun \u015fekilde ele almak \u00f6nemlidir (doldurma, \u00e7\u0131karma vb.).<br \/>\n*   <strong>Ayk\u0131r\u0131 De\u011ferler:<\/strong> A\u015f\u0131r\u0131 ayk\u0131r\u0131 de\u011ferler, KDE e\u011frisinin \u015feklini bozabilir ve da\u011f\u0131l\u0131m\u0131n ger\u00e7ek merkezini veya yay\u0131l\u0131m\u0131n\u0131 yanl\u0131\u015f temsil edebilir. <code>clip<\/code> parametresi, bu etkiyi azaltmak i\u00e7in kullan\u0131labilir veya ayk\u0131r\u0131 de\u011ferler \u00f6nceden temizlenmelidir.<br \/>\n*   <strong>Veri Tipi:<\/strong> <code>kdeplot<\/code> say\u0131sal verilerle \u00e7al\u0131\u015f\u0131r. Kategorik veriler i\u00e7in <code>countplot<\/code> veya <code>catplot<\/code> gibi di\u011fer Seaborn fonksiyonlar\u0131 daha uygundur.<\/p>\n<h4>Kdeplot Yorumlama \u0130pu\u00e7lar\u0131<\/h4>\n<p>Bir KDE grafi\u011fini yorumlarken \u015funlara dikkat edin:<\/p>\n<p>*   <strong>Modlar (Zirveler):<\/strong> Bir veya daha fazla zirve var m\u0131? Bu zirveler, veri setindeki farkl\u0131 alt pop\u00fclasyonlar\u0131 veya yo\u011funluk b\u00f6lgelerini g\u00f6sterebilir.<br \/>\n*   <strong>\u00c7arp\u0131kl\u0131k:<\/strong> E\u011fri simetrik mi, yoksa sa\u011fa (pozitif) veya sola (negatif) \u00e7arp\u0131k m\u0131? \u00c7arp\u0131kl\u0131k, verinin a\u011f\u0131rl\u0131\u011f\u0131n\u0131n hangi tarafta topland\u0131\u011f\u0131n\u0131 g\u00f6sterir.<br \/>\n*   <strong>Yay\u0131l\u0131m:<\/strong> E\u011fri ne kadar geni\u015f veya dar? Geni\u015f bir e\u011fri, verinin geni\u015f bir aral\u0131\u011fa yay\u0131ld\u0131\u011f\u0131n\u0131, dar bir e\u011fri ise verinin belirli bir de\u011fer etraf\u0131nda topland\u0131\u011f\u0131n\u0131 g\u00f6sterir.<br \/>\n*   <strong>Bo\u015fluklar:<\/strong> E\u011fride belirgin bo\u015fluklar veya d\u00fc\u015f\u00fc\u015fler var m\u0131? Bu, veri setinde belirli de\u011fer aral\u0131klar\u0131nda g\u00f6zlem eksikli\u011fi oldu\u011funu veya farkl\u0131, ayr\u0131k gruplar\u0131n varl\u0131\u011f\u0131n\u0131 g\u00f6sterebilir.<br \/>\n*   <strong>2D KDE&#8217;de \u0130li\u015fkiler:<\/strong> Kontur \u00e7izgilerinin \u015fekli ve y\u00f6n\u00fc, iki de\u011fi\u015fken aras\u0131ndaki ili\u015fkinin do\u011fas\u0131n\u0131 (pozitif, negatif, do\u011frusal olmayan) ve yo\u011funluklar\u0131n\u0131 g\u00f6sterir.<\/p>\n<h4>B\u00fcy\u00fck Veri K\u00fcmeleriyle \u00c7al\u0131\u015f\u0131rken Performans<\/h4>\n<p>\u00c7ok b\u00fcy\u00fck veri k\u00fcmeleriyle \u00e7al\u0131\u015f\u0131rken <code>kdeplot<\/code>&#8216;un \u00e7izim s\u00fcresi uzayabilir. Bunun nedeni, her veri noktas\u0131 i\u00e7in \u00e7ekirdek hesaplamas\u0131 yap\u0131lmas\u0131d\u0131r. Performans\u0131 art\u0131rmak i\u00e7in:<\/p>\n<p>*   <strong>\u00d6rnekleme (Sampling):<\/strong> Veri setinin daha k\u00fc\u00e7\u00fck, temsili bir \u00f6rneklemini kullanmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz.<br \/>\n*   <strong><code>n_bins<\/code> (Histogramda):<\/strong> E\u011fer da\u011f\u0131l\u0131m\u0131 anlamak i\u00e7in mutlak p\u00fcr\u00fczs\u00fczl\u00fck \u015fart de\u011filse, <code>histplot<\/code> veya <code>displot<\/code> gibi fonksiyonlar\u0131 <code>kde=True<\/code> ile kullanarak daha h\u0131zl\u0131 bir yakla\u015f\u0131m elde edebilirsiniz. Bunlar \u00f6nce bir histogram olu\u015fturup sonra onu p\u00fcr\u00fczs\u00fczle\u015ftirir.<br \/>\n*   <strong><code>gridsize<\/code> (2D KDE):<\/strong> <code>kdeplot<\/code>&#8216;un 2D versiyonunda, <code>gridsize<\/code> parametresi yo\u011funluk tahmininin hesapland\u0131\u011f\u0131 \u0131zgaran\u0131n boyutunu kontrol eder. Daha k\u00fc\u00e7\u00fck bir <code>gridsize<\/code> daha h\u0131zl\u0131 ancak daha az detayl\u0131 bir grafik sunar.<\/p>\n<h4>Alternatif G\u00f6rselle\u015ftirme Y\u00f6ntemleri: Histogramlar ve Yo\u011funluk Grafikleri<\/h4>\n<p>KDE, da\u011f\u0131l\u0131m g\u00f6rselle\u015ftirmesi i\u00e7in harika bir ara\u00e7 olsa da, her zaman en iyi se\u00e7im olmayabilir.<\/p>\n<p>*   <strong>Histogramlar:<\/strong> Verinin tam frekans da\u011f\u0131l\u0131m\u0131n\u0131 g\u00f6stermek istedi\u011finizde, \u00f6zellikle de kategorik veya ayr\u0131k verilerle \u00e7al\u0131\u015f\u0131rken histogramlar daha a\u00e7\u0131klay\u0131c\u0131 olabilir. <code>sns.histplot<\/code> fonksiyonu bu ama\u00e7la kullan\u0131l\u0131r ve <code>kde=True<\/code> parametresi ile histogram \u00fczerine KDE e\u011frisi de \u00e7izebilir.<br \/>\n*   <strong><code>displot<\/code>:<\/strong> Seaborn&#8217;un <code>displot<\/code> fonksiyonu, hem histogramlar\u0131 hem de KDE&#8217;leri tek bir aray\u00fcz alt\u0131nda birle\u015ftirir ve <code>kind<\/code> parametresiyle (\u00f6rn. <code>kind='hist'<\/code>, <code>kind='kde'<\/code>) kolayca ge\u00e7i\u015f yapman\u0131z\u0131 sa\u011flar. Ayr\u0131ca <code>FacetGrid<\/code> tabanl\u0131 oldu\u011fu i\u00e7in <code>col<\/code> ve <code>row<\/code> parametreleriyle ko\u015fullu g\u00f6rselle\u015ftirmeler yapmay\u0131 da destekler.<\/p>\n<pre><code class=\"language-python\">plt.figure(figsize=(12, 5))\n\nplt.subplot(1, 2, 1)\nsns.histplot(data=data, x='De\u011fi\u015fken_A', kde=True)\nplt.title('Histogram ve Kdeplot')\n\nplt.subplot(1, 2, 2)\nsns.displot(data=data, x='De\u011fi\u015fken_A', kind='kde', hue='Kategori', fill=True)\nplt.title('Displot ile Kdeplot')\n\nplt.tight_layout()\nplt.show()<\/code><\/pre>\n<h3>Sonu\u00e7: Kdeplot ile Veri Hikayeleri Anlatmak<\/h3>\n<p>Seaborn&#8217;un <code>kdeplot<\/code> fonksiyonu, veri setlerindeki tek ve iki de\u011fi\u015fkenli da\u011f\u0131l\u0131mlar\u0131 ke\u015ffetmek i\u00e7in inan\u0131lmaz derecede esnek ve g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Ham veri noktalar\u0131n\u0131n \u00f6tesine ge\u00e7erek, alt\u0131nda yatan olas\u0131l\u0131k yo\u011funluk fonksiyonunun p\u00fcr\u00fczs\u00fcz bir tahminini sunar ve b\u00f6ylece verinin ger\u00e7ek yap\u0131s\u0131n\u0131 ve kal\u0131plar\u0131n\u0131 daha net bir \u015fekilde g\u00f6rmemizi sa\u011flar.<\/p>\n<p>Tek de\u011fi\u015fkenli KDE ile bir \u00f6zelli\u011fin nas\u0131l yay\u0131ld\u0131\u011f\u0131n\u0131, modlar\u0131n\u0131 ve \u00e7arp\u0131kl\u0131\u011f\u0131n\u0131 anlayabiliriz. <code>hue<\/code> parametresiyle farkl\u0131 gruplar\u0131 kar\u015f\u0131la\u015ft\u0131rabilir, <code>fill<\/code> ile yo\u011funluk alanlar\u0131n\u0131 vurgulayabilir ve <code>bw_method<\/code> ile p\u00fcr\u00fczs\u00fczle\u015ftirme seviyesini kontrol edebiliriz. \u0130ki de\u011fi\u015fkenli KDE ise, iki say\u0131sal \u00f6zellik aras\u0131ndaki ortak da\u011f\u0131l\u0131m\u0131 ve ili\u015fkinin yo\u011funluk haritas\u0131n\u0131 sunarak, de\u011fi\u015fkenlerin birlikte nas\u0131l davrand\u0131\u011f\u0131na dair derinlemesine i\u00e7g\u00f6r\u00fcler sa\u011flar.<\/p>\n<p><code>kdeplot<\/code>&#8216;u <code>jointplot<\/code>, <code>pairplot<\/code> ve <code>FacetGrid<\/code> gibi di\u011fer Seaborn fonksiyonlar\u0131yla birle\u015ftirmek, daha karma\u015f\u0131k veri setlerindeki \u00e7oklu ili\u015fkileri ve ko\u015fullu da\u011f\u0131l\u0131mlar\u0131 ke\u015ffetmek i\u00e7in kap\u0131lar a\u00e7ar. Veri \u00f6n i\u015fleme ad\u0131mlar\u0131na dikkat ederek ve grafik yorumlama ipu\u00e7lar\u0131n\u0131 kullanarak, <code>kdeplot<\/code> ile verilerinizdeki gizli hikayeleri ortaya \u00e7\u0131karabilir ve analizlerinizi daha anlaml\u0131 hale getirebilirsiniz.<\/p>\n<p>Bu rehber, <code>kdeplot<\/code>&#8216;un temel ve geli\u015fmi\u015f kullan\u0131mlar\u0131n\u0131 kapsayarak, veri g\u00f6rselle\u015ftirme yolculu\u011funuzda size sa\u011flam bir temel sunmay\u0131 ama\u00e7lamaktad\u0131r. Seaborn&#8217;un sundu\u011fu bu g\u00fc\u00e7l\u00fc arac\u0131 kullanarak verilerinizle daha etkili bir \u015fekilde etkile\u015fim kurman\u0131z ve de\u011ferli i\u00e7g\u00f6r\u00fcler elde etmeniz dile\u011fiyle.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Seaborn Kdeplot: Kapsaml\u0131 Bir Veri G\u00f6rselle\u015ftirme Rehberi\nSeaborn, Python programlama dili i\u00e7in geli\u015ftirilmi\u015f, Matplotlib tabanl\u0131 bir istatist","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-37182","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Seaborn Kdeplot: Kapsaml\u0131 Bir Veri G\u00f6rselle\u015ftirme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Seaborn Kdeplot: Kapsaml\u0131 Bir Veri G\u00f6rselle\u015ftirme Rehberi\" \/>\n<meta property=\"og:description\" content=\"Seaborn Kdeplot: Kapsaml\u0131 Bir Veri G\u00f6rselle\u015ftirme Rehberi Seaborn, Python programlama dili i\u00e7in geli\u015ftirilmi\u015f, Matplotlib tabanl\u0131 bir istatist\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-28T11:40:52+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"21 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Seaborn Kdeplot: Kapsaml\u0131 Bir Veri G\u00f6rselle\u015ftirme Rehberi\",\"datePublished\":\"2025-12-28T11:40:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/\"},\"wordCount\":3125,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/\",\"name\":\"Seaborn Kdeplot: Kapsaml\u0131 Bir Veri G\u00f6rselle\u015ftirme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-28T11:40:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Seaborn Kdeplot: Kapsaml\u0131 Bir Veri G\u00f6rselle\u015ftirme Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Seaborn Kdeplot: Kapsaml\u0131 Bir Veri G\u00f6rselle\u015ftirme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Seaborn Kdeplot: Kapsaml\u0131 Bir Veri G\u00f6rselle\u015ftirme Rehberi","og_description":"Seaborn Kdeplot: Kapsaml\u0131 Bir Veri G\u00f6rselle\u015ftirme Rehberi Seaborn, Python programlama dili i\u00e7in geli\u015ftirilmi\u015f, Matplotlib tabanl\u0131 bir istatist","og_url":"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-28T11:40:52+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"21 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Seaborn Kdeplot: Kapsaml\u0131 Bir Veri G\u00f6rselle\u015ftirme Rehberi","datePublished":"2025-12-28T11:40:52+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/"},"wordCount":3125,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/","name":"Seaborn Kdeplot: Kapsaml\u0131 Bir Veri G\u00f6rselle\u015ftirme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-28T11:40:52+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/seaborn-kdeplot-kapsamli-bir-veri-gorsellestirme-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Seaborn Kdeplot: Kapsaml\u0131 Bir Veri G\u00f6rselle\u015ftirme Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37182","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=37182"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37182\/revisions"}],"predecessor-version":[{"id":37183,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37182\/revisions\/37183"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37182"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37182"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37182"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}