Neler yeni
Bughane Academy

Bughane Academy, bug bounty, web güvenliği ve sızma testi alanında kendini geliştirmek isteyenler için kurulmuş Türkçe odaklı bir topluluktur.

Burada; gerçek güvenlik açıkları, recon ve exploit teknikleri, payload & bypass yöntemleri, araçlar, scriptler ve write-up’lar topluluk tarafından paylaşılır ve tartışılır.

Birlikte öğren, birlikte üret, birlikte güçlen.

Analiz Makine Öğrenmesi Nedir?

omertugrulbayram

Moderator
Araştırmacı
Katılım
2 Ocak 2026
Mesajlar
38
Tepkime puanı
46
Puan
18
Merhaba arkadaşlar, bugün Machine Learning ve Deep Learning konularını detaylı bir şekilde örnekli anlatacağım. Biraz uzun soluklu bir yazı olucak, umarım faydalı olur. Öncelikle Temel Makine Öğrenmesi kavramıyla başlıyoruz. Makine öğrenmesinin en temelinde, bilgisayara nasıl öğrenmesi gerektiğini öğreten üç ana yaklaşım vardır. Bu yaklaşımlar, sahip olduğumuz verinin türüne göre değişir.
  • Gözetimli Öğrenme (Supervised Learning): Bilgisayara, doğru cevapları önceden bildiğimiz etiketli verilerle eğitim veririz. Örneğin, fotoğrafların hangisinin kedi, hangisinin köpek olduğunu önceden söyleriz ve bilgisayar bu eşleşmelerden öğrenir.

  • Gözetimsiz Öğrenme (Unsupervised Learning): Burada sadece veri vardır, etiket yoktur. Bilgisayar, verinin içindeki gizli kalıpları, benzerlikleri veya grupları kendi kendine keşfetmeye çalışır.

  • Pekiştirmeli Öğrenme (Reinforcement Learning): Bir robotun veya yapay zekanın, bir oyunda veya ortamda deneme-yanılma yoluyla öğrenmesidir. Doğru hareketler için ödül, yanlışlar için ceza alır.

Gözetimli öğrenme konusu kendi içinde iki ayrı başlığa ayrılır:
  • Sınıflandırma (Classification): Tahmin edilen değerin bir kategori olduğu durumlardır. Örneğin, bir e-postanın spam mı yoksa normal mi olduğunu tahmin etmek, bir tümörün kötü huylu mu iyi huylu mu olduğunu belirtmek gibi. Cevaplar sınırlı ve nettir.

  • Regresyon (Regression): Tahmin edilen değerin sürekli ve sayısal bir değer olduğu durumlardır. Örneğin, bir evin metrekare, oda sayısı gibi özelliklerine bakarak fiyatını tahmin etmek yada hava sıcaklığını tahmin etmek gibi. Cevaplar belli bir aralıktaki herhangi bir sayı olabilir.

Şimdi bir örnek düşünelim: Bir modelin, bir kişinin eğiti süresine ve yaşına bakarak yıllık gelirinin tahmin etmesini istiyoruz. Sence bu sınıflandırma mı yoksa regresyon problemi mi olur?
Doğru Cevap: Regresyon
Yıllık gelir
sürekli bir sayısal değer olduğu için bu bir regresyon problemidir.
Bu tür basit regresyon problemlerini çözmek için en temel algoritmalardan biri Doğrusal Regresyon (Linear Regresion)'dur. Mantığı çok basit: Elimizdeki veriye en uygun düz bir çizgi çekerek bu çizginin denklemi üzerinde tahmin yaparız. İşte bu çizgi, bizim makine öğrenmesi modelimiz olur. Bu denklem genellikle,

Şeklinde ifade edilir.
  • y: Tahmin etmek istediğimiz değer (gelir)
  • x: Girdi verimiz (yaş, eğitim süresi vb.)
  • m: x'in y üzerindeki etkisini gösteren katsayı
  • b: Sabit bir değer
Bu mantığı python'da uygulamak için, scikit-learn gibi kütüphaneleri kullanırız. Peki, bir Python projesine başlarken ilk yapmamız gereken şey nedir?
Cevap:
Kütüphaneleri import etmek.
Temel bir doğrusal regresyon modeli için en çok kullanılan kütüphanelerden ikisini şimdi import edelim.

import numpy as np
from sklearn.linear_model import LinearRegression

Kütüphaneleri içeri aktardıktan sonra, modelin öğrenebilmesi için veri hazırlığı yapmamız gerekir, çünkü makineleri öğrenmesi için verileri gereklidir. Bu makine öğrenmesinin en kritik adımlarından biridir. Hatırlarsak, örneğimizde bir kişinin yaş ve eğitim süresini kullanarak yıllık gelirini tahmin ediyorduk. Gözetimli öğrenmede, bu verileri iki ana gruba ayırırız.
  • Girdi Verisi (Features): Tahmin yapmak için kullandığımız veriler. Örneğimizde bunlar yaş ve eğitim süresi olurdu. Genellikle X ile gösterilir.
  • Hedef Verisi (Target): Tahmin etmeye çalıştığımız sonuç. Örneğimizde buda yıllık gelir olurdu. Genellikle Y ile gösterilir.
Şimdi bu verileri bir Python projesinde kullanalım. Örneğin, bir kaç kişiye ait yaş, eğiitm süresi ve gelir verilerini tutalım.
Python:
X = np.array([[25, 4],
              [35, 8],
              [45, 12],
              [55, 16],
              [65, 16]])
   
y = np.array([30, 60, 90, 120, 150])

Verileri hazırladık, şimdi bu verileri kullanacak bir modele ihtiyacımız var o yüzden model adında bir nesne oluşturuyoruz.

Python:
model = LinearRegression()

Bu kodla birlikte model adında bir Doğrusal Regresyon modelimiz oldu. Şimdi bu boş modeli daha önce hazırladığımız x ve y verileriyle eğitmemiz gerekiyor. scikit-learn kütüphanesinde bu işlemi yapan fonksiyon fit() fonksiyonudur.
Python:
model.fit(X, y)
Bu kod satırında modelimize şunu diyoruz: Bak, sana girdileri (X) ve bunlara karşılık gelen doğru cevapları (y) veriyorum. Bu veriler arasındaki ilişkiyi bul ve bu ilişkiyi kullanarak gelecekteki tahminleri yapmayı öğrenin. Model bu aşamada y = mx + b denklemindeki m ve b değerlerini bulur ve kendine kaydeder. Artık modelimiz eğitilmiş durumda. Modelimizi eğittik. Artık asıl amacımız, yani tahmin yapma kısmına geçebiliriz. Tahmin yapmak için scikit-learn'deki predict() fonksiyonunu kullanırız. Bu fonksiyon, daha önce eğitimde görmediği yeni verileri alır ve öğrendiği ilişkiye göre bir tahmin sonucu döndürür. Şimdi tüm süreci tek parça kod bloğunda göreceğiz.

Python:
import numpy as np
from sklearn.linear_model import LinearRegression


X = np.array([[25, 4],
              [35, 8],
              [45, 12],
              [55, 16],
              [65, 16]])
   
y = np.array([30, 60, 90, 120, 150])

model = LinearRegression()
model.fit(X, y)


yeni_veri = np.array([[40, 10]])

tahmin_edilen_gelir = model.predict(yeni_veri)

print(f"40 yaşında, 10 yıl eğitim almış bir kişinin tahmini geliri: {tahmin_edilen_gelir[0]:.2f} bin dolar.")

Output:
40 yaşında 10 sene eğitim almış bir kişinin tahmini geliri[75.]bin dolar
Bu kod, modelin öğrendiği ilişkiden yola çıkarak bu kişinin gelirinin 75 bin dolar civarında olacağını tahmin eder. Gördüğümüz gibi, temel bir makine öğrenmesi modeli kurmak üç ana adımdan oluşur: veri hazırlama, model eğitme ve tahmin yapma. Sıradaki adımda bu modelin ne kadar iyi tahmin yaptığını nasıl değerlendireceğimizi (Modelin performansını) Öğreneceğiz.
Bir makine öğrenmesi modelinin tahmin yapabildiğini gördük. Ama asıl soru şu: Ne kadar iyi tahmin yapıyor? Bu, modelimizin performansını değerlendirmemizi gerektirir. Modelimizin performansını ölçmek için bir çok farklı metrik (Ölçüm) vardır. Regresyon problemleri için en basit ve anlaşılır olanlardan biri Mean Absolute Error (Ortalama Mutlak Hata - MAE)'dir. Şimdi, önceki kodumuza bir adım daha ekleyerek MAE'yi nasıl hesaplayacağımızı görelim. Bu, scikit-learn'den mean_absolute_error fonksiyonunun içeri aktarmamızı gerektirir.

Python:
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error # Yeni eklenen fonksiyon

X = np.array([[25, 4], [35, 8], [45, 12], [55, 16], [65, 16]])
y = np.array([30, 60, 90, 120, 150])

model = LinearRegression()
model.fit(X, y)

tahmin_edilenler = model.predict(X)


mae = mean_absolute_error(y, tahmin_edilenler)

print("Modelimizin Ortalama Mutlak Hatası (MAE):" + str(mae))

Sonuç şu şekilde çıktı,
Modelimizin Ortalama Mutlak Hatası (MAE):1.4210854715202004e-14

Yani sıfıra çok yakın, resmen hatasız demek.
Şimdi daha gerçekçi bir senaryoya geçelim. Bizim verilerimiz mükemmeldi ama gerçek dünyada veriler genellikle bu kadar kusursuz olmaz. Ayrıca, bir modeli eğittiğiniz verilerle değil, daha önce hiç görmediği yeni verilerle test etmeliyiz. Buna makine öğrenmesinde eğitim-test ayrımı (train-test-split) denir. Şimdi, daha karışık bir veri oluşturalım ve bu veriyi eğitim, test kütüphanelerinden ayıralım.

Python:
from sklearn.model_selection import train_test_split

np.random.seed(0)
X_yeni = np.array([[25, 4], [35, 8], [45, 12], [55, 16], [65, 16]])
y_yeni = np.array([30, 60, 90, 120, 150]) + np.random.randn(5) * 5


X_egitim, X_test, y_egitim, y_test = train_test_split(X_yeni, y_yeni, test_size=0.2, random_state=42)

print("Eğitim verisi boyutu:", X_egitim.shape)
print("Test verisi boyutu:", X_test.shape)

Output:
Eğitim verisi boyutu: (4, 2)
Test verisi boyutu: (1, 2)

Bu çıktılar, train_test_split fonksiyonunun veriyi başarıyla ikiye ayırdığını gösteriyor:

  • Eğitim verisi boyutu: (4, 2): Bu, 4 satır (kişi) ve 2 sütündan (yaş, eğitim süresi) oluşan bir veri kümesi demek. Modelimiz bu 4 kişinin verisinden öğrenme yapacak.
  • Test verisi boyutu: (1, 2): Bu da 1 satır ve 2 sütündan oluşan test verimiz. Bu 1 kişinin verisi, modelimiz için daha önce hiç görmediği bir veri olacak.
Şimdi tüm bu süreci bir araya getirelim:
Python:
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error
from sklearn.model_selection import train_test_split

np.random.seed(0)
X_yeni = np.array([[25, 4], [35, 8], [45, 12], [55, 16], [65, 16]])
y_yeni = np.array([30, 60, 90, 120, 150]) + np.random.randn(5) * 5

X_egitim, X_test, y_egitim, y_test = train_test_split(X_yeni, y_yeni, test_size=0.2, random_state=42)

model = LinearRegression()
model.fit(X_egitim, y_egitim)

tahmin_edilenler = model.predict(X_test)

mae = mean_absolute_error(y_test, tahmin_edilenler)

print(f"Modelimizin Test Verisindeki Ortalama Mutlak Hatası (MAE): {mae:.2f}")
Output:
Modelimizin Test Verisindeki Ortalama Mutlak Hatası (MAE):6.038198637652137

Gördüğümüz gibi daha karışık veriler kullanıldığı zaman hata payımız o kadar da artıyor, az önceki hata oranımız hemen hemen 0 a yakınken şuanda 6.04 civarında bir hata payına sahibiz. Bu değer, verimizdeki rastgele hatalardan kaynaklanan ve gerçekçi bir senaryo için oldukça normal bir sonuçtur. Bu yaptıklarımız ile birlikte en temel seviyede bir makine öğrenmesi modelinin nasıl çalıştığını, kodlarıyla birlikte adım adım öğrendik. Yaptığımız işlemler şunlardı:
  • Veriyi Hazırladık: Girdi (x) ve hedef (y) verilerini oluşturduk.
  • Veriyi Ayırdık: Modelimizi gerçek dünyada test etmek için eğitim ve test verilerini ayırdık.
  • Modeli Seçtik: En basit regresyon algoritması olan Doğrusal Regresyon modelini seçtik.
  • Modeli Eğittik: Modelini eğitin verisindeki ilişkiyi öğrenmesini sağladık.
  • Tahmin Yaptık: Modeli, daha önce görmediği test verisi üzerinde çalıştırdık.
  • Performansı Değerlendirdik: Tahminlerimizin ne kadar doğru olduğunu bir metrikle (MAE) ölçtük.

Makine öğrenmesi bölümü burada bitmiş oldu, bundan sonraki yazımızda Derinlemesine Öğrenmeye adım atabiliriz.
 
Geri
Üst