{"id":37304,"date":"2025-12-30T06:40:44","date_gmt":"2025-12-30T03:40:44","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37304"},"modified":"2025-12-30T06:40:44","modified_gmt":"2025-12-30T03:40:44","slug":"pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/","title":{"rendered":"Python&#8217;da Kay\u0131p Fonksiyonlar\u0131: Kolay Uygulama ve Derinlemesine Bak\u0131\u015f"},"content":{"rendered":"<p><body><\/p>\n<h2>Python&#8217;da Kay\u0131p Fonksiyonlar\u0131: Kolay Uygulama ve Derinlemesine Bak\u0131\u015f<\/h2>\n<p>Makine \u00f6\u011frenimi ve derin \u00f6\u011frenme modellerinin geli\u015ftirilmesinde, bir modelin ne kadar iyi performans g\u00f6sterdi\u011fini \u00f6l\u00e7mek ve bu performans\u0131 optimize etmek i\u00e7in kritik bir bile\u015fen olan &#8220;kay\u0131p fonksiyonlar\u0131&#8221; (loss functions) merkezi bir rol oynar. Kay\u0131p fonksiyonu, modelin tahminleri ile ger\u00e7ek de\u011ferler aras\u0131ndaki fark\u0131 nicel olarak ifade eden bir \u00f6l\u00e7\u00fctt\u00fcr. Modelin amac\u0131, bu kay\u0131p fonksiyonunun de\u011ferini minimize ederek en do\u011fru tahminleri yapmay\u0131 \u00f6\u011frenmektir. Python, zengin k\u00fct\u00fcphane ekosistemi sayesinde kay\u0131p fonksiyonlar\u0131n\u0131 kolayca uygulayabilece\u011finiz ve deneyebilece\u011finiz g\u00fc\u00e7l\u00fc bir platform sunar. Bu makalede, kay\u0131p fonksiyonlar\u0131n\u0131n temel prensiplerini, farkl\u0131 t\u00fcrlerini, kullan\u0131m alanlar\u0131n\u0131 ve Python ile nas\u0131l kolayca uygulanabilece\u011fini derinlemesine inceleyece\u011fiz.<\/p>\n<h3>Kay\u0131p Fonksiyonlar\u0131n\u0131n Temel Kavramlar\u0131<\/h3>\n<p>Makine \u00f6\u011frenimi ba\u011flam\u0131nda, bir modelin \u00f6\u011frenme s\u00fcreci genellikle bir optimizasyon problemine indirgenir. Bu optimizasyon probleminin kalbinde, modelin tahminlerinin ne kadar yanl\u0131\u015f oldu\u011funu \u00f6l\u00e7en bir metrik bulunur: kay\u0131p fonksiyonu.<\/p>\n<h4>Kay\u0131p Fonksiyonu Nedir?<\/h4>\n<p>Kay\u0131p fonksiyonu (Loss Function), bir tek veri noktas\u0131 i\u00e7in modelin tahmininin ne kadar hatal\u0131 oldu\u011funu \u00f6l\u00e7en bir fonksiyondur. Genellikle $L(y, \\hat{y})$ \u015feklinde g\u00f6sterilir; burada $y$ ger\u00e7ek de\u011fer (etiket) ve $\\hat{y}$ modelin tahmini de\u011feridir. Kay\u0131p fonksiyonu, modelin e\u011fitildi\u011fi her iterasyonda hesaplan\u0131r ve modelin a\u011f\u0131rl\u0131klar\u0131n\u0131 ve sapmalar\u0131n\u0131 (bias) g\u00fcncellemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h4>Maliyet Fonksiyonu (Cost Function) ve Ama\u00e7 Fonksiyonu (Objective Function)<\/h4>\n<p>Kay\u0131p fonksiyonu terimi genellikle maliyet fonksiyonu (Cost Function) veya ama\u00e7 fonksiyonu (Objective Function) ile kar\u0131\u015ft\u0131r\u0131labilir veya birbirinin yerine kullan\u0131labilir. Ancak aralar\u0131nda ince farklar vard\u0131r:<br \/>\n*   <strong>Kay\u0131p Fonksiyonu (Loss Function):<\/strong> Tek bir e\u011fitim \u00f6rne\u011fi i\u00e7in modelin hatas\u0131n\u0131 \u00f6l\u00e7er.<br \/>\n*   <strong>Maliyet Fonksiyonu (Cost Function):<\/strong> T\u00fcm e\u011fitim veri seti \u00fczerindeki kay\u0131p fonksiyonlar\u0131n\u0131n ortalamas\u0131 veya toplam\u0131d\u0131r. Genellikle optimizasyon s\u00fcreci boyunca minimize edilmeye \u00e7al\u0131\u015f\u0131lan fonksiyondur. \u00d6rne\u011fin, Ortalama Kare Hata (MSE), asl\u0131nda bir maliyet fonksiyonudur \u00e7\u00fcnk\u00fc t\u00fcm \u00f6rneklerin kare hatalar\u0131n\u0131n ortalamas\u0131n\u0131 al\u0131r.<br \/>\n*   <strong>Ama\u00e7 Fonksiyonu (Objective Function):<\/strong> En genel terimdir ve bir optimizasyon probleminin minimize edilmek veya maksimize edilmek istenen fonksiyonunu ifade eder. Kay\u0131p veya maliyet fonksiyonlar\u0131 genellikle bir ama\u00e7 fonksiyonunun \u00f6zel bir durumudur.<\/p>\n<h4>Optimizasyon Algoritmalar\u0131 ile \u0130li\u015fkisi<\/h4>\n<p>Kay\u0131p fonksiyonlar\u0131, optimizasyon algoritmalar\u0131, \u00f6zellikle Gradyan \u0130ni\u015fi (Gradient Descent) ve varyantlar\u0131 i\u00e7in temel olu\u015fturur. Optimizasyon algoritmas\u0131, kay\u0131p fonksiyonunun t\u00fcrevini (gradyan\u0131n\u0131) hesaplayarak modelin parametrelerini hangi y\u00f6nde ve ne kadar de\u011fi\u015ftirmesi gerekti\u011fini belirler. Ama\u00e7, kay\u0131p fonksiyonunun de\u011ferini s\u00fcrekli olarak azaltarak global veya yerel bir minimuma ula\u015fmakt\u0131r.<\/p>\n<h4>Neden Farkl\u0131 Kay\u0131p Fonksiyonlar\u0131na \u0130htiya\u00e7 Duyar\u0131z?<\/h4>\n<p>Farkl\u0131 makine \u00f6\u011frenimi problemleri (regresyon, s\u0131n\u0131fland\u0131rma, k\u00fcmeleme vb.) farkl\u0131 t\u00fcrde \u00e7\u0131kt\u0131 beklentilerine ve hata \u00f6l\u00e7\u00fcm gereksinimlerine sahiptir. Bu nedenle, her problem t\u00fcr\u00fc i\u00e7in en uygun kay\u0131p fonksiyonunu se\u00e7mek, modelin performans\u0131n\u0131 ve \u00f6\u011frenme s\u00fcrecinin verimlili\u011fini do\u011frudan etkiler. \u00d6rne\u011fin, say\u0131sal bir de\u011fer tahmin eden regresyon modelleri i\u00e7in hatalar\u0131n b\u00fcy\u00fckl\u00fc\u011f\u00fc \u00f6nemliyken, bir kategoriye atama yapan s\u0131n\u0131fland\u0131rma modelleri i\u00e7in yanl\u0131\u015f s\u0131n\u0131fland\u0131rma olas\u0131l\u0131\u011f\u0131 daha \u00f6nemlidir.<\/p>\n<h3>Regresyon Problemleri \u0130\u00e7in Kay\u0131p Fonksiyonlar\u0131<\/h3>\n<p>Regresyon problemleri, s\u00fcrekli bir \u00e7\u0131kt\u0131 de\u011feri tahmin etmeyi ama\u00e7lar. Bu t\u00fcr problemler i\u00e7in kay\u0131p fonksiyonlar\u0131 genellikle tahmin edilen de\u011fer ile ger\u00e7ek de\u011fer aras\u0131ndaki say\u0131sal fark\u0131 \u00f6l\u00e7er.<\/p>\n<h4>Ortalama Kare Hata (Mean Squared Error &#8211; MSE)<\/h4>\n<p>Ortalama Kare Hata (MSE), regresyon problemlerinde en yayg\u0131n kullan\u0131lan kay\u0131p fonksiyonlar\u0131ndan biridir. Modelin tahminleri ile ger\u00e7ek de\u011ferler aras\u0131ndaki farklar\u0131n karelerinin ortalamas\u0131n\u0131 al\u0131r.<br \/>\n$$ MSE = \\frac{1}{n} \\sum_{i=1}^{n} (y_i &#8211; \\hat{y}_i)^2 $$<br \/>\nBurada $n$ veri noktas\u0131 say\u0131s\u0131, $y_i$ ger\u00e7ek de\u011fer ve $\\hat{y}_i$ modelin tahmini de\u011feridir.<\/p>\n<p><strong>Avantajlar\u0131:<\/strong><br \/>\n*   Matematiksel olarak t\u00fcrevlenebilir olmas\u0131, gradyan tabanl\u0131 optimizasyon algoritmalar\u0131 i\u00e7in idealdir.<br \/>\n*   Hatalar\u0131 kareledi\u011fi i\u00e7in b\u00fcy\u00fck hatalar\u0131 daha fazla cezaland\u0131r\u0131r. Bu, modelin b\u00fcy\u00fck sapmalardan ka\u00e7\u0131nmas\u0131n\u0131 te\u015fvik eder.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong><br \/>\n*   Ayk\u0131r\u0131 de\u011ferlere (outliers) kar\u015f\u0131 olduk\u00e7a hassast\u0131r. Tek bir b\u00fcy\u00fck hata, MSE de\u011ferini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir.<br \/>\n*   Hata birimi, orijinal \u00e7\u0131kt\u0131 biriminin karesi cinsindendir, bu da yorumlamay\u0131 zorla\u015ft\u0131rabilir. (RMSE, karek\u00f6k al\u0131narak bu sorunu k\u0131smen \u00e7\u00f6zer.)<\/p>\n<p><strong>Python Uygulamas\u0131 (NumPy ve Scikit-learn):<\/strong><\/p>\n<pre><code class=\"language-python\">import numpy as np\nfrom sklearn.metrics import mean_squared_error\n\n<h2>\u00d6rnek veriler<\/h2>\ny_true = np.array([3, -0.5, 2, 7])\ny_pred = np.array([2.5, 0.0, 2, 8])\n\n<h2>NumPy ile manuel uygulama<\/h2>\ndef mse_numpy(y_true, y_pred):\n    return np.mean((y_true - y_pred)<em><\/em>2)\n\nprint(f\"NumPy MSE: {mse_numpy(y_true, y_pred)}\")\n\n<h2>Scikit-learn ile uygulama<\/h2>\nprint(f\"Scikit-learn MSE: {mean_squared_error(y_true, y_pred)}\")<\/code><\/pre>\n<h4>Ortalama Mutlak Hata (Mean Absolute Error &#8211; MAE)<\/h4>\n<p>Ortalama Mutlak Hata (MAE), tahminler ile ger\u00e7ek de\u011ferler aras\u0131ndaki mutlak farklar\u0131n ortalamas\u0131d\u0131r.<br \/>\n$$ MAE = \\frac{1}{n} \\sum_{i=1}^{n} |y_i &#8211; \\hat{y}_i| $$<\/p>\n<p><strong>Avantajlar\u0131:<\/strong><br \/>\n*   Ayk\u0131r\u0131 de\u011ferlere kar\u015f\u0131 MSE&#8217;ye g\u00f6re daha az hassast\u0131r, \u00e7\u00fcnk\u00fc hatalar\u0131 karelemek yerine mutlak de\u011ferini al\u0131r. Bu, ayk\u0131r\u0131 de\u011ferlerin model \u00fczerindeki etkisini azalt\u0131r.<br \/>\n*   Hata birimi, orijinal \u00e7\u0131kt\u0131 birimiyle ayn\u0131d\u0131r, bu da yorumlamay\u0131 kolayla\u015ft\u0131r\u0131r.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong><br \/>\n*   Mutlak de\u011fer fonksiyonunun s\u0131f\u0131r noktas\u0131nda t\u00fcrevi yoktur. Bu durum, gradyan ini\u015fi algoritmalar\u0131 i\u00e7in sorun yaratabilir, ancak \u00e7o\u011fu modern optimizasyon k\u00fct\u00fcphanesi bu durumu \u00f6zel y\u00f6ntemlerle ele al\u0131r.<\/p>\n<p><strong>Python Uygulamas\u0131 (NumPy ve Scikit-learn):<\/strong><\/p>\n<pre><code class=\"language-python\">import numpy as np\nfrom sklearn.metrics import mean_absolute_error\n\n<h2>\u00d6rnek veriler (ayn\u0131)<\/h2>\ny_true = np.array([3, -0.5, 2, 7])\ny_pred = np.array([2.5, 0.0, 2, 8])\n\n<h2>NumPy ile manuel uygulama<\/h2>\ndef mae_numpy(y_true, y_pred):\n    return np.mean(np.abs(y_true - y_pred))\n\nprint(f\"NumPy MAE: {mae_numpy(y_true, y_pred)}\")\n\n<h2>Scikit-learn ile uygulama<\/h2>\nprint(f\"Scikit-learn MAE: {mean_absolute_error(y_true, y_pred)}\")<\/code><\/pre>\n<h4>Huber Kayb\u0131 (Huber Loss)<\/h4>\n<p>Huber kayb\u0131, MSE ve MAE&#8217;nin avantajlar\u0131n\u0131 birle\u015ftirmeye \u00e7al\u0131\u015fan bir hibrit kay\u0131p fonksiyonudur. K\u00fc\u00e7\u00fck hatalar i\u00e7in MSE gibi davran\u0131rken, b\u00fcy\u00fck hatalar i\u00e7in MAE gibi davran\u0131r. Bu, onu ayk\u0131r\u0131 de\u011ferlere kar\u015f\u0131 daha diren\u00e7li hale getirirken, t\u00fcrevlenebilirlik avantaj\u0131n\u0131 korumaya yard\u0131mc\u0131 olur. Bir $\\delta$ (delta) e\u015fik de\u011feri ile tan\u0131mlan\u0131r:<br \/>\n$$ L_\\delta(y, \\hat{y}) = \\begin{cases} \\frac{1}{2}(y &#8211; \\hat{y})^2 &#038; \\text{if } |y &#8211; \\hat{y}| \\le \\delta \\\\ \\delta|y &#8211; \\hat{y}| &#8211; \\frac{1}{2}\\delta^2 &#038; \\text{if } |y &#8211; \\hat{y}| > \\delta \\end{cases} $$<\/p>\n<p><strong>Avantajlar\u0131:<\/strong><br \/>\n*   Ayk\u0131r\u0131 de\u011ferlere kar\u015f\u0131 MSE&#8217;den daha sa\u011flamd\u0131r.<br \/>\n*   MAE&#8217;nin aksine, her yerde t\u00fcrevlenebilir bir fonksiyondur, bu da optimizasyon i\u00e7in daha iyidir.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong><br \/>\n*   $\\delta$ e\u015fik de\u011ferinin ayarlanmas\u0131 gerekir, bu da ek bir hiperparametre optimizasyonu gerektirir.<\/p>\n<p><strong>Python Uygulamas\u0131 (Scikit-learn):<\/strong><\/p>\n<pre><code class=\"language-python\">import numpy as np\nfrom sklearn.linear_model import HuberRegressor\nfrom sklearn.metrics import mean_squared_error # Huber Loss do\u011frudan metrik olarak de\u011fil, model i\u00e7inde kullan\u0131l\u0131r.\n\n<h2>\u00d6rnek veriler<\/h2>\ny_true = np.array([3, -0.5, 2, 7, 100]) # Ayk\u0131r\u0131 de\u011fer eklendi\ny_pred = np.array([2.5, 0.0, 2, 8, 90])\n\n<h2>Huber Loss genellikle bir modelin i\u00e7inde kullan\u0131l\u0131r.<\/h2>\n<h2>\u00d6rne\u011fin, HuberRegressor'da varsay\u0131lan kay\u0131p fonksiyonudur.<\/h2>\n<h2>Burada manuel bir uygulama veya Keras\/PyTorch gibi derin \u00f6\u011frenme k\u00fct\u00fcphanelerindeki kullan\u0131m\u0131 g\u00f6sterilebilir.<\/h2>\n\n<h2>Keras ile manuel Huber Loss uygulamas\u0131 (\u00f6rnek)<\/h2>\nimport tensorflow as tf\n\ndef huber_loss_tf(y_true, y_pred, delta=1.0):\n    error = tf.abs(y_true - y_pred)\n    quadratic_part = tf.minimum(error, delta)\n    linear_part = tf.maximum(error - delta, 0)\n    return tf.reduce_mean(0.5 <em> quadratic_part<\/em><em>2 + delta <\/em> linear_part)\n\n<h2>print(f\"TensorFlow Huber Loss: {huber_loss_tf(tf.constant(y_true), tf.constant(y_pred)).numpy()}\")<\/h2>\n\n<h2>Scikit-learn'de do\u011frudan metrik olarak bulunmaz, ancak HuberRegressor gibi modellerde kullan\u0131l\u0131r.<\/h2>\n<h2>G\u00f6sterim ama\u00e7l\u0131, basit bir manuel numpy implementasyonu:<\/h2>\ndef huber_loss_numpy(y_true, y_pred, delta=1.0):\n    error = np.abs(y_true - y_pred)\n    quadratic_part = np.minimum(error, delta)\n    linear_part = np.maximum(error - delta, 0)\n    return np.mean(0.5 <em> quadratic_part<\/em><em>2 + delta <\/em> linear_part)\n\nprint(f\"NumPy Huber Loss (delta=1.0): {huber_loss_numpy(y_true, y_pred, delta=1.0)}\")<\/code><\/pre>\n<h4>Log-Cosh Kayb\u0131 (Log-Cosh Loss)<\/h4>\n<p>Log-Cosh kayb\u0131, hatalar\u0131n logaritmik kosin\u00fcs hiperbolik de\u011ferini kullan\u0131r. Bu fonksiyon, MSE gibi her yerde t\u00fcrevlenebilirken, MAE gibi ayk\u0131r\u0131 de\u011ferlere kar\u015f\u0131 daha az hassast\u0131r.<br \/>\n$$ L(y, \\hat{y}) = \\sum_{i=1}^{n} \\log(\\cosh(\\hat{y}_i &#8211; y_i)) $$<\/p>\n<p><strong>Avantajlar\u0131:<\/strong><br \/>\n*   MSE&#8217;ye g\u00f6re ayk\u0131r\u0131 de\u011ferlere daha az duyarl\u0131d\u0131r.<br \/>\n*   MAE&#8217;nin aksine, her yerde p\u00fcr\u00fczs\u00fcz ve t\u00fcrevlenebilirdir.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong><br \/>\n*   Di\u011fer kay\u0131p fonksiyonlar\u0131na g\u00f6re daha karma\u015f\u0131k bir hesaplamaya sahiptir.<\/p>\n<p><strong>Python Uygulamas\u0131 (NumPy ve TensorFlow\/PyTorch):<\/strong><\/p>\n<pre><code class=\"language-python\">import numpy as np\nimport tensorflow as tf # Veya import torch as torch\n\n<h2>\u00d6rnek veriler<\/h2>\ny_true = np.array([3, -0.5, 2, 7, 100])\ny_pred = np.array([2.5, 0.0, 2, 8, 90])\n\n<h2>NumPy ile manuel uygulama<\/h2>\ndef log_cosh_loss_numpy(y_true, y_pred):\n    return np.mean(np.log(np.cosh(y_pred - y_true)))\n\nprint(f\"NumPy Log-Cosh Loss: {log_cosh_loss_numpy(y_true, y_pred)}\")\n\n<h2>TensorFlow ile uygulama<\/h2>\n<h2>Keras'ta do\u011frudan <code>tf.keras.losses.LogCosh<\/code> olarak mevcuttur.<\/h2>\nlog_cosh_loss_keras = tf.keras.losses.LogCosh()\nprint(f\"Keras Log-Cosh Loss: {log_cosh_loss_keras(y_true, y_pred).numpy()}\")<\/code><\/pre>\n<h3>S\u0131n\u0131fland\u0131rma Problemleri \u0130\u00e7in Kay\u0131p Fonksiyonlar\u0131<\/h3>\n<p>S\u0131n\u0131fland\u0131rma problemleri, bir veri noktas\u0131n\u0131 belirli bir kategoriye atamay\u0131 ama\u00e7lar. Bu t\u00fcr problemler i\u00e7in kay\u0131p fonksiyonlar\u0131 genellikle modelin s\u0131n\u0131fland\u0131rma g\u00fcvenini ve do\u011frulu\u011funu \u00f6l\u00e7er.<\/p>\n<h4>\u0130kili \u00c7apraz Entropi (Binary Cross-Entropy &#8211; BCE)<\/h4>\n<p>\u0130kili \u00c7apraz Entropi, ikili s\u0131n\u0131fland\u0131rma problemleri i\u00e7in kullan\u0131lan en yayg\u0131n kay\u0131p fonksiyonudur. Modelin tahmin etti\u011fi olas\u0131l\u0131k ile ger\u00e7ek s\u0131n\u0131f etiketi aras\u0131ndaki fark\u0131 \u00f6l\u00e7er.<br \/>\n$$ BCE = &#8211; \\frac{1}{n} \\sum_{i=1}^{n} [y_i \\log(\\hat{y}_i) + (1 &#8211; y_i) \\log(1 &#8211; \\hat{y}_i)] $$<br \/>\nBurada $y_i$ ger\u00e7ek etiket (0 veya 1) ve $\\hat{y}_i$ modelin pozitif s\u0131n\u0131fa ait olma olas\u0131l\u0131k tahminidir.<\/p>\n<p><strong>Avantajlar\u0131:<\/strong><br \/>\n*   Modelin do\u011fru s\u0131n\u0131fa y\u00fcksek g\u00fcvenle tahmin yapmas\u0131n\u0131 te\u015fvik eder.<br \/>\n*   Modelin yanl\u0131\u015f s\u0131n\u0131fa y\u00fcksek g\u00fcvenle tahmin yapmas\u0131n\u0131 \u015fiddetle cezaland\u0131r\u0131r.<br \/>\n*   Olas\u0131l\u0131klara dayal\u0131 oldu\u011fu i\u00e7in modelin \u00e7\u0131kt\u0131lar\u0131n\u0131 do\u011frudan yorumlamay\u0131 sa\u011flar.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong><br \/>\n*   Logaritma fonksiyonu nedeniyle, tahmin edilen olas\u0131l\u0131klar\u0131n 0 veya 1&#8217;e \u00e7ok yak\u0131n olmas\u0131 durumunda (ancak ger\u00e7ek de\u011ferin tam tersi olmas\u0131 durumunda) sonsuz kay\u0131p de\u011ferleri \u00fcretebilir. Ancak pratikte, bu durum say\u0131sal kararl\u0131l\u0131k i\u00e7in k\u00fc\u00e7\u00fck bir $\\epsilon$ de\u011feri eklenerek \u00f6nlenir.<\/p>\n<p><strong>Python Uygulamas\u0131 (NumPy ve TensorFlow\/PyTorch):<\/strong><\/p>\n<pre><code class=\"language-python\">import numpy as np\nimport tensorflow as tf\n\n<h2>\u00d6rnek veriler (ger\u00e7ek etiketler ve tahmin edilen olas\u0131l\u0131klar)<\/h2>\ny_true_bce = np.array([1, 0, 1, 1, 0])\ny_pred_bce = np.array([0.9, 0.1, 0.8, 0.6, 0.2]) # Pozitif s\u0131n\u0131fa ait olma olas\u0131l\u0131klar\u0131\n\n<h2>NumPy ile manuel uygulama<\/h2>\ndef binary_cross_entropy_numpy(y_true, y_pred):\n    epsilon = 1e-15 # Logaritman\u0131n s\u0131f\u0131ra gitmesini engellemek i\u00e7in\n    y_pred = np.clip(y_pred, epsilon, 1 - epsilon) # Tahminleri s\u0131n\u0131rla\n    return -np.mean(y_true <em> np.log(y_pred) + (1 - y_true) <\/em> np.log(1 - y_pred))\n\nprint(f\"NumPy BCE: {binary_cross_entropy_numpy(y_true_bce, y_pred_bce)}\")\n\n<h2>Keras ile uygulama<\/h2>\nbce_loss_keras = tf.keras.losses.BinaryCrossentropy()\nprint(f\"Keras BCE: {bce_loss_keras(y_true_bce, y_pred_bce).numpy()}\")<\/code><\/pre>\n<h4>Kategorik \u00c7apraz Entropi (Categorical Cross-Entropy &#8211; CCE)<\/h4>\n<p>Kategorik \u00c7apraz Entropi, \u00e7ok s\u0131n\u0131fl\u0131 s\u0131n\u0131fland\u0131rma problemleri i\u00e7in kullan\u0131l\u0131r ve genellikle ger\u00e7ek etiketlerin &#8220;tek s\u0131cak kodlanm\u0131\u015f&#8221; (one-hot encoded) formatta oldu\u011fu durumlarda tercih edilir.<br \/>\n$$ CCE = &#8211; \\frac{1}{n} \\sum_{i=1}^{n} \\sum_{c=1}^{C} y_{ic} \\log(\\hat{y}_{ic}) $$<br \/>\nBurada $C$ s\u0131n\u0131f say\u0131s\u0131, $y_{ic}$ $i$. \u00f6rne\u011fin $c$. s\u0131n\u0131fa ait olup olmad\u0131\u011f\u0131n\u0131 g\u00f6steren ikili bir de\u011fer (0 veya 1) ve $\\hat{y}_{ic}$ $i$. \u00f6rne\u011fin $c$. s\u0131n\u0131fa ait olma olas\u0131l\u0131k tahminidir.<\/p>\n<p><strong>Avantajlar\u0131:<\/strong><br \/>\n*   \u00c7ok s\u0131n\u0131fl\u0131 s\u0131n\u0131fland\u0131rma i\u00e7in do\u011fal bir se\u00e7imdir.<br \/>\n*   Modelin do\u011fru s\u0131n\u0131fa y\u00fcksek g\u00fcvenle tahmin yapmas\u0131n\u0131 te\u015fvik eder.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong><br \/>\n*   Giri\u015f etiketlerinin tek s\u0131cak kodlanm\u0131\u015f olmas\u0131 gerekir.<\/p>\n<p><strong>Python Uygulamas\u0131 (NumPy ve TensorFlow\/PyTorch):<\/strong><\/p>\n<pre><code class=\"language-python\">import numpy as np\nimport tensorflow as tf\n\n<h2>\u00d6rnek veriler (ger\u00e7ek etiketler one-hot encoded)<\/h2>\ny_true_cce = np.array([[0, 1, 0], [1, 0, 0], [0, 0, 1]]) # 3 s\u0131n\u0131f i\u00e7in\ny_pred_cce = np.array([[0.1, 0.8, 0.1], [0.7, 0.2, 0.1], [0.05, 0.05, 0.9]]) # Tahmin edilen olas\u0131l\u0131klar\n\n<h2>NumPy ile manuel uygulama<\/h2>\ndef categorical_cross_entropy_numpy(y_true, y_pred):\n    epsilon = 1e-15\n    y_pred = np.clip(y_pred, epsilon, 1 - epsilon)\n    return -np.sum(y_true * np.log(y_pred)) \/ y_true.shape[0]\n\nprint(f\"NumPy CCE: {categorical_cross_entropy_numpy(y_true_cce, y_pred_cce)}\")\n\n<h2>Keras ile uygulama<\/h2>\ncce_loss_keras = tf.keras.losses.CategoricalCrossentropy()\nprint(f\"Keras CCE: {cce_loss_keras(y_true_cce, y_pred_cce).numpy()}\")<\/code><\/pre>\n<h4>Seyrek Kategorik \u00c7apraz Entropi (Sparse Categorical Cross-Entropy &#8211; SCCE)<\/h4>\n<p>Seyrek Kategorik \u00c7apraz Entropi, Kategorik \u00c7apraz Entropi ile ayn\u0131 matematiksel form\u00fcl\u00fc kullan\u0131r, ancak ger\u00e7ek etiketlerin tek s\u0131cak kodlanm\u0131\u015f yerine tamsay\u0131 format\u0131nda oldu\u011fu durumlarda kullan\u0131l\u0131r. Bu, bellek ve i\u015flem verimlili\u011fi sa\u011flayabilir, \u00f6zellikle \u00e7ok say\u0131da s\u0131n\u0131f oldu\u011funda.<\/p>\n<p><strong>Avantajlar\u0131:<\/strong><br \/>\n*   Etiketlerin tek s\u0131cak kodlanmas\u0131na gerek kalmaz, bu da veri \u00f6n i\u015fleme ad\u0131m\u0131n\u0131 basitle\u015ftirir.<br \/>\n*   Bellek kullan\u0131m\u0131n\u0131 azalt\u0131r.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong><br \/>\n*   Modelin \u00e7\u0131kt\u0131lar\u0131 yine de olas\u0131l\u0131k da\u011f\u0131l\u0131m\u0131 \u015feklinde olmal\u0131d\u0131r (genellikle softmax aktivasyonu ile).<\/p>\n<p><strong>Python Uygulamas\u0131 (TensorFlow\/PyTorch):<\/strong><\/p>\n<pre><code class=\"language-python\">import numpy as np\nimport tensorflow as tf\n\n<h2>\u00d6rnek veriler (ger\u00e7ek etiketler tamsay\u0131 format\u0131nda)<\/h2>\ny_true_scce = np.array([1, 0, 2]) # 3 s\u0131n\u0131f i\u00e7in\ny_pred_scce = np.array([[0.1, 0.8, 0.1], [0.7, 0.2, 0.1], [0.05, 0.05, 0.9]]) # Tahmin edilen olas\u0131l\u0131klar\n\n<h2>Keras ile uygulama<\/h2>\nscce_loss_keras = tf.keras.losses.SparseCategoricalCrossentropy()\nprint(f\"Keras SCCE: {scce_loss_keras(y_true_scce, y_pred_scce).numpy()}\")<\/code><\/pre>\n<h4>Hinge Kayb\u0131 (Hinge Loss)<\/h4>\n<p>Hinge kayb\u0131, \u00f6zellikle Destek Vekt\u00f6r Makineleri (SVM) gibi maksimum marjinal s\u0131n\u0131fland\u0131r\u0131c\u0131lar i\u00e7in kullan\u0131l\u0131r. \u0130kili s\u0131n\u0131fland\u0131rma problemlerinde, modelin do\u011fru s\u0131n\u0131fland\u0131rmay\u0131 belirli bir marj\u0131n \u00fczerinde yapmas\u0131n\u0131 te\u015fvik eder.<br \/>\n$$ L(y, \\hat{y}) = \\max(0, 1 &#8211; y\\hat{y}) $$<br \/>\nBurada $y$ ger\u00e7ek etiket (-1 veya 1) ve $\\hat{y}$ modelin ham skorudur (olas\u0131l\u0131k de\u011fil, genellikle bir lineer modelin \u00e7\u0131kt\u0131s\u0131).<\/p>\n<p><strong>Avantajlar\u0131:<\/strong><br \/>\n*   Sadece yanl\u0131\u015f s\u0131n\u0131fland\u0131r\u0131lan veya marj i\u00e7inde olan \u00f6rnekler i\u00e7in ceza uygular, bu da seyrek bir \u00e7\u00f6z\u00fcm elde etmeye yard\u0131mc\u0131 olabilir.<br \/>\n*   SVM&#8217;lerin temelini olu\u015fturur ve g\u00fc\u00e7l\u00fc teorik temellere sahiptir.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong><br \/>\n*   Sadece -1 ve 1 etiketleri ile \u00e7al\u0131\u015f\u0131r.<br \/>\n*   T\u00fcrevlenebilir de\u011fildir (maksimum fonksiyonu nedeniyle), ancak subgradient optimizasyonu ile ele al\u0131nabilir.<\/p>\n<p><strong>Python Uygulamas\u0131 (NumPy ve Scikit-learn):<\/strong><\/p>\n<pre><code class=\"language-python\">import numpy as np\nfrom sklearn.svm import LinearSVC # Hinge Loss genellikle SVM modellerinde kullan\u0131l\u0131r\n\n<h2>\u00d6rnek veriler (ger\u00e7ek etiketler -1 veya 1, tahminler ham skorlar)<\/h2>\ny_true_hinge = np.array([1, -1, 1, 1, -1])\ny_pred_hinge = np.array([0.8, -0.6, 0.2, 0.9, -1.2]) # Modelin ham skorlar\u0131\n\n<h2>NumPy ile manuel uygulama<\/h2>\ndef hinge_loss_numpy(y_true, y_pred):\n    return np.mean(np.maximum(0, 1 - y_true * y_pred))\n\nprint(f\"NumPy Hinge Loss: {hinge_loss_numpy(y_true_hinge, y_pred_hinge)}\")\n\n<h2>Scikit-learn'de do\u011frudan bir kay\u0131p fonksiyonu olarak bulunmaz, ancak modellerde kullan\u0131l\u0131r.<\/h2>\n<h2>Keras'ta <code>tf.keras.losses.Hinge<\/code> olarak mevcuttur.<\/h2>\n<h2>hinge_loss_keras = tf.keras.losses.Hinge()<\/h2>\n<h2>print(f\"Keras Hinge Loss: {hinge_loss_keras(y_true_hinge, y_pred_hinge).numpy()}\")<\/code><\/pre>\n<\/h2>\n<h3>Di\u011fer Kay\u0131p Fonksiyonlar\u0131 ve \u00d6zel Durumlar<\/h3>\n<p>Yukar\u0131da belirtilenler en yayg\u0131n kay\u0131p fonksiyonlar\u0131 olsa da, \u00f6zel problemler ve mimariler i\u00e7in tasarlanm\u0131\u015f bir\u00e7ok ba\u015fka kay\u0131p fonksiyonu bulunmaktad\u0131r.<\/p>\n<h4>Kullback-Leibler Divergence (KL Divergence)<\/h4>\n<p>KL Divergence, iki olas\u0131l\u0131k da\u011f\u0131l\u0131m\u0131 aras\u0131ndaki fark\u0131 \u00f6l\u00e7er. Bir da\u011f\u0131l\u0131m\u0131n di\u011ferinden ne kadar farkl\u0131 oldu\u011funu nicel olarak ifade eder. \u00dcretken modellerde (\u00f6rne\u011fin Varyasyonel Oto-Kodlay\u0131c\u0131lar &#8211; VAE&#8217;ler) veya model s\u0131k\u0131\u015ft\u0131rma gibi alanlarda yayg\u0131n olarak kullan\u0131l\u0131r.<\/p>\n<h4>Jaccard Kayb\u0131 ve Dice Kayb\u0131<\/h4>\n<p>Bu kay\u0131p fonksiyonlar\u0131, g\u00f6r\u00fcnt\u00fc segmentasyonu gibi g\u00f6revlerde, genellikle ikili veya \u00e7ok s\u0131n\u0131fl\u0131 maskelerin tahmin edilmesinde kullan\u0131l\u0131r. Ger\u00e7ek segmentasyon maskesi ile tahmin edilen maske aras\u0131ndaki \u00f6rt\u00fc\u015fme miktar\u0131n\u0131 \u00f6l\u00e7erler. \u00d6zellikle dengesiz s\u0131n\u0131f da\u011f\u0131l\u0131mlar\u0131na sahip segmentasyon g\u00f6revlerinde etkilidirler.<\/p>\n<h4>Triplet Kayb\u0131 (Triplet Loss)<\/h4>\n<p>Triplet kayb\u0131, y\u00fcz tan\u0131ma veya benzerlik \u00f6\u011frenimi gibi g\u00f6revlerde kullan\u0131l\u0131r. Bir &#8220;\u00e7apa&#8221; (anchor) \u00f6rne\u011fi, pozitif bir \u00f6rnek (\u00e7apaya benzer) ve negatif bir \u00f6rnek (\u00e7apadan farkl\u0131) aras\u0131ndaki mesafeleri kullanarak modelin benzerlikleri \u00f6\u011frenmesini sa\u011flar. Ama\u00e7, \u00e7apa ile pozitif aras\u0131ndaki mesafeyi, \u00e7apa ile negatif aras\u0131ndaki mesafeden daha az yapmakt\u0131r, belirli bir marj kadar.<\/p>\n<h3>Kay\u0131p Fonksiyonu Se\u00e7imi<\/h3>\n<p>Do\u011fru kay\u0131p fonksiyonunu se\u00e7mek, modelin ba\u015far\u0131s\u0131 i\u00e7in kritik \u00f6neme sahiptir. Se\u00e7im yaparken g\u00f6z \u00f6n\u00fcnde bulundurulmas\u0131 gereken fakt\u00f6rler \u015funlard\u0131r:<\/p>\n<p>1.  <strong>Problem T\u00fcr\u00fc:<\/strong> Regresyon, ikili s\u0131n\u0131fland\u0131rma, \u00e7ok s\u0131n\u0131fl\u0131 s\u0131n\u0131fland\u0131rma, nesne alg\u0131lama, segmentasyon vb. Her problem t\u00fcr\u00fc i\u00e7in uygun bir ba\u015flang\u0131\u00e7 noktas\u0131 vard\u0131r.<br \/>\n2.  <strong>Veri Da\u011f\u0131l\u0131m\u0131 ve Ayk\u0131r\u0131 De\u011ferler:<\/strong> Veri setinizde ayk\u0131r\u0131 de\u011ferler varsa, MAE veya Huber kayb\u0131 gibi ayk\u0131r\u0131 de\u011ferlere daha az duyarl\u0131 kay\u0131p fonksiyonlar\u0131 MSE&#8217;den daha iyi sonu\u00e7 verebilir.<br \/>\n3.  <strong>Modelin Hedefleri:<\/strong> Modelinizden tam olarak ne bekliyorsunuz? \u00d6rne\u011fin, olas\u0131l\u0131klar\u0131 do\u011fru tahmin etmek mi (\u00e7apraz entropi) yoksa belirli bir marj\u0131n \u00fczerinde s\u0131n\u0131fland\u0131rma yapmak m\u0131 (hinge kayb\u0131)?<br \/>\n4.  <strong>Hesaplama Karma\u015f\u0131kl\u0131\u011f\u0131 ve T\u00fcrevlenebilirlik:<\/strong> \u00c7o\u011fu derin \u00f6\u011frenme \u00e7er\u00e7evesi, t\u00fcrevlenebilir kay\u0131p fonksiyonlar\u0131na ihtiya\u00e7 duyar. Se\u00e7ti\u011finiz kay\u0131p fonksiyonunun optimizasyon algoritman\u0131zla uyumlu oldu\u011fundan emin olun.<br \/>\n5.  <strong>S\u0131n\u0131f Dengesizli\u011fi:<\/strong> S\u0131n\u0131flar aras\u0131nda ciddi dengesizlik varsa (\u00f6rne\u011fin, nadir hastal\u0131k tespiti), a\u011f\u0131rl\u0131kl\u0131 \u00e7apraz entropi veya odak kayb\u0131 (Focal Loss) gibi \u00f6zel kay\u0131p fonksiyonlar\u0131 daha iyi performans g\u00f6sterebilir.<\/p>\n<h3>Python Uygulama \u0130pu\u00e7lar\u0131<\/h3>\n<p>Python, kay\u0131p fonksiyonlar\u0131n\u0131 uygularken size b\u00fcy\u00fck esneklik sunar:<\/p>\n<p>*   <strong>NumPy ile S\u0131f\u0131rdan Uygulama:<\/strong> K\u00fc\u00e7\u00fck veri setleri veya \u00f6zel durumlar i\u00e7in, kay\u0131p fonksiyonlar\u0131n\u0131 NumPy kullanarak s\u0131f\u0131rdan yazmak, matematiksel anlay\u0131\u015f\u0131n\u0131z\u0131 derinle\u015ftirmek i\u00e7in harika bir yoldur. Ayr\u0131ca, \u00f6zel bir kay\u0131p fonksiyonuna ihtiyac\u0131n\u0131z oldu\u011funda bu yetenek \u00e7ok i\u015finize yarar.<br \/>\n*   <strong>Scikit-learn:<\/strong> Makine \u00f6\u011frenimi algoritmalar\u0131 i\u00e7in pop\u00fcler bir k\u00fct\u00fcphane olan Scikit-learn, MSE ve MAE gibi temel regresyon metriklerini do\u011frudan sunar. Ancak, kay\u0131p fonksiyonlar\u0131 genellikle model e\u011fitimi s\u0131ras\u0131nda dahili olarak kullan\u0131l\u0131r, metrikler ise model performans\u0131n\u0131 de\u011ferlendirmek i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <strong>TensorFlow ve PyTorch:<\/strong> Derin \u00f6\u011frenme \u00e7er\u00e7eveleri olan TensorFlow (Keras) ve PyTorch, geni\u015f bir yelpazede yerle\u015fik kay\u0131p fonksiyonlar\u0131 sunar. Bu k\u00fct\u00fcphaneler, otomatik t\u00fcrevleme (autodiff) yetenekleri sayesinde \u00f6zel kay\u0131p fonksiyonlar\u0131n\u0131 bile kolayca tan\u0131mlaman\u0131za ve optimize etmenize olanak tan\u0131r. Genellikle <code>tf.keras.losses<\/code> veya <code>torch.nn.functional<\/code> mod\u00fcllerinde bulunurlar.<br \/>\n*   <strong>\u00d6zel Kay\u0131p Fonksiyonlar\u0131 Tan\u0131mlama:<\/strong> Derin \u00f6\u011frenme k\u00fct\u00fcphaneleri, genellikle Python fonksiyonlar\u0131n\u0131 veya s\u0131n\u0131f tabanl\u0131 yakla\u015f\u0131mlar\u0131 kullanarak kendi \u00f6zel kay\u0131p fonksiyonlar\u0131n\u0131z\u0131 tan\u0131mlaman\u0131za izin verir. Bu, standart kay\u0131p fonksiyonlar\u0131n\u0131n yetersiz kald\u0131\u011f\u0131 durumlarda b\u00fcy\u00fck avantaj sa\u011flar.<\/p>\n<pre><code class=\"language-python\"># Keras'ta \u00f6zel kay\u0131p fonksiyonu \u00f6rne\u011fi\nimport tensorflow as tf\n\ndef custom_mse_loss(y_true, y_pred):\n    # \u00d6rne\u011fin, sadece pozitif hatalar\u0131 cezaland\u0131ran bir MSE varyant\u0131\n    error = y_true - y_pred\n    positive_error = tf.maximum(0.0, error)\n    return tf.reduce_mean(tf.square(positive_error))\n\n<h2>Bir model derlerken kullan\u0131labilir:<\/h2>\n<h2>model.compile(optimizer='adam', loss=custom_mse_loss)<\/code><\/pre>\n<\/h2>\n<h3>Sonu\u00e7<\/h3>\n<p>Kay\u0131p fonksiyonlar\u0131, makine \u00f6\u011frenimi ve derin \u00f6\u011frenme modellerinin \u00f6\u011frenme s\u00fcrecinin temel ta\u015f\u0131d\u0131r. Bir modelin performans\u0131n\u0131 nicel olarak \u00f6l\u00e7erek, optimizasyon algoritmalar\u0131n\u0131n model parametrelerini do\u011fru y\u00f6nde ayarlamas\u0131na rehberlik ederler. Regresyon ve s\u0131n\u0131fland\u0131rma gibi farkl\u0131 problem t\u00fcrleri i\u00e7in \u00f6zel olarak tasarlanm\u0131\u015f \u00e7e\u015fitli kay\u0131p fonksiyonlar\u0131 mevcuttur ve her birinin kendine \u00f6zg\u00fc avantajlar\u0131 ve dezavantajlar\u0131 vard\u0131r.<\/p>\n<p>Python, NumPy gibi temel k\u00fct\u00fcphanelerden Scikit-learn, TensorFlow ve PyTorch gibi geli\u015fmi\u015f makine \u00f6\u011frenimi ve derin \u00f6\u011frenme \u00e7er\u00e7evelerine kadar zengin bir ekosistem sunarak, kay\u0131p fonksiyonlar\u0131n\u0131n kolayca uygulanmas\u0131n\u0131 ve denenmesini sa\u011flar. Do\u011fru kay\u0131p fonksiyonunu se\u00e7mek ve anlamak, daha sa\u011flam, do\u011fru ve hedefe y\u00f6nelik makine \u00f6\u011frenimi modelleri olu\u015fturman\u0131n anahtar\u0131d\u0131r. Bu makale, kay\u0131p fonksiyonlar\u0131n\u0131n temel prensiplerini anlaman\u0131za ve Python&#8217;da kolayca uygulaman\u0131za yard\u0131mc\u0131 olmay\u0131 ama\u00e7lam\u0131\u015ft\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Python&#8217;da Kay\u0131p Fonksiyonlar\u0131: Kolay Uygulama ve Derinlemesine Bak\u0131\u015f\nMakine \u00f6\u011frenimi ve derin \u00f6\u011frenme modellerinin geli\u015ftirilmesinde, bir mo","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":[1403],"tags":[],"class_list":{"0":"post-37304","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-python","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>Python&#039;da Kay\u0131p Fonksiyonlar\u0131: Kolay Uygulama ve Derinlemesine Bak\u0131\u015f - 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\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python&#039;da Kay\u0131p Fonksiyonlar\u0131: Kolay Uygulama ve Derinlemesine Bak\u0131\u015f\" \/>\n<meta property=\"og:description\" content=\"Python&#039;da Kay\u0131p Fonksiyonlar\u0131: Kolay Uygulama ve Derinlemesine Bak\u0131\u015f Makine \u00f6\u011frenimi ve derin \u00f6\u011frenme modellerinin geli\u015ftirilmesinde, bir mo\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-30T03:40:44+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=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Python&#8217;da Kay\u0131p Fonksiyonlar\u0131: Kolay Uygulama ve Derinlemesine Bak\u0131\u015f\",\"datePublished\":\"2025-12-30T03:40:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/\"},\"wordCount\":2622,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Python\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/\",\"name\":\"Python'da Kay\u0131p Fonksiyonlar\u0131: Kolay Uygulama ve Derinlemesine Bak\u0131\u015f - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-30T03:40:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python&#8217;da Kay\u0131p Fonksiyonlar\u0131: Kolay Uygulama ve Derinlemesine Bak\u0131\u015f\"}]},{\"@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":"Python'da Kay\u0131p Fonksiyonlar\u0131: Kolay Uygulama ve Derinlemesine Bak\u0131\u015f - 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\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/","og_locale":"tr_TR","og_type":"article","og_title":"Python'da Kay\u0131p Fonksiyonlar\u0131: Kolay Uygulama ve Derinlemesine Bak\u0131\u015f","og_description":"Python'da Kay\u0131p Fonksiyonlar\u0131: Kolay Uygulama ve Derinlemesine Bak\u0131\u015f Makine \u00f6\u011frenimi ve derin \u00f6\u011frenme modellerinin geli\u015ftirilmesinde, bir mo","og_url":"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-30T03:40:44+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Python&#8217;da Kay\u0131p Fonksiyonlar\u0131: Kolay Uygulama ve Derinlemesine Bak\u0131\u015f","datePublished":"2025-12-30T03:40:44+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/"},"wordCount":2622,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Python"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/","url":"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/","name":"Python'da Kay\u0131p Fonksiyonlar\u0131: Kolay Uygulama ve Derinlemesine Bak\u0131\u015f - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-30T03:40:44+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-kayip-fonksiyonlari-kolay-uygulama-ve-derinlemesine-bakis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Python&#8217;da Kay\u0131p Fonksiyonlar\u0131: Kolay Uygulama ve Derinlemesine Bak\u0131\u015f"}]},{"@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\/37304","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=37304"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37304\/revisions"}],"predecessor-version":[{"id":37305,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37304\/revisions\/37305"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}