Ana içeriğe atla

Python’da Olasılık Dağılımları Eğitimi

Bu eğitimde, makine öğrenimi literatüründe sıkça atıf yapılan olasılık dağılımlarını ve bunların Python ile nasıl kodlanacağını öğreneceksiniz.
Güncel 3 Eki 2026  · 15 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Giriş

Olasılık ve İstatistik, Veri Bilimi’nin temel direkleridir. Aslında makine öğrenimi ve yapay zekânın altında yatan ilke, istatistiksel matematik ve lineer cebirden ibarettir. Özellikle Veri Bilimi’nde, belirli bir konuyu anlamak için çokça matematik içeren araştırma makalelerini okumanız gereken durumlarla sık sık karşılaşırsınız; dolayısıyla Veri Bilimi’nde daha iyi olmak istiyorsanız, güçlü bir matematiksel kavrayış şarttır. Bu eğitim, makine öğrenimi literatüründe yaygın olarak kullanılan olasılık dağılımları hakkındadır. Acemiyseniz, başlamak için doğru yerdesiniz. Bu eğitimde şunları yapacaksınız:

  • Rastgele değişkenler, yoğunluk eğrisi, olasılık fonksiyonları gibi olasılık terimlerini öğrenin.
  • Farklı olasılık dağılımlarını, dağılım fonksiyonlarını ve bazı özelliklerini öğrenin.
  • Bu dağılımları Python’da oluşturmayı ve görselleştirmeyi öğrenin.

Başlamadan önce, bir sonraki bölümde ele alınan bazı matematiksel terimlere aşina olmalısınız.

Rastgele Değişken

Rastgele değişken, mümkün değerleri rastlantısal bir olgunun sayısal çıktıları olan değişkendir. İki tür rastgele değişken vardır: ayrık ve sürekli.

Ayrık rastgele değişken, yalnızca sayılabilir sayıda farklı değer alabilen ve bu nedenle nicelenebilen bir değişkendir. Örneğin, adil bir zar attığınızda gelen sayıyı $X$ rastgele değişkeni olarak tanımlayabilirsiniz. $X$ şu değerleri alabilir: $[1,2,3,4,5,6]$ ve bu nedenle ayrık bir rastgele değişkendir.

Ayrık bir rastgele değişkenin olasılık dağılımı, olası her bir değeriyle ilişkili olasılıkların bir listesidir. Bazen olasılık fonksiyonu ya da olasılık kütle fonksiyonu olarak da adlandırılır. Matematiksel olarak, bir rastgele değişken $X$’in $k$ farklı değer alabildiğini ve $X = x_{i}$ olasılığının $P(X = x_{i}) = p_{i}$ olarak tanımlandığını varsayalım. O hâlde $p_{i}$ olasılıkları şu koşulları sağlamalıdır:

1: Her $i$ için 0 < $p_{i}$ < 1

2: $p_{1} + p_{2} + ... + p_{k} = 1$.

Ayrık olasılık dağılımlarına örnek olarak Bernoulli dağılımı, Binom dağılımı, Poisson dağılımı verilebilir.

Sürekli rastgele değişken, sonsuz sayıda olası değer alan bir değişkendir. Örneğin, bir sınıftaki öğrencilerin boyunu $X$ rastgele değişkeni olarak tanımlayabilirsiniz. Sürekli rastgele değişken bir değer aralığı üzerinde tanımlandığından, bir eğrinin altındaki alan (ya da integral) ile temsil edilir.

Sürekli rastgele değişkenin olasılık dağılımı, olasılık dağılım fonksiyonları olarak bilinir ve sürekli değerler alan fonksiyonlardır. Tek bir değerin gözlemlenme olasılığı $0$’dır; çünkü rastgele değişkenin alabileceği değerlerin sayısı sonsuzdur. Örneğin, bir rastgele değişken $X$, gerçek sayıların bir aralığı üzerindeki tüm değerleri alabilir. O hâlde $X$’in $A$ sonuç kümesi içinde olma olasılığı $P(A)$, $A$’nın üstünde ve bir eğrinin altında kalan alan olarak tanımlanır. $p(x)$ fonksiyonunu temsil eden bu eğri, şu koşulları sağlamalıdır:

1: Eğrinin negatif değeri yoktur ($(p(x) > 0$ tüm $x$ için))

2: Eğrinin altındaki toplam alan $1$’e eşittir.

Bu gereklilikleri karşılayan bir eğriye genellikle yoğunluk eğrisi denir. Sürekli olasılık dağılımlarına örnek olarak normal dağılım, üstel dağılım, beta dağılımı vb. verilebilir.

Literatürde sıkça karşınıza çıkan ve bilmeniz gereken bir başka dağılım türü de kümülatif dağılım fonksiyonudur. Tüm rastgele değişkenlerin (ayrık ve sürekli) bir kümülatif dağılım fonksiyonu vardır. Bu fonksiyon, rastgele değişken $X$’in her $x$ değeri için $x$’e küçük ya da eşit olma olasılığını verir. Ayrık bir rastgele değişken için kümülatif dağılım fonksiyonu, olasılıkların toplanmasıyla bulunur.

Bir sonraki bölümde bazı önemli dağılımları keşfedecek ve bunları Python’da uygulamaya çalışacaksınız; ancak ondan önce kullanacağınız gerekli kütüphaneleri içe aktarın.

# for inline plots in jupyter
%matplotlib inline
# import matplotlib
import matplotlib.pyplot as plt
# for latex equations
from IPython.display import Math, Latex
# for displaying images
from IPython.core.display import Image
# import seaborn
import seaborn as sns
# settings for seaborn plotting style
sns.set(color_codes=True)
# settings for seaborn plot sizes
sns.set(rc={'figure.figsize':(5,5)})

Bu eğitimdeki kodu çevrimiçi olarak çalıştırın ve düzenleyin

Kodu çalıştır

Ücretsiz Python Öğrenmeye Başlayın

Python ile Olasılığın Temelleri

BasicSkill Level
5 sa
16.7K learners
Rastgele değişkenler, ortalama ve varyans, olasılık dağılımları ve koşullu olasılıklar gibi temel olasılık kavramlarını öğrenin.
See DetailsRight Arrow
Start Course

Uniform Dağılım Fonksiyonu

En basit ve kullanışlı dağılımlardan biri uniform dağılımdır. Sürekli uniform dağılımın olasılık dağılım fonksiyonu şöyledir:

Sürekli Uniform Dağılım Fonksiyonu

Eşit genişlikteki herhangi bir sayı aralığının gözlemlenme olasılığı eşit olduğundan, dağılımı tanımlayan eğri, aralık boyunca sabit yükseklikte ve başka yerde 0 yükseklikte bir dikdörtgendir. Eğrinin altındaki alan 1’e eşit olmalıdır; bu nedenle aralığın uzunluğu eğrinin yüksekliğini belirler. Aşağıdaki şekilde (a,b) aralığında bir uniform dağılım gösterilmektedir. Alanın $1$ olması gerektiğine dikkat edin. Yükseklik $1/(b-a)$ olarak ayarlanır.

(A,B) Aralığında Uniform Dağılımı Görselleştirme

Python’da Uniform Dağılım

Python’da (a,b) sayı aralığı üzerinde çalışan bir rastgele sayı üreteci yardımıyla uniform dağılımı görselleştirebilirsiniz. scipy.stats modülünden uniform fonksiyonunu içe aktarmanız gerekir.

# import uniform distribution
from scipy.stats import uniform

uniform fonksiyonu, loc ve scale argümanlarıyla belirtilen aralık arasında sürekli uniform değişken üretir. Bu dağılım loc ile loc + scale arasında sabittir. size argümanı, rastgele değişken sayısını belirtir. Tekrarlanabilirliği korumak istiyorsanız, bir sayıya atanmış random_state argümanı ekleyin.

# random numbers from uniform distribution
n = 10000
start = 10
width = 20
data_uniform = uniform.rvs(size=n, loc = start, scale=width)

Az önce oluşturduğunuz dağılımın histogramını çizmek için Seaborn’un distplot fonksiyonunu kullanabilirsiniz. Seaborn’un distplot’u grafiği özelleştirmek için birden çok argüman alır. Önce bir grafik nesnesi ax oluşturursunuz. Burada histogramdaki bins sayısını belirtebilir, histogramın color’ını ayarlayabilir; kde ile yoğunluk eğrisi seçeneğini ve hist_kws ile çizgi kalınlığı seçeneğini belirtebilirsiniz. Ayrıca x ve y ekseni etiketlerini xlabel ve ylabel argümanlarıyla ayarlayabilirsiniz.

ax = sns.distplot(data_uniform,
                  bins=100,
                  kde=True,
                  color='skyblue',
                  hist_kws={"linewidth": 15,'alpha':1})
ax.set(xlabel='Uniform Distribution ', ylabel='Frequency')
[Text(0,0.5,u'Frequency'), Text(0.5,0,u'Uniform Distribution ')]
Python’da Uniform Dağılımın Grafikle Görselleştirilmesi

Normal Dağılım Fonksiyonu

Normal dağılım, diğer adıyla Gauss dağılımı, Veri Bilimi’nde her yerde karşımıza çıkar. Özellikle istatistiksel çıkarım konularında sıkça rastlanır. Birçok veri bilimi algoritmasının da varsayımlarından biridir.

Normal dağılım, ortalaması $μ$ ve standart sapması $σ$ ile tanımlanan çan şeklinde bir yoğunluk eğrisine sahiptir. Yoğunluk eğrisi simetriktir, ortalaması etrafında merkezlenmiştir ve yayılımı standart sapma tarafından belirlenir; bu, ortalamaya yakın verilerin uçlardaki verilere göre daha sık görüldüğünü gösterir. Ortalama $μ$ ve standart sapma $σ$ olan bir normal yoğunluk eğrisinin, verilen $x$ noktasındaki olasılık dağılım fonksiyonu şöyledir:

Normal Dağılım Fonksiyonu

Aşağıda, dağılımın nasıl göründüğünü anlatan şekil yer almaktadır:

Normal Dağılımın Görselleştirilmesi

Verilerin yaklaşık %68’i ortalamadan her iki tarafta bir standart sapmalık mesafe içinde, %95’i ise iki standart sapma içinde yer alır. Ayrıca, ortalaması $0$ ve standart sapması $1$ olan dağılıma standart normal dağılım denir.

Python’da Normal Dağılım

scipy.stats modülünün norm.rvs() yöntemiyle normal dağılıma sahip rastgele değişken üretebilirsiniz. loc argümanı dağılımın ortalamasına, scale standart sapmaya, size ise rastgele değişken sayısına karşılık gelir. Tekrarlanabilirliği korumak istiyorsanız, bir sayıya atanmış random_state argümanı ekleyin.

from scipy.stats import norm
# generate random numbers from N(0,1)
data_normal = norm.rvs(size=10000,loc=0,scale=1)

Dağılımı, uniform dağılımda yaptığınız gibi seaborn’un distplot fonksiyonunu kullanarak görselleştirebilirsiniz. Argümanların anlamı öncekiyle aynıdır.

ax = sns.distplot(data_normal,
                  bins=100,
                  kde=True,
                  color='skyblue',
                  hist_kws={"linewidth": 15,'alpha':1})
ax.set(xlabel='Normal Distribution', ylabel='Frequency')
[Text(0,0.5,u'Frequency'), Text(0.5,0,u'Normal Distribution')]
Python’da Normal Dağılımın Grafikle Görselleştirilmesi

Gamma Dağılımı Fonksiyonu

Gamma dağılımı, iki parametreli sürekli olasılık dağılımları ailesidir. Ham hâliyle nadiren kullanılsa da üstel, ki-kare, Erlang gibi yaygın dağılımlar gamma dağılımının özel hâlleridir. Gamma dağılımı, bir biçim parametresi $α = k$ ve bir ters ölçek parametresi $β = 1/θ$ (hız parametresi) ile parametrikleştirilebilir; $Γ(n)$ sembolü gamma fonksiyonudur ve $(n-1)!$ olarak tanımlanır:

Gamma Dağılım Fonksiyonu

Tipik bir gamma dağılımı şu şekildedir:

Gamma Dağılımının Görselleştirilmesi

Python’da Gamma Dağılımı

scipy.stats modülünün gamma.rvs() yöntemi ile, argüman olarak biçim parametresi $a$’yı alan gamma dağılımlı rastgele değişken üretebilirsiniz. $a$ bir tamsayı olduğunda gamma, Erlang dağılımına indirgenir; $a=1$ olduğunda ise üstel dağılıma. Dağılımı kaydırmak için loc, ölçeklendirmek için scale argümanlarını kullanın; size, dağılımdaki rastgele değişken sayısını belirler. Tekrarlanabilirliği korumak istiyorsanız, bir sayıya atanmış random_state argümanı ekleyin.

from scipy.stats import gamma
data_gamma = gamma.rvs(a=5, size=10000)

Dağılımı, uniform dağılım bölümünde açıklandığı gibi seaborn’un distplot fonksiyonlarıyla görselleştirebilirsiniz. Argümanların anlamı aynıdır.

ax = sns.distplot(data_gamma,
                  kde=True,
                  bins=100,
                  color='skyblue',
                  hist_kws={"linewidth": 15,'alpha':1})
ax.set(xlabel='Gamma Distribution', ylabel='Frequency')
[Text(0,0.5,u'Frequency'), Text(0.5,0,u'Gamma Distribution')]
Python’da Gamma Dağılımının Grafikle Görselleştirilmesi

Üstel Dağılım Fonksiyonu

Üstel dağılım, Poisson nokta sürecindeki olaylar arasındaki süreyi tanımlar; yani olayların sabit bir ortalama hızla, sürekli ve birbirinden bağımsız gerçekleştiği bir süreç. $λ$ olarak adlandırılan bir hız parametresine sahiptir ve denklemi şöyledir:

Üstel Dağılım Fonksiyonu

Azalan bir üstel dağılım şöyle görünür:

Üstel Dağılımın Görselleştirilmesi

Python’da Üstel Dağılım

scipy.stats modülünün expon.rvs() yöntemiyle üstel dağılımlı rastgele değişken üretebilirsiniz; bu yöntem scale adlı biçim parametresini argüman olarak alır ve denklemdeki 1/lambda’dan ibarettir. Dağılımı kaydırmak için loc, size ile rastgele değişken sayısını belirleyin. Tekrarlanabilirliği korumak istiyorsanız, bir sayıya atanmış random_state argümanı ekleyin.

from scipy.stats import expon
data_expon = expon.rvs(scale=1,loc=0,size=1000)

Dağılımı yeniden seaborn ile görselleştirmek aşağıdaki eğriyi verir:

ax = sns.distplot(data_expon,
                  kde=True,
                  bins=100,
                  color='skyblue',
                  hist_kws={"linewidth": 15,'alpha':1})
ax.set(xlabel='Exponential Distribution', ylabel='Frequency')
[Text(0,0.5,u'Frequency'), Text(0.5,0,u'Exponential Distribution')]
Python’da Üstel Dağılımın Grafikle Görselleştirilmesi

Poisson Dağılımı

Poisson rastgele değişkeni, genellikle bir zaman aralığında bir olayın kaç kez gerçekleştiğini modellemek için kullanılır. Örneğin, belirli bir zaman diliminde bir web sitesini ziyaret eden kullanıcı sayısı bir Poisson süreci olarak düşünülebilir. Poisson dağılımı, olayların gerçekleşme hızı ($μ$) cinsinden tanımlanır. Bir olay bir aralıkta 0, 1, 2, … kez meydana gelebilir. Bir aralıktaki ortalama olay sayısı $λ$ (lambda) ile gösterilir. Lambda, olay hızıdır ve hız parametresi olarak da adlandırılır. Bir aralıkta $k$ olay gözlemlenme olasılığı şu denklemle verilir:

Poisson Dağılım Fonksiyonu

Not normal dağılım, $λ →∞$ iken Poisson dağılımının sınır hâlidir. Ayrıca, rastgele olaylar arasındaki süreler $λ$ hız parametresiyle üstel dağılıma uyuyorsa, uzunluğu $t$ olan bir zaman dilimindeki toplam olay sayısı, parametresi $λt$ olan Poisson dağılımına uyar.

Aşağıdaki şekil tipik bir Poisson dağılımını göstermektedir:

Poisson Dağılımının Görselleştirilmesi

Python’da Poisson Dağılımı

scipy.stats modülünün poisson.rvs() yöntemiyle, denklemlerdeki $λ$’ya karşılık gelen $μ$ biçim parametresini alan Poisson dağılımlı ayrık rastgele değişken üretebilirsiniz. Dağılımı kaydırmak için loc parametresini kullanın. size, dağılımdaki rastgele değişken sayısını belirler. Tekrarlanabilirliği korumak istiyorsanız, bir sayıya atanmış random_state argümanı ekleyin.

from scipy.stats import poisson
data_poisson = poisson.rvs(mu=3, size=10000)

Dağılımı, uniform dağılımda yaptığınız gibi seaborn’un distplot fonksiyonlarıyla görselleştirebilirsiniz. Argümanların anlamı aynıdır.

ax = sns.distplot(data_poisson,
                  bins=30,
                  kde=False,
                  color='skyblue',
                  hist_kws={"linewidth": 15,'alpha':1})
ax.set(xlabel='Poisson Distribution', ylabel='Frequency')
[Text(0,0.5,u'Frequency'), Text(0.5,0,u'Poisson Distribution')]
Python’da Poisson Dağılımının Grafikle Görselleştirilmesi

Binom Dağılımı Fonksiyonu

Yalnızca iki sonucun mümkün olduğu, örneğin başarı ya da başarısızlık, kazanç ya da kayıp, kazan ya da kaybet gibi ve tüm denemelerde başarı ve başarısızlık olasılığının aynı olduğu bir dağılıma Binom Dağılımı denir. Ancak sonuçların eşit olasılıklı olması gerekmez ve her deneme birbirinden bağımsızdır. Binom dağılımının parametreleri $n$ ve $p$’dir; burada $n$ toplam deneme sayısı, $p$ ise her denemedeki başarı olasılığıdır. Olasılık kütle fonksiyonu şöyledir:

Binom Dağılım Fonksiyonu

burada:

Binom Dağılımı Sabit Fonksiyonu

Python’da Binom Dağılımı

scipy.stats modülünün binom.rvs() yöntemiyle, şekil parametreleri olarak $n$ (deneme sayısı) ve $p$ (başarı olasılığı) alan binom dağılımlı ayrık rastgele değişken üretebilirsiniz. Dağılımı kaydırmak için loc parametresini kullanın. size, denemelerin kaç kez tekrarlanacağını belirler. Tekrarlanabilirliği korumak istiyorsanız, bir sayıya atanmış random_state argümanı ekleyin.

from scipy.stats import binom
data_binom = binom.rvs(n=10,p=0.8,size=10000)

Seaborn’un distplot fonksiyonunu kullanarak oluşturduğunuz dağılımı görselleştirmek aşağıdaki histogramı üretir:

ax = sns.distplot(data_binom,
                  kde=False,
                  color='skyblue',
                  hist_kws={"linewidth": 15,'alpha':1})
ax.set(xlabel='Binomial Distribution', ylabel='Frequency')
[Text(0,0.5,u'Frequency'), Text(0.5,0,u'Binomial Distribution')]
Python’da Binom Dağılımının Grafikle Görselleştirilmesi

Not başarı olasılığı $0.5$’ten büyük olduğundan dağılım sağ tarafa çarpıktır. Ayrıca, aşağıdaki koşullar altında Poisson dağılımı, binom dağılımının bir sınır hâlidir:

  1. Deneme sayısı sonsuz derecede büyüktür, $n → ∞$.
  2. Her denemedeki başarı olasılığı aynıdır ve sonsuz derecede küçüktür, $p →0$.
  3. $np = λ$ sonludur.

Normal dağılım ise aşağıdaki koşullar altında binom dağılımının bir diğer sınır biçimidir:

  1. Deneme sayısı sonsuz derecede büyüktür, $n → ∞$.
  2. Hem $p$ hem $q$ sonsuz derecede küçük değildir.

Bernoulli Dağılımı Fonksiyonu

Bernoulli dağılımında yalnızca iki olası sonuç vardır: $1$ (başarı) ve $0$ (başarısızlık); örneğin yazı-tura atışı. Dolayısıyla Bernoulli dağılımına sahip rastgele değişken $X$, başarı olasılığı $p$ ile $1$ değerini; başarısızlık olasılığı $q$ ya da $1-p$ ile $0$ değerini alabilir. Başarı ve başarısızlık olasılıklarının eşit olmasına gerek yoktur. Bernoulli dağılımı, tek bir denemenin yapıldığı ($n=1$) binom dağılımının özel bir hâlidir. Olasılık kütle fonksiyonu şöyledir:

Bernoulli Dağılım Fonksiyonu

Python’da Bernoulli Dağılımı

scipy.stats modülünün bernoulli.rvs() yöntemiyle, şekil parametresi olarak $p$ (başarı olasılığı) alan Bernoulli dağılımlı ayrık rastgele değişken üretebilirsiniz. Dağılımı kaydırmak için loc parametresini kullanın. size, denemelerin kaç kez tekrarlanacağını belirler. Tekrarlanabilirliği korumak istiyorsanız, bir sayıya atanmış random_state argümanı ekleyin.

from scipy.stats import bernoulli
data_bern = bernoulli.rvs(size=10000,p=0.6)

Dağılımı yeniden görselleştirdiğinizde, yalnızca iki olası sonuç olduğunu gözlemleyebilirsiniz:

ax= sns.distplot(data_bern,
                 kde=False,
                 color="skyblue",
                 hist_kws={"linewidth": 15,'alpha':1})
ax.set(xlabel='Bernoulli Distribution', ylabel='Frequency')
[Text(0,0.5,u'Frequency'), Text(0.5,0,u'Bernoulli Distribution')]
Python’da Bernoulli Dağılımının Grafikle Görselleştirilmesi

Sonuç

Tebrikler, bu eğitimin sonuna geldiniz! Bu eğitimde, yaygın olarak kullanılan bazı olasılık dağılımlarını keşfettiniz ve bunları Python’da oluşturup görselleştirmeyi öğrendiniz. Keşfedilecek başka birçok dağılım olsa da başlamak için bunlar yeterli olacaktır. Diğer faydalı istatistiksel işlevler için Python’un scipy kütüphanesini incelemeyi unutmayın. İyi keşifler!

Python’da olasılık hakkında daha fazla bilgi edinmek isterseniz, DataCamp’in Statistical Simulation in Python kursunu alın.

Python ile Poker Olasılığı ve İstatistik eğitimimize göz atın.

Kaynakça

Konular
Python
Veri Analizi
Makine Öğrenimi

Python Kursları

Kurs

Python’a Giriş

4 sa
7.1M
Python ile veri analizi temellerini sadece dört saatte öğrenin. Bu çevrimiçi kurs, Python arayüzünü tanıtacak ve popüler paketleri keşfedecektir.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör