{"id":31427,"date":"2025-10-09T21:41:26","date_gmt":"2025-10-09T18:41:26","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=31427"},"modified":"2025-10-09T21:41:26","modified_gmt":"2025-10-09T18:41:26","slug":"veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/","title":{"rendered":"Veri Normalizasyonu ve scikit-learn ile Uygulamalar\u0131"},"content":{"rendered":"<p><body><\/p>\n<h2>Veri Normalizasyonu ve scikit-learn ile Uygulamalar\u0131<\/h2>\n<p>Makine \u00f6\u011frenimi projelerinde veri \u00f6n i\u015fleme, modelin performans\u0131 ve genellenebilirli\u011fi \u00fczerinde kritik bir etkiye sahiptir. Ham veriler genellikle farkl\u0131 \u00f6l\u00e7eklerde, birimlerde ve da\u011f\u0131l\u0131mlarda \u00f6zellikler i\u00e7erir. Bu durum, \u00f6zellikle mesafe tabanl\u0131 algoritmalar veya gradyan ini\u015fi gibi optimizasyon tekniklerini kullanan algoritmalar i\u00e7in ciddi sorunlara yol a\u00e7abilir. Veri normalizasyonu (veya daha geni\u015f anlamda veri \u00f6l\u00e7eklendirme), bu farkl\u0131 \u00f6l\u00e7ekleri tutarl\u0131 bir aral\u0131\u011fa veya da\u011f\u0131l\u0131ma d\u00f6n\u00fc\u015ft\u00fcrerek bu sorunlar\u0131 \u00e7\u00f6zmeyi ama\u00e7layan temel bir \u00f6n i\u015fleme ad\u0131m\u0131d\u0131r. Python&#8217;da scikit-learn k\u00fct\u00fcphanesi, bu i\u015flemi kolay ve etkili bir \u015fekilde ger\u00e7ekle\u015ftirmek i\u00e7in g\u00fc\u00e7l\u00fc ara\u00e7lar sunar. Bu makalede, veri normalizasyonunun ne oldu\u011funu, neden gerekli oldu\u011funu, farkl\u0131 normalizasyon y\u00f6ntemlerini ve scikit-learn ile bunlar\u0131n nas\u0131l uygulanaca\u011f\u0131n\u0131 detayl\u0131 kod \u00f6rnekleriyle ele alaca\u011f\u0131z.<\/p>\n<h3>Veri Normalizasyonu Nedir ve Neden Gereklidir?<\/h3>\n<p>Veri normalizasyonu, bir veri setindeki say\u0131sal \u00f6zelliklerin de\u011fer aral\u0131\u011f\u0131n\u0131 standart bir aral\u0131\u011fa d\u00f6n\u00fc\u015ft\u00fcrme i\u015flemidir. Bu i\u015flem, \u00f6zelliklerin farkl\u0131 \u00f6l\u00e7eklerde olmas\u0131ndan kaynaklanan \u00f6nyarg\u0131lar\u0131 ortadan kald\u0131rmak ve t\u00fcm \u00f6zelliklerin modele e\u015fit katk\u0131da bulunmas\u0131n\u0131 sa\u011flamak i\u00e7in yap\u0131l\u0131r. \u00d6rne\u011fin, bir veri setinde &#8220;ya\u015f&#8221; \u00f6zelli\u011fi 0-100 aras\u0131nda de\u011fi\u015firken, &#8220;gelir&#8221; \u00f6zelli\u011fi 10.000-1.000.000 aras\u0131nda de\u011fi\u015febilir. Bu durumda, gelir \u00f6zelli\u011fi, de\u011fer aral\u0131\u011f\u0131 \u00e7ok daha geni\u015f oldu\u011fu i\u00e7in model taraf\u0131ndan gere\u011finden fazla \u00f6nemli alg\u0131lanabilir.<\/p>\n<h4>Veri \u00d6l\u00e7eklendirme ve Normalizasyon Aras\u0131ndaki Fark<\/h4>\n<p>&#8220;Veri \u00f6l\u00e7eklendirme&#8221; ve &#8220;veri normalizasyonu&#8221; terimleri genellikle birbirinin yerine kullan\u0131lsa da, teknik olarak farkl\u0131 anlamlara gelebilirler.<br \/>\n*   <strong>\u00d6l\u00e7eklendirme (Scaling)<\/strong>: \u00d6zelliklerin de\u011fer aral\u0131\u011f\u0131n\u0131 de\u011fi\u015ftirme i\u015fleminin genel ad\u0131d\u0131r. Bu, de\u011ferleri belirli bir aral\u0131\u011fa s\u0131k\u0131\u015ft\u0131rmak (\u00f6rn. [0, 1]) veya ortalamay\u0131 s\u0131f\u0131ra ve standart sapmay\u0131 bire ayarlamak gibi farkl\u0131 y\u00f6ntemleri i\u00e7erebilir.<br \/>\n*   <strong>Normalizasyon (Normalization)<\/strong>: Genellikle veriyi belirli bir aral\u0131\u011fa (\u00f6rn. [0, 1] veya [-1, 1]) \u00f6l\u00e7eklendirmeyi ifade eder (Min-Max Normalizasyonu). Baz\u0131 ba\u011flamlarda, veriyi bir birim vekt\u00f6re d\u00f6n\u00fc\u015ft\u00fcrme (L1 veya L2 normuna g\u00f6re) anlam\u0131na da gelebilir.<br \/>\n*   <strong>Standardizasyon (Standardization)<\/strong>: Genellikle veriyi ortalamay\u0131 s\u0131f\u0131ra ve standart sapmay\u0131 bire ayarlayarak d\u00f6n\u00fc\u015ft\u00fcrmeyi ifade eder (Z-Score Normalizasyonu). Bu, verinin bir Gauss da\u011f\u0131l\u0131m\u0131na benzer bir \u015fekle sahip oldu\u011funu varsayar ancak verinin kendisini Gauss da\u011f\u0131l\u0131m\u0131na d\u00f6n\u00fc\u015ft\u00fcrmez.<\/p>\n<p>Bu makalede &#8220;normalizasyon&#8221; terimini daha geni\u015f anlamda, yani veri \u00f6l\u00e7eklendirme tekniklerinin tamam\u0131n\u0131 kapsayacak \u015fekilde kullanaca\u011f\u0131z.<\/p>\n<h4>Normalizasyonun Ama\u00e7lar\u0131<\/h4>\n<p>Veri normalizasyonunun temel ama\u00e7lar\u0131 \u015funlard\u0131r:<\/p>\n<p>*   <strong>Algoritma Performans\u0131<\/strong>: Bir\u00e7ok makine \u00f6\u011frenimi algoritmas\u0131, \u00f6zelliklerin ayn\u0131 \u00f6l\u00e7ekte olmas\u0131n\u0131 gerektirir veya bu durumdan fayda sa\u011flar.<br \/>\n    *   <strong>Mesafe Tabanl\u0131 Algoritmalar<\/strong>: K-En Yak\u0131n Kom\u015fu (K-NN), Destek Vekt\u00f6r Makineleri (SVM), K-Means gibi algoritmalar, \u00f6zellikler aras\u0131ndaki mesafeyi hesaplar. \u00d6l\u00e7eklendirilmemi\u015f verilerde, daha geni\u015f de\u011fer aral\u0131\u011f\u0131na sahip \u00f6zellikler mesafeyi domine edebilir ve bu da hatal\u0131 s\u0131n\u0131fland\u0131rma veya k\u00fcmelemeye yol a\u00e7abilir.<br \/>\n    *   <strong>Gradyan \u0130ni\u015fi Tabanl\u0131 Algoritmalar<\/strong>: Lojistik Regresyon, Yapay Sinir A\u011flar\u0131 gibi algoritmalar, model parametrelerini optimize etmek i\u00e7in gradyan ini\u015fi kullan\u0131r. \u00d6l\u00e7eklendirilmemi\u015f verilerde, farkl\u0131 \u00f6l\u00e7eklerdeki \u00f6zellikler i\u00e7in farkl\u0131 gradyanlar olu\u015fur, bu da optimizasyon s\u00fcrecini yava\u015flatabilir ve hatta yerel minimumlarda tak\u0131l\u0131p kalmas\u0131na neden olabilir. \u00d6l\u00e7eklendirilmi\u015f verilerde, gradyan ini\u015fi daha h\u0131zl\u0131 ve daha kararl\u0131 bir \u015fekilde yak\u0131nsar.<br \/>\n    *   <strong>Boyut \u0130ndirgeme Teknikleri<\/strong>: Temel Bile\u015fen Analizi (PCA) gibi teknikler, varyansa dayal\u0131d\u0131r. \u00d6l\u00e7eklendirilmemi\u015f verilerde, daha y\u00fcksek varyansa sahip \u00f6zellikler, daha d\u00fc\u015f\u00fck varyansa sahip ancak daha \u00f6nemli olabilecek di\u011fer \u00f6zelliklerin etkisini g\u00f6lgede b\u0131rakabilir.<br \/>\n*   <strong>Yak\u0131nsama H\u0131z\u0131<\/strong>: \u00d6zellikle yapay sinir a\u011flar\u0131 gibi yinelemeli algoritmalar, \u00f6l\u00e7eklendirilmi\u015f verilerle daha h\u0131zl\u0131 yak\u0131nsar. Bu, e\u011fitim s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde k\u0131saltabilir.<br \/>\n*   <strong>Ayk\u0131r\u0131 De\u011ferlerin Etkisi<\/strong>: Baz\u0131 normalizasyon y\u00f6ntemleri, ayk\u0131r\u0131 de\u011ferlerin etkisini azaltmaya yard\u0131mc\u0131 olabilir. \u00d6rne\u011fin, medyan ve \u00e7eyreklik aral\u0131\u011f\u0131na dayal\u0131 RobustScaler, ayk\u0131r\u0131 de\u011ferlere kar\u015f\u0131 daha diren\u00e7lidir.<br \/>\n*   <strong>Yorumlanabilirlik<\/strong>: Baz\u0131 durumlarda, verinin belirli bir aral\u0131\u011fa \u00f6l\u00e7eklendirilmesi, sonu\u00e7lar\u0131n daha kolay yorumlanmas\u0131na yard\u0131mc\u0131 olabilir, ancak bu ana ama\u00e7 de\u011fildir.<\/p>\n<h3>scikit-learn ile Normalizasyon Y\u00f6ntemleri<\/h3>\n<p>scikit-learn, veri \u00f6n i\u015fleme i\u00e7in kapsaml\u0131 bir mod\u00fcl olan <code>sklearn.preprocessing<\/code> alt\u0131nda \u00e7e\u015fitli normalizasyon ve \u00f6l\u00e7eklendirme ara\u00e7lar\u0131 sunar. Bu ara\u00e7lar\u0131n \u00e7o\u011fu, <code>fit()<\/code>, <code>transform()<\/code> ve <code>fit_transform()<\/code> metodlar\u0131n\u0131 i\u00e7eren bir API&#8217;ye sahiptir.<\/p>\n<p>*   <code>fit(X)<\/code>: D\u00f6n\u00fc\u015f\u00fcm i\u00e7in gerekli parametreleri (\u00f6rn. ortalama, standart sapma, minimum, maksimum de\u011ferler) <code>X<\/code> veri setinden \u00f6\u011frenir. Bu ad\u0131m <strong>yaln\u0131zca e\u011fitim verisi \u00fczerinde<\/strong> yap\u0131lmal\u0131d\u0131r.<br \/>\n*   <code>transform(X)<\/code>: \u00d6\u011frenilen parametreleri kullanarak <code>X<\/code> veri setini d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. Bu ad\u0131m, hem e\u011fitim hem de test verisi \u00fczerinde uygulan\u0131r. Test verisi \u00fczerinde <code>fit()<\/code> \u00e7a\u011fr\u0131lmamal\u0131d\u0131r, aksi takdirde &#8220;veri s\u0131z\u0131nt\u0131s\u0131&#8221; (data leakage) meydana gelir.<br \/>\n*   <code>fit_transform(X)<\/code>: <code>fit()<\/code> ve <code>transform()<\/code> metodlar\u0131n\u0131 tek bir ad\u0131mda birle\u015ftirir. Genellikle e\u011fitim verisi \u00fczerinde kullan\u0131l\u0131r.<\/p>\n<p>\u015eimdi scikit-learn&#8217;deki yayg\u0131n normalizasyon y\u00f6ntemlerini inceleyelim.<\/p>\n<h4>Min-Max Normalizasyonu (MinMaxScaler)<\/h4>\n<p>Min-Max Normalizasyonu, \u00f6zelliklerin de\u011ferlerini belirli bir aral\u0131\u011fa, genellikle [0, 1] aral\u0131\u011f\u0131na \u00f6l\u00e7ekler. Form\u00fcl\u00fc \u015fu \u015fekildedir:<\/p>\n<p>$X_{\\text{scaled}} = \\frac{X &#8211; X_{\\text{min}}}{X_{\\text{max}} &#8211; X_{\\text{min}}}$<\/p>\n<p>Burada $X$ orijinal de\u011fer, $X_{\\text{min}}$ \u00f6zelli\u011fin minimum de\u011feri ve $X_{\\text{max}}$ \u00f6zelli\u011fin maksimum de\u011feridir.<\/p>\n<p>*   <strong>Ne Zaman Kullan\u0131l\u0131r<\/strong>: Veri da\u011f\u0131l\u0131m\u0131n\u0131n bir Gauss da\u011f\u0131l\u0131m\u0131na uymad\u0131\u011f\u0131 durumlarda veya \u00e7\u0131kt\u0131 de\u011ferlerinin belirli bir aral\u0131kta (\u00f6rn. [0, 1]) olmas\u0131 istendi\u011finde tercih edilir. Yapay sinir a\u011flar\u0131 genellikle bu t\u00fcr \u00f6l\u00e7eklendirilmi\u015f girdileri tercih eder.<br \/>\n*   <strong>Avantajlar\u0131<\/strong>:<br \/>\n    *   Verinin orijinal da\u011f\u0131l\u0131m \u015feklini korur.<br \/>\n    *   T\u00fcm \u00f6zellik de\u011ferlerini belirli bir aral\u0131\u011fa s\u0131k\u0131\u015ft\u0131r\u0131r, bu da baz\u0131 algoritmalar i\u00e7in faydal\u0131d\u0131r.<br \/>\n*   <strong>Dezavantajlar\u0131<\/strong>:<br \/>\n    *   Ayk\u0131r\u0131 de\u011ferlere kar\u015f\u0131 olduk\u00e7a hassast\u0131r. Tek bir b\u00fcy\u00fck ayk\u0131r\u0131 de\u011fer, t\u00fcm di\u011fer de\u011ferleri \u00e7ok k\u00fc\u00e7\u00fck bir aral\u0131\u011fa s\u0131k\u0131\u015ft\u0131rarak etkisiz hale getirebilir.<\/p>\n<p><strong>scikit-learn Uygulamas\u0131<\/strong>:<\/p>\n<pre><code class=\"language-python\">from sklearn.preprocessing import MinMaxScaler\nimport numpy as np\n\n<h2>\u00d6rnek veri<\/h2>\ndata = np.array([[1, 2000], [2, 3000], [3, 10000], [4, 5000]])\n\n<h2>MinMaxScaler \u00f6rne\u011fi olu\u015fturma<\/h2>\nscaler = MinMaxScaler()\n\n<h2>Veriyi d\u00f6n\u00fc\u015ft\u00fcrme<\/h2>\nscaled_data = scaler.fit_transform(data)\n\nprint(\"Orijinal Veri:\\n\", data)\nprint(\"Min-Max \u00d6l\u00e7eklendirilmi\u015f Veri:\\n\", scaled_data)\n<h2>\u00c7\u0131kt\u0131:<\/h2>\n<h2>Orijinal Veri:<\/h2>\n<h2>[[   1  2000]<\/h2>\n<h2>[   2  3000]<\/h2>\n<h2>[   3 10000]<\/h2>\n<h2>[   4  5000]]<\/h2>\n<h2>Min-Max \u00d6l\u00e7eklendirilmi\u015f Veri:<\/h2>\n<h2>[[0.         0.        ]<\/h2>\n<h2>[0.33333333 0.125     ]<\/h2>\n<h2>[0.66666667 1.        ]<\/h2>\n<h2>[1.         0.375     ]]<\/code><\/pre>\n<\/h2>\n<p><code>feature_range<\/code> parametresi ile hedef aral\u0131\u011f\u0131 de\u011fi\u015ftirebilirsiniz, \u00f6rne\u011fin <code>MinMaxScaler(feature_range=(-1, 1))<\/code>.<\/p>\n<h4>Z-Score Normalizasyonu (StandardScaler)<\/h4>\n<p>Z-Score Normalizasyonu veya Standardizasyon, veriyi ortalamay\u0131 s\u0131f\u0131ra ve standart sapmay\u0131 bire ayarlayarak d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. Form\u00fcl\u00fc \u015fu \u015fekildedir:<\/p>\n<p>$X_{\\text{scaled}} = \\frac{X &#8211; \\mu}{\\sigma}$<\/p>\n<p>Burada $X$ orijinal de\u011fer, $\\mu$ \u00f6zelli\u011fin ortalamas\u0131 ve $\\sigma$ \u00f6zelli\u011fin standart sapmas\u0131d\u0131r.<\/p>\n<p>*   <strong>Ne Zaman Kullan\u0131l\u0131r<\/strong>: Veri da\u011f\u0131l\u0131m\u0131n\u0131n yakla\u015f\u0131k olarak bir Gauss da\u011f\u0131l\u0131m\u0131na benzedi\u011fi veya algoritmalar\u0131n (\u00f6rn. Lojistik Regresyon, SVM, Lineer Regresyon, PCA) ortalama ve varyansa duyarl\u0131 oldu\u011fu durumlarda tercih edilir.<br \/>\n*   <strong>Avantajlar\u0131<\/strong>:<br \/>\n    *   Ayk\u0131r\u0131 de\u011ferlere Min-Max \u00f6l\u00e7eklendirmeye g\u00f6re daha az hassast\u0131r, \u00e7\u00fcnk\u00fc standart sapma ayk\u0131r\u0131 de\u011ferlerden etkilenir ancak aral\u0131\u011f\u0131n kendisi kadar a\u015f\u0131r\u0131 de\u011fildir.<br \/>\n    *   Bir\u00e7ok istatistiksel model ve makine \u00f6\u011frenimi algoritmas\u0131 i\u00e7in varsay\u0131lan bir \u00f6n i\u015fleme ad\u0131m\u0131d\u0131r.<br \/>\n*   <strong>Dezavantajlar\u0131<\/strong>:<br \/>\n    *   Veriyi belirli bir aral\u0131\u011fa s\u0131k\u0131\u015ft\u0131rmaz, bu nedenle d\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f de\u011ferler pozitif veya negatif olabilir.<\/p>\n<p><strong>scikit-learn Uygulamas\u0131<\/strong>:<\/p>\n<pre><code class=\"language-python\">from sklearn.preprocessing import StandardScaler\nimport numpy as np\n\n<h2>\u00d6rnek veri<\/h2>\ndata = np.array([[1, 2000], [2, 3000], [3, 10000], [4, 5000]])\n\n<h2>StandardScaler \u00f6rne\u011fi olu\u015fturma<\/h2>\nscaler = StandardScaler()\n\n<h2>Veriyi d\u00f6n\u00fc\u015ft\u00fcrme<\/h2>\nscaled_data = scaler.fit_transform(data)\n\nprint(\"Orijinal Veri:\\n\", data)\nprint(\"Standard \u00d6l\u00e7eklendirilmi\u015f Veri:\\n\", scaled_data)\n<h2>\u00c7\u0131kt\u0131:<\/h2>\n<h2>Orijinal Veri:<\/h2>\n<h2>[[   1  2000]<\/h2>\n<h2>[   2  3000]<\/h2>\n<h2>[   3 10000]<\/h2>\n<h2>[   4  5000]]<\/h2>\n<h2>Standard \u00d6l\u00e7eklendirilmi\u015f Veri:<\/h2>\n<h2>[[-1.34164079 -0.83391219]<\/h2>\n<h2>[-0.4472136  -0.55594146]<\/h2>\n<h2>[ 0.4472136   1.66782439]<\/h2>\n<h2>[ 1.34164079 -0.27797073]]<\/code><\/pre>\n<\/h2>\n<h4>Robust Normalizasyon (RobustScaler)<\/h4>\n<p>RobustScaler, ayk\u0131r\u0131 de\u011ferlerin yo\u011fun oldu\u011fu veri setleri i\u00e7in tasarlanm\u0131\u015ft\u0131r. Bu y\u00f6ntem, ortalama ve standart sapma yerine medyan ve \u00e7eyreklik aral\u0131\u011f\u0131 (IQR &#8211; Interquartile Range) kullan\u0131r. IQR, \u00fc\u00e7\u00fcnc\u00fc \u00e7eyreklik (Q3) ile birinci \u00e7eyreklik (Q1) aras\u0131ndaki farkt\u0131r. Form\u00fcl\u00fc \u015fu \u015fekildedir:<\/p>\n<p>$X_{\\text{scaled}} = \\frac{X &#8211; \\text{median}}{Q3 &#8211; Q1}$<\/p>\n<p>*   <strong>Ne Zaman Kullan\u0131l\u0131r<\/strong>: Veri setinde \u00f6nemli say\u0131da ayk\u0131r\u0131 de\u011fer bulundu\u011fundan \u015f\u00fcphelenildi\u011finde ve bu ayk\u0131r\u0131 de\u011ferlerin normalizasyon s\u00fcrecini bozmas\u0131 istenmedi\u011finde tercih edilir.<br \/>\n*   <strong>Avantajlar\u0131<\/strong>:<br \/>\n    *   Ayk\u0131r\u0131 de\u011ferlere kar\u015f\u0131 son derece diren\u00e7lidir, \u00e7\u00fcnk\u00fc medyan ve IQR bu de\u011ferlerden daha az etkilenir.<br \/>\n*   <strong>Dezavantajlar\u0131<\/strong>:<br \/>\n    *   Veriyi belirli bir aral\u0131\u011fa veya belirli bir da\u011f\u0131l\u0131ma (\u00f6rn. ortalama 0, standart sapma 1) d\u00f6n\u00fc\u015ft\u00fcrmeyi garanti etmez.<\/p>\n<p><strong>scikit-learn Uygulamas\u0131<\/strong>:<\/p>\n<pre><code class=\"language-python\">from sklearn.preprocessing import RobustScaler\nimport numpy as np\n\n<h2>\u00d6rnek veri (ayk\u0131r\u0131 de\u011fer i\u00e7eriyor)<\/h2>\ndata = np.array([[1, 2000], [2, 3000], [3, 10000], [4, 5000], [100, 100000]])\n\n<h2>RobustScaler \u00f6rne\u011fi olu\u015fturma<\/h2>\nscaler = RobustScaler()\n\n<h2>Veriyi d\u00f6n\u00fc\u015ft\u00fcrme<\/h2>\nscaled_data = scaler.fit_transform(data)\n\nprint(\"Orijinal Veri (Ayk\u0131r\u0131 De\u011ferli):\\n\", data)\nprint(\"Robust \u00d6l\u00e7eklendirilmi\u015f Veri:\\n\", scaled_data)\n<h2>\u00c7\u0131kt\u0131:<\/h2>\n<h2>Orijinal Veri (Ayk\u0131r\u0131 De\u011ferli):<\/h2>\n<h2>[[     1   2000]<\/h2>\n<h2>[     2   3000]<\/h2>\n<h2>[     3  10000]<\/h2>\n<h2>[     4   5000]<\/h2>\n<h2>[   100 100000]]<\/h2>\n<h2>Robust \u00d6l\u00e7eklendirilmi\u015f Veri:<\/h2>\n<h2>[[-0.66666667 -0.2       ]<\/h2>\n<h2>[-0.33333333  0.        ]<\/h2>\n<h2>[ 0.          1.4       ]<\/h2>\n<h2>[ 0.33333333  0.4       ]<\/h2>\n<h2>[32.33333333 19.        ]]<\/code><\/pre>\n<\/h2>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc gibi, ayk\u0131r\u0131 de\u011fer olan <code>[100, 100000]<\/code> di\u011fer de\u011ferlere g\u00f6re hala olduk\u00e7a b\u00fcy\u00fck, ancak di\u011fer de\u011ferler aras\u0131ndaki ili\u015fkiler daha iyi korunmu\u015ftur.<\/p>\n<h4>Normalizasyon (Normalizer)<\/h4>\n<p><code>Normalizer<\/code> s\u0131n\u0131f\u0131, di\u011fer \u00f6l\u00e7ekleyicilerden farkl\u0131 olarak, her bir \u00f6rne\u011fi (yani her bir sat\u0131r\u0131) ba\u011f\u0131ms\u0131z olarak bir birim vekt\u00f6re d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. Bu, \u00f6zelliklerin (s\u00fctunlar\u0131n) \u00f6l\u00e7eklendirilmesi yerine, her bir veri noktas\u0131n\u0131n (sat\u0131r\u0131n) normunun 1 olmas\u0131n\u0131 sa\u011flar. \u00d6zellikle metin s\u0131n\u0131fland\u0131rmas\u0131 veya k\u00fcmeleme gibi uygulamalarda, \u00f6zellik vekt\u00f6rlerinin y\u00f6n\u00fc (benzerli\u011fi) b\u00fcy\u00fckl\u00fc\u011f\u00fcnden daha \u00f6nemli oldu\u011funda kullan\u0131l\u0131r.<\/p>\n<p>Form\u00fcl\u00fc (L2 normu i\u00e7in):<\/p>\n<p>$X_{\\text{scaled}} = \\frac{X}{||X||_2}$<\/p>\n<p>Burada $||X||_2$ vekt\u00f6r\u00fcn \u00d6klid (L2) normudur.<\/p>\n<p>*   <strong>Ne Zaman Kullan\u0131l\u0131r<\/strong>: Metin madencili\u011fi (TF-IDF vekt\u00f6rleri), k-means k\u00fcmelemesi veya kosin\u00fcs benzerli\u011fi gibi mesafe \u00f6l\u00e7\u00fctlerinin kullan\u0131ld\u0131\u011f\u0131 durumlarda faydal\u0131d\u0131r.<br \/>\n*   <strong>Avantajlar\u0131<\/strong>:<br \/>\n    *   \u00d6zellikler aras\u0131ndaki a\u00e7\u0131sal ili\u015fkileri korur.<br \/>\n    *   Verinin yo\u011funlu\u011funu veya b\u00fcy\u00fckl\u00fc\u011f\u00fcn\u00fc dikkate almaz, sadece y\u00f6n\u00fcn\u00fc \u00f6nemser.<br \/>\n*   <strong>Dezavantajlar\u0131<\/strong>:<br \/>\n    *   \u00d6zelliklerin tek tek \u00f6l\u00e7eklerini de\u011fi\u015ftirmez, bu nedenle di\u011fer normalizasyon y\u00f6ntemleriyle ayn\u0131 ama\u00e7lara hizmet etmez.<br \/>\n    *   S\u0131f\u0131r vekt\u00f6rler i\u00e7in tan\u0131ms\u0131zd\u0131r (b\u00f6lme s\u0131f\u0131r olur).<\/p>\n<p><strong>scikit-learn Uygulamas\u0131<\/strong>:<\/p>\n<pre><code class=\"language-python\">from sklearn.preprocessing import Normalizer\nimport numpy as np\n\n<h2>\u00d6rnek veri (her sat\u0131r bir \u00f6rnek)<\/h2>\ndata = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])\n\n<h2>Normalizer \u00f6rne\u011fi olu\u015fturma (varsay\u0131lan L2 normu)<\/h2>\nnormalizer = Normalizer()\n\n<h2>Veriyi d\u00f6n\u00fc\u015ft\u00fcrme<\/h2>\nnormalized_data = normalizer.fit_transform(data)\n\nprint(\"Orijinal Veri:\\n\", data)\nprint(\"Normalizer ile D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veri:\\n\", normalized_data)\n<h2>Her sat\u0131r\u0131n L2 normunu kontrol edelim<\/h2>\nprint(\"D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Verinin Sat\u0131r Normlar\u0131:\\n\", np.linalg.norm(normalized_data, axis=1))\n<h2>\u00c7\u0131kt\u0131:<\/h2>\n<h2>Orijinal Veri:<\/h2>\n<h2>[[1 2 3]<\/h2>\n<h2>[4 5 6]<\/h2>\n<h2>[7 8 9]]<\/h2>\n<h2>Normalizer ile D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veri:<\/h2>\n<h2>[[0.26726124 0.53452248 0.80178373]<\/h2>\n<h2>[0.45584231 0.56980289 0.68376346]<\/h2>\n<h2>[0.40000000 0.45714286 0.51428571]]<\/h2>\n<h2>D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Verinin Sat\u0131r Normlar\u0131:<\/h2>\n<h2>[1. 1. 1.]<\/code><\/pre>\n<\/h2>\n<p><code>norm<\/code> parametresi ile &#8216;l1&#8217;, &#8216;l2&#8217; veya &#8216;max&#8217; normlar\u0131n\u0131 belirleyebilirsiniz.<\/p>\n<h3>Pratik Uygulama ve Kod \u00d6rnekleri<\/h3>\n<p>\u015eimdi, farkl\u0131 normalizasyon y\u00f6ntemlerinin veri \u00fczerindeki etkisini g\u00f6rselle\u015ftirmek ve ger\u00e7ek bir senaryoda nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 g\u00f6stermek i\u00e7in daha kapsaml\u0131 bir \u00f6rnek yapal\u0131m.<\/p>\n<pre><code class=\"language-python\">import numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nfrom sklearn.preprocessing import MinMaxScaler, StandardScaler, RobustScaler, Normalizer\nfrom sklearn.datasets import make_blobs\nfrom sklearn.model_selection import train_test_split\n\n<h2>1. Sentetik Veri Olu\u015fturma<\/h2>\n<h2>\u0130ki \u00f6zellikli ve farkl\u0131 \u00f6l\u00e7eklerde bir veri seti olu\u015ftural\u0131m<\/h2>\nX, _ = make_blobs(n_samples=100, centers=1, random_state=42, cluster_std=3.0)\n<h2>\u00d6zellik 1'i k\u00fc\u00e7\u00fck bir aral\u0131\u011fa, \u00d6zellik 2'yi b\u00fcy\u00fck bir aral\u0131\u011fa ta\u015f\u0131yal\u0131m<\/h2>\nX[:, 0] = X[:, 0] * 2 + 5  # \u00d6rne\u011fin ya\u015f gibi\nX[:, 1] = X[:, 1] * 1000 + 10000 # \u00d6rne\u011fin gelir gibi\n\n<h2>Ayk\u0131r\u0131 de\u011fer ekleyelim<\/h2>\nX = np.append(X, [[50, 200000]], axis=0) # A\u015f\u0131r\u0131 ya\u015f ve gelir\nX = np.append(X, [[-10, -5000]], axis=0) # Negatif ya\u015f ve gelir (mant\u0131ks\u0131z ama \u00f6l\u00e7ekleyiciyi test etmek i\u00e7in)\n\n<h2>E\u011fitim ve Test Setlerine Ay\u0131rma (Veri S\u0131z\u0131nt\u0131s\u0131n\u0131 \u00d6nlemek \u0130\u00e7in \u00d6nemli!)<\/h2>\nX_train, X_test = train_test_split(X, test_size=0.3, random_state=42)\n\nprint(\"Orijinal E\u011fitim Verisi Boyutu:\", X_train.shape)\nprint(\"Orijinal Test Verisi Boyutu:\", X_test.shape)\nprint(\"Orijinal E\u011fitim Verisi \u0130lk 5 Sat\u0131r:\\n\", X_train[:5])\n\n<h2>2. G\u00f6rselle\u015ftirme Fonksiyonu<\/h2>\ndef plot_data(original_data, scaled_data_dict, title_prefix=\"\"):\n    fig, axes = plt.subplots(1, len(scaled_data_dict) + 1, figsize=(20, 5))\n    \n    # Orijinal Veri\n    axes[0].scatter(original_data[:, 0], original_data[:, 1], alpha=0.7)\n    axes[0].set_title(f\"{title_prefix} Orijinal Veri\")\n    axes[0].set_xlabel(\"\u00d6zellik 1\")\n    axes[0].set_ylabel(\"\u00d6zellik 2\")\n    axes[0].set_xlim(np.min(X[:,0])-5, np.max(X[:,0])+5)\n    axes[0].set_ylim(np.min(X[:,1])-1000, np.max(X[:,1])+1000)\n\n    for i, (name, data) in enumerate(scaled_data_dict.items()):\n        axes[i+1].scatter(data[:, 0], data[:, 1], alpha=0.7)\n        axes[i+1].set_title(f\"{title_prefix} {name}\")\n        axes[i+1].set_xlabel(\"\u00d6zellik 1\")\n        axes[i+1].set_ylabel(\"\u00d6zellik 2\")\n        # \u00d6l\u00e7eklenmi\u015f veriler i\u00e7in dinamik eksen s\u0131n\u0131rlar\u0131 ayarlayal\u0131m\n        axes[i+1].set_xlim(np.min(data[:,0])-0.5, np.max(data[:,0])+0.5)\n        axes[i+1].set_ylim(np.min(data[:,1])-0.5, np.max(data[:,1])+0.5)\n    \n    plt.tight_layout()\n    plt.show()\n\n<h2>3. Her Bir \u00d6l\u00e7ekleyiciyi Uygulama<\/h2>\n\n<h2>MinMaxScaler<\/h2>\nscaler_minmax = MinMaxScaler()\nX_train_minmax = scaler_minmax.fit_transform(X_train)\nX_test_minmax = scaler_minmax.transform(X_test) # Test verisi sadece transform edilir!\n\n<h2>StandardScaler<\/h2>\nscaler_standard = StandardScaler()\nX_train_standard = scaler_standard.fit_transform(X_train)\nX_test_standard = scaler_standard.transform(X_test)\n\n<h2>RobustScaler<\/h2>\nscaler_robust = RobustScaler()\nX_train_robust = scaler_robust.fit_transform(X_train)\nX_test_robust = scaler_robust.transform(X_test)\n\n<h2>Normalizer (fit() metodu yoktur, do\u011frudan transform uygulan\u0131r)<\/h2>\n<h2>Normalizer'\u0131n di\u011ferlerinden farkl\u0131 \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 unutmay\u0131n, sat\u0131r baz\u0131nda normalizasyon yapar.<\/h2>\n<h2>Bu \u00f6rnekte g\u00f6rselle\u015ftirmesi di\u011ferleri gibi do\u011frudan kar\u015f\u0131la\u015ft\u0131r\u0131lamaz,<\/h2>\n<h2>\u00e7\u00fcnk\u00fc Normalizer \u00f6zelliklerin da\u011f\u0131l\u0131m\u0131n\u0131 s\u00fctun baz\u0131nda de\u011fil, her bir \u00f6rne\u011fin kendi i\u00e7indeki<\/h2>\n<h2>\u00f6zellik de\u011ferlerinin oran\u0131n\u0131 de\u011fi\u015ftirir.<\/h2>\n<h2>Bu nedenle Normalizer'\u0131 bu g\u00f6rselle\u015ftirme kar\u015f\u0131la\u015ft\u0131rmas\u0131ndan \u00e7\u0131karal\u0131m veya ayr\u0131 ele alal\u0131m.<\/h2>\n<h2>X_train_normalized = Normalizer().fit_transform(X_train)<\/h2>\n<h2>X_test_normalized = Normalizer().transform(X_test)<\/h2>\n\n\n<h2>G\u00f6rselle\u015ftirme i\u00e7in t\u00fcm \u00f6l\u00e7eklendirilmi\u015f e\u011fitim verilerini bir s\u00f6zl\u00fc\u011fe toplayal\u0131m<\/h2>\nscaled_train_data_dict = {\n    \"MinMaxScaler\": X_train_minmax,\n    \"StandardScaler\": X_train_standard,\n    \"RobustScaler\": X_train_robust\n}\n\nplot_data(X_train, scaled_train_data_dict, title_prefix=\"E\u011fitim Verisi -\")\n\n<h2>Test verisinin de d\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f halini g\u00f6rselle\u015ftirelim (e\u011fitimden \u00f6\u011frenilen scaler ile)<\/h2>\nscaled_test_data_dict = {\n    \"MinMaxScaler\": X_test_minmax,\n    \"StandardScaler\": X_test_standard,\n    \"RobustScaler\": X_test_robust\n}\n\nplot_data(X_test, scaled_test_data_dict, title_prefix=\"Test Verisi -\")\n\n<h2>Normalizer'\u0131 ayr\u0131 bir \u00f6rnekle g\u00f6sterelim<\/h2>\n<h2>Normalizer genellikle bir Pipeline i\u00e7inde veya belirli bir ad\u0131mda kullan\u0131l\u0131r.<\/h2>\n<h2>Burada sadece transform edilmi\u015f halini g\u00f6sterebiliriz.<\/h2>\nX_normalized_example = Normalizer().fit_transform(X[:5]) # \u0130lk 5 \u00f6rnek \u00fczerinden\nprint(\"\\nNormalizer ile D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f \u0130lk 5 \u00d6rnek:\\n\", X_normalized_example)<\/code><\/pre>\n<p>Bu kod \u00f6rne\u011fi, sentetik bir veri seti olu\u015fturur, buna ayk\u0131r\u0131 de\u011ferler ekler ve ard\u0131ndan <code>MinMaxScaler<\/code>, <code>StandardScaler<\/code> ve <code>RobustScaler<\/code>&#8216;\u0131 hem e\u011fitim hem de test verilerine uygular. G\u00f6rselle\u015ftirmeler, her bir \u00f6l\u00e7ekleyicinin verinin da\u011f\u0131l\u0131m\u0131n\u0131 ve aral\u0131\u011f\u0131n\u0131 nas\u0131l de\u011fi\u015ftirdi\u011fini a\u00e7\u0131k\u00e7a g\u00f6sterir. \u00d6zellikle ayk\u0131r\u0131 de\u011ferlerin <code>MinMaxScaler<\/code> ve <code>StandardScaler<\/code> \u00fczerindeki etkisini, <code>RobustScaler<\/code>&#8216;\u0131n ise bu etkiyi nas\u0131l daha iyi y\u00f6netti\u011fini g\u00f6rebilirsiniz. <code>Normalizer<\/code> ise sat\u0131r baz\u0131nda \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in bu t\u00fcr bir g\u00f6rselle\u015ftirmede di\u011ferlerinden farkl\u0131 bir etki g\u00f6sterir.<\/p>\n<p>### Hangi Normalizasyon Y\u00f6ntemi Ne Zaman Kullan\u0131lmal\u0131?<\/h3>\n<p>Do\u011fru normalizasyon y\u00f6ntemini se\u00e7mek, veri setinin \u00f6zelliklerine ve kullan\u0131lacak makine \u00f6\u011frenimi algoritmas\u0131na ba\u011fl\u0131d\u0131r. \u0130\u015fte genel bir rehber:<\/p>\n<p>*   <strong>MinMaxScaler (Min-Max Normalizasyonu)<\/strong>:<br \/>\n    *   <strong>Ne Zaman<\/strong>: Verilerin belirli bir aral\u0131kta (\u00f6rn. [0, 1]) olmas\u0131n\u0131n kesinlikle gerekli oldu\u011fu durumlarda (\u00f6rn. g\u00f6r\u00fcnt\u00fc i\u015fleme, yapay sinir a\u011flar\u0131n\u0131n sigmoid veya tanh aktivasyon fonksiyonlar\u0131 kullan\u0131ld\u0131\u011f\u0131 katmanlar\u0131).<br \/>\n    *   <strong>Dikkat<\/strong>: Ayk\u0131r\u0131 de\u011ferlere kar\u015f\u0131 \u00e7ok hassast\u0131r. Ayk\u0131r\u0131 de\u011ferler varsa, veriyi \u00e7ok k\u00fc\u00e7\u00fck bir aral\u0131\u011fa s\u0131k\u0131\u015ft\u0131rabilir ve bilgi kayb\u0131na yol a\u00e7abilir. Veri da\u011f\u0131l\u0131m\u0131n\u0131n bir Gauss da\u011f\u0131l\u0131m\u0131na uymad\u0131\u011f\u0131 durumlarda da kullan\u0131labilir.<\/p>\n<p>*   <strong>StandardScaler (Z-Score Normalizasyonu)<\/strong>:<br \/>\n    *   <strong>Ne Zaman<\/strong>: \u00c7o\u011fu makine \u00f6\u011frenimi algoritmas\u0131 i\u00e7in iyi bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. \u00d6zellikle Lineer Regresyon, Lojistik Regresyon, SVM, PCA ve K-Means gibi algoritmalar i\u00e7in \u00f6nerilir. Bu algoritmalar genellikle ortalama s\u0131f\u0131r ve standart sapma bir olan verilere daha iyi yan\u0131t verir.<br \/>\n    *   <strong>Dikkat<\/strong>: Ayk\u0131r\u0131 de\u011ferlerden etkilenir (\u00e7\u00fcnk\u00fc ortalama ve standart sapmay\u0131 kullan\u0131r). Ancak Min-Max&#8217;e g\u00f6re daha az hassast\u0131r ve ayk\u0131r\u0131 de\u011ferleri tamamen ezmez. Veri da\u011f\u0131l\u0131m\u0131n\u0131n yakla\u015f\u0131k olarak Gauss da\u011f\u0131l\u0131m\u0131na benzedi\u011fi durumlarda daha iyi performans g\u00f6sterir.<\/p>\n<p>*   <strong>RobustScaler (Sa\u011flam \u00d6l\u00e7ekleyici)<\/strong>:<br \/>\n    *   <strong>Ne Zaman<\/strong>: Veri setinde bilinen veya \u015f\u00fcphelenilen ayk\u0131r\u0131 de\u011ferlerin \u00e7ok oldu\u011fu durumlarda tercih edilmelidir. Medyan ve \u00e7eyreklik aral\u0131\u011f\u0131 kulland\u0131\u011f\u0131 i\u00e7in ayk\u0131r\u0131 de\u011ferlere kar\u015f\u0131 \u00e7ok daha diren\u00e7lidir.<br \/>\n    *   <strong>Dikkat<\/strong>: Veriyi belirli bir aral\u0131\u011fa veya ortalama s\u0131f\u0131r, standart sapma bir da\u011f\u0131l\u0131ma d\u00f6n\u00fc\u015ft\u00fcrmez. Bu nedenle, belirli aral\u0131k gerektiren algoritmalar i\u00e7in ek i\u015flem gerekebilir.<\/p>\n<p>*   <strong>Normalizer (Birime Normalizasyon)<\/strong>:<br \/>\n    *   <strong>Ne Zaman<\/strong>: Her bir \u00f6rne\u011fin (sat\u0131r\u0131n) vekt\u00f6r b\u00fcy\u00fckl\u00fc\u011f\u00fcn\u00fcn (normunun) \u00f6nemli olmad\u0131\u011f\u0131, ancak vekt\u00f6r\u00fcn y\u00f6n\u00fcn\u00fcn veya \u00f6zellikler aras\u0131ndaki oranlar\u0131n \u00f6nemli oldu\u011fu \u00f6zel durumlarda kullan\u0131l\u0131r. Metin s\u0131n\u0131fland\u0131rmas\u0131nda TF-IDF vekt\u00f6rlerinin \u00f6n i\u015flenmesi, veya kosin\u00fcs benzerli\u011fi kullan\u0131lan algoritmalar i\u00e7in idealdir.<br \/>\n    *   <strong>Dikkat<\/strong>: \u00d6zelliklerin da\u011f\u0131l\u0131m\u0131n\u0131 s\u00fctun baz\u0131nda de\u011fi\u015ftirmez, sadece her bir \u00f6rne\u011fi birim vekt\u00f6re d\u00f6n\u00fc\u015ft\u00fcr\u00fcr.<\/p>\n<p>*   <strong>Ne Zaman Normalizasyon Gerekli De\u011fildir?<\/strong>:<br \/>\n    *   <strong>A\u011fa\u00e7 Tabanl\u0131 Algoritmalar<\/strong>: Karar A\u011fa\u00e7lar\u0131, Rastgele Ormanlar (Random Forests), Gradyan Y\u00fckseltme Makineleri (Gradient Boosting Machines &#8211; XGBoost, LightGBM) gibi algoritmalar, \u00f6zelliklerin \u00f6l\u00e7e\u011fine duyarl\u0131 de\u011fildir. Bu algoritmalar, \u00f6zellik de\u011ferlerinin s\u0131ralamas\u0131na veya e\u015fik de\u011ferlerine dayan\u0131r, bu nedenle normalizasyon genellikle performanslar\u0131n\u0131 art\u0131rmaz ve hatta bazen gereksiz karma\u015f\u0131kl\u0131k ekleyebilir.<\/p>\n<p>\u00d6zetle, ba\u015flang\u0131\u00e7ta <code>StandardScaler<\/code> \u00e7o\u011fu durum i\u00e7in iyi bir se\u00e7imdir. E\u011fer veri setinizde belirgin ayk\u0131r\u0131 de\u011ferler varsa <code>RobustScaler<\/code>&#8216;\u0131 deneyin. E\u011fer belirli bir aral\u0131kta \u00e7\u0131kt\u0131ya ihtiyac\u0131n\u0131z varsa veya yapay sinir a\u011flar\u0131 kullan\u0131yorsan\u0131z <code>MinMaxScaler<\/code>&#8216;\u0131 tercih edin. <code>Normalizer<\/code> ise \u00e7ok spesifik kullan\u0131m durumlar\u0131 i\u00e7in ayr\u0131lm\u0131\u015ft\u0131r.<\/p>\n<h3>Normalizasyonun S\u0131n\u0131rlamalar\u0131 ve Dikkat Edilmesi Gerekenler<\/h3>\n<p>Normalizasyon g\u00fc\u00e7l\u00fc bir \u00f6n i\u015fleme tekni\u011fi olsa da, uygulan\u0131rken dikkat edilmesi gereken baz\u0131 \u00f6nemli noktalar vard\u0131r:<\/p>\n<h4>Veri S\u0131z\u0131nt\u0131s\u0131 (Data Leakage)<\/h4>\n<p>Bu, normalizasyonun en kritik hususlar\u0131ndan biridir. Makine \u00f6\u011frenimi modelinizin ger\u00e7ek d\u00fcnya performans\u0131n\u0131 do\u011fru bir \u015fekilde tahmin etmek i\u00e7in, modelin e\u011fitim verilerinden test verilerine &#8220;s\u0131z\u0131nt\u0131&#8221; olmamas\u0131n\u0131 sa\u011flamak \u00e7ok \u00f6nemlidir. Normalizasyon ba\u011flam\u0131nda veri s\u0131z\u0131nt\u0131s\u0131, test veri setindeki bilgilerin normalizasyon parametrelerini (ortalama, standart sapma, min, max vb.) \u00f6\u011frenmek i\u00e7in kullan\u0131lmas\u0131 durumunda meydana gelir.<\/p>\n<p><strong>Do\u011fru Yakla\u015f\u0131m<\/strong>:<br \/>\n1.  Veri setinizi e\u011fitim (train) ve test (test) olarak ay\u0131r\u0131n.<br \/>\n2.  Normalle\u015ftiriciyi (scaler) <strong>yaln\u0131zca e\u011fitim verisi \u00fczerinde<\/strong> <code>fit()<\/code> edin. Bu, normalle\u015ftiricinin parametreleri (\u00f6rn. e\u011fitim verisinin ortalamas\u0131 ve standart sapmas\u0131) e\u011fitim verisinden \u00f6\u011frenmesini sa\u011flar.<br \/>\n3.  \u00d6\u011frenilen normalle\u015ftiriciyi kullanarak hem e\u011fitim hem de test verisini <code>transform()<\/code> edin. Test verisi \u00fczerinde asla <code>fit()<\/code> \u00e7a\u011f\u0131rmay\u0131n.<\/p>\n<pre><code class=\"language-python\">from sklearn.model_selection import train_test_split\nfrom sklearn.preprocessing import StandardScaler\nimport numpy as np\n\nX = np.random.rand(100, 2) * 100 # \u00d6rnek veri\nX_train, X_test = train_test_split(X, test_size=0.2, random_state=42)\n\nscaler = StandardScaler()\n\n<h2>DO\u011eRU: Sadece e\u011fitim verisi \u00fczerinde fit et ve transform et<\/h2>\nX_train_scaled = scaler.fit_transform(X_train)\n\n<h2>DO\u011eRU: Test verisini, e\u011fitim verisinden \u00f6\u011frenilen scaler ile transform et<\/h2>\nX_test_scaled = scaler.transform(X_test)\n\n<h2>YANLI\u015e: Test verisi \u00fczerinde fit_transform \u00e7a\u011f\u0131rmak veri s\u0131z\u0131nt\u0131s\u0131na neden olur<\/h2>\n<h2>scaler_wrong = StandardScaler()<\/h2>\n<h2>X_test_scaled_wrong = scaler_wrong.fit_transform(X_test)<\/code><\/pre>\n<\/h2>\n<p>Test verisi \u00fczerinde <code>fit()<\/code> \u00e7a\u011f\u0131rmak, modelin test verisinin da\u011f\u0131l\u0131m\u0131 hakk\u0131nda bilgi edinmesine neden olur ve bu da modelin genellenebilirlik performans\u0131n\u0131 abartmas\u0131na yol a\u00e7ar.<\/p>\n<h4>Ayk\u0131r\u0131 De\u011ferlerin Etkisi<\/h4>\n<p>Daha \u00f6nce de belirtildi\u011fi gibi, Min-Max ve Z-Score normalizasyonu ayk\u0131r\u0131 de\u011ferlere kar\u015f\u0131 hassast\u0131r. Ayk\u0131r\u0131 de\u011ferler, minimum\/maksimum de\u011ferleri veya ortalama\/standart sapmay\u0131 a\u015f\u0131r\u0131 derecede etkileyerek, di\u011fer &#8220;normal&#8221; verilerin \u00e7ok dar bir aral\u0131\u011fa s\u0131k\u0131\u015fmas\u0131na veya da\u011f\u0131l\u0131m\u0131n\u0131n bozulmas\u0131na neden olabilir. E\u011fer ayk\u0131r\u0131 de\u011ferler veri setinizde \u00f6nemli bir sorun te\u015fkil ediyorsa, <code>RobustScaler<\/code> kullanmay\u0131 veya ayk\u0131r\u0131 de\u011ferleri normalizasyondan \u00f6nce ele almay\u0131 (\u00f6rn. k\u0131rpma, d\u00f6n\u00fc\u015ft\u00fcrme) d\u00fc\u015f\u00fcnmelisiniz.<\/p>\n<h4>Da\u011f\u0131l\u0131m\u0131n De\u011fi\u015fimi<\/h4>\n<p>Normalizasyon y\u00f6ntemleri, verinin orijinal da\u011f\u0131l\u0131m\u0131n\u0131n \u015feklini koruyabilir (MinMaxScaler, StandardScaler) veya de\u011fi\u015ftirebilir (Normalizer). Bu, baz\u0131 analizler veya modelleme yakla\u015f\u0131mlar\u0131 i\u00e7in \u00f6nemli olabilir. \u00d6rne\u011fin, e\u011fer bir model verinin normal da\u011f\u0131l\u0131m\u0131n\u0131 varsay\u0131yorsa, <code>StandardScaler<\/code> bu varsay\u0131ma en uygun d\u00f6n\u00fc\u015ft\u00fcrmeyi sa\u011flar. Ancak, normalizasyon veriyi ger\u00e7ekten normal da\u011f\u0131l\u0131ma d\u00f6n\u00fc\u015ft\u00fcrmez; sadece ortalamay\u0131 ve standart sapmay\u0131 ayarlar. Veriyi bir Gauss da\u011f\u0131l\u0131m\u0131na daha yak\u0131n hale getirmek i\u00e7in logaritmik d\u00f6n\u00fc\u015f\u00fcm veya Box-Cox d\u00f6n\u00fc\u015f\u00fcm\u00fc gibi di\u011fer teknikler gerekebilir.<\/p>\n<h4>Her Zaman Gerekli mi?<\/h4>\n<p>Her makine \u00f6\u011frenimi projesinde normalizasyon yapmak zorunlu de\u011fildir. Karar a\u011fa\u00e7lar\u0131, rastgele ormanlar gibi a\u011fa\u00e7 tabanl\u0131 algoritmalar ve Naive Bayes gibi baz\u0131 algoritmalar, \u00f6zelliklerin \u00f6l\u00e7e\u011fine duyarl\u0131 de\u011fildir. Bu algoritmalar, \u00f6zellik de\u011ferlerinin mutlak b\u00fcy\u00fckl\u00fcklerinden ziyade s\u0131ralamalar\u0131na veya b\u00f6l\u00fcnme noktalar\u0131na odaklan\u0131r. Bu durumlarda normalizasyon yapmak, hesaplama maliyetini art\u0131rmaktan ba\u015fka bir i\u015fe yaramayabilir. Ancak, \u015f\u00fcpheniz varsa, normalizasyonun model performans\u0131n\u0131 genellikle iyile\u015ftirdi\u011fini veya en az\u0131ndan k\u00f6t\u00fcle\u015ftirmedi\u011fini unutmay\u0131n.<\/p>\n<h4>Boru Hatt\u0131 (Pipeline) Kullan\u0131m\u0131<\/h4>\n<p>scikit-learn&#8217;in <code>Pipeline<\/code> \u00f6zelli\u011fi, \u00f6n i\u015fleme ad\u0131mlar\u0131n\u0131 (normalizasyon dahil) ve makine \u00f6\u011frenimi modelini bir araya getirmenin en iyi yoludur. Bu, veri s\u0131z\u0131nt\u0131s\u0131n\u0131 otomatik olarak \u00f6nler ve kodunuzu daha d\u00fczenli ve yeniden kullan\u0131labilir hale getirir.<\/p>\n<pre><code class=\"language-python\">from sklearn.pipeline import Pipeline\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.datasets import make_classification\n\n<h2>\u00d6rnek veri<\/h2>\nX, y = make_classification(n_samples=1000, n_features=10, random_state=42)\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)\n\n<h2>Pipeline olu\u015fturma<\/h2>\npipeline = Pipeline([\n    ('scaler', StandardScaler()),  # \u0130lk ad\u0131m: StandardScaler\n    ('classifier', LogisticRegression()) # \u0130kinci ad\u0131m: Lojistik Regresyon\n])\n\n<h2>Pipeline'\u0131 e\u011fitim verisi \u00fczerinde fit etme<\/h2>\n<h2>Bu, \u00f6nce scaler'\u0131 fit eder, sonra veriyi transform eder ve ard\u0131ndan s\u0131n\u0131fland\u0131r\u0131c\u0131y\u0131 e\u011fitir.<\/h2>\npipeline.fit(X_train, y_train)\n\n<h2>Test verisi \u00fczerinde tahmin yapma<\/h2>\n<h2>Bu, \u00f6nce scaler'\u0131 (e\u011fitimden \u00f6\u011frenilen parametrelerle) transform eder, sonra tahmin yapar.<\/h2>\ny_pred = pipeline.predict(X_test)\n\nprint(\"Pipeline ile Model Do\u011frulu\u011fu:\", pipeline.score(X_test, y_test))<\/code><\/pre>\n<p>Bu <code>Pipeline<\/code> yakla\u015f\u0131m\u0131, normalizasyonun yaln\u0131zca e\u011fitim verisi \u00fczerinde <code>fit<\/code> edilmesini ve test verisi \u00fczerinde <code>transform<\/code> edilmesini otomatik olarak garanti eder, b\u00f6ylece veri s\u0131z\u0131nt\u0131s\u0131 riskini ortadan kald\u0131r\u0131r.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Veri normalizasyonu, makine \u00f6\u011frenimi i\u015f ak\u0131\u015f\u0131n\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r ve model performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde etkileyebilir. scikit-learn k\u00fct\u00fcphanesi, farkl\u0131 normalizasyon ihtiya\u00e7lar\u0131na y\u00f6nelik \u00e7e\u015fitli g\u00fc\u00e7l\u00fc ve kullan\u0131m\u0131 kolay ara\u00e7lar sunar. <code>MinMaxScaler<\/code>, <code>StandardScaler<\/code>, <code>RobustScaler<\/code> ve <code>Normalizer<\/code> gibi y\u00f6ntemler, veri setinizin \u00f6zelliklerine ve kulland\u0131\u011f\u0131n\u0131z makine \u00f6\u011frenimi algoritmas\u0131na ba\u011fl\u0131 olarak farkl\u0131 senaryolarda avantajlar sunar.<\/p>\n<p>Do\u011fru normalizasyon y\u00f6ntemini se\u00e7mek, verinizi anlamakla ba\u015flar: da\u011f\u0131l\u0131m\u0131 nedir, ayk\u0131r\u0131 de\u011ferler var m\u0131 ve hangi makine \u00f6\u011frenimi algoritmas\u0131n\u0131 kullanmay\u0131 planl\u0131yorsunuz? Her zaman veri s\u0131z\u0131nt\u0131s\u0131n\u0131 \u00f6nlemek i\u00e7in normalle\u015ftiriciyi yaln\u0131zca e\u011fitim verisi \u00fczerinde <code>fit<\/code> etmeyi ve ard\u0131ndan hem e\u011fitim hem de test verilerini <code>transform<\/code> etmeyi unutmay\u0131n. scikit-learn&#8217;in <code>Pipeline<\/code> \u00f6zelli\u011fi, bu s\u00fcreci otomatikle\u015ftirmek ve kodunuzu daha sa\u011flam hale getirmek i\u00e7in m\u00fckemmel bir yoldur.<\/p>\n<p>Normalizasyon, bir &#8220;herkese uyan tek beden&#8221; \u00e7\u00f6z\u00fcm\u00fc de\u011fildir. Veri bilimcileri ve makine \u00f6\u011frenimi m\u00fchendisleri i\u00e7in, farkl\u0131 y\u00f6ntemleri denemek, sonu\u00e7lar\u0131 analiz etmek ve en uygun yakla\u015f\u0131m\u0131 bulmak \u00f6nemlidir. Bu makalede sunulan bilgiler ve kod \u00f6rnekleri, bu ke\u015fif yolculu\u011funuzda size sa\u011flam bir ba\u015flang\u0131\u00e7 noktas\u0131 sa\u011flayacakt\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Veri Normalizasyonu ve scikit-learn ile Uygulamalar\u0131\nMakine \u00f6\u011frenimi projelerinde veri \u00f6n i\u015fleme, modelin performans\u0131 ve genellenebilirli\u011fi \u00fc","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-31427","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>Veri Normalizasyonu ve scikit-learn ile Uygulamalar\u0131 - 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\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Veri Normalizasyonu ve scikit-learn ile Uygulamalar\u0131\" \/>\n<meta property=\"og:description\" content=\"Veri Normalizasyonu ve scikit-learn ile Uygulamalar\u0131 Makine \u00f6\u011frenimi projelerinde veri \u00f6n i\u015fleme, modelin performans\u0131 ve genellenebilirli\u011fi \u00fc\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-09T18:41:26+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\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Veri Normalizasyonu ve scikit-learn ile Uygulamalar\u0131\",\"datePublished\":\"2025-10-09T18:41:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/\"},\"wordCount\":3031,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/\",\"name\":\"Veri Normalizasyonu ve scikit-learn ile Uygulamalar\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-09T18:41:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Veri Normalizasyonu ve scikit-learn ile Uygulamalar\u0131\"}]},{\"@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":"Veri Normalizasyonu ve scikit-learn ile Uygulamalar\u0131 - 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\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/","og_locale":"tr_TR","og_type":"article","og_title":"Veri Normalizasyonu ve scikit-learn ile Uygulamalar\u0131","og_description":"Veri Normalizasyonu ve scikit-learn ile Uygulamalar\u0131 Makine \u00f6\u011frenimi projelerinde veri \u00f6n i\u015fleme, modelin performans\u0131 ve genellenebilirli\u011fi \u00fc","og_url":"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-09T18:41:26+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\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Veri Normalizasyonu ve scikit-learn ile Uygulamalar\u0131","datePublished":"2025-10-09T18:41:26+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/"},"wordCount":3031,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/","url":"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/","name":"Veri Normalizasyonu ve scikit-learn ile Uygulamalar\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-09T18:41:26+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/veri-normalizasyonu-ve-scikit-learn-ile-uygulamalari\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Veri Normalizasyonu ve scikit-learn ile Uygulamalar\u0131"}]},{"@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\/31427","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=31427"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31427\/revisions"}],"predecessor-version":[{"id":31428,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31427\/revisions\/31428"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31427"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31427"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}