Emirhan Talha BALCI
Tüm Yazılar

Machine Learning'e İlk Adım: Ubuntu Dual-Boot ve Data Pipeline Kurulumu

Diski bölümlendirerek çift önyüklemeli bir Ubuntu ortamı kurma ve Python, NumPy, Pandas ile ilk veri analizi pipeline'ını yazma deneyimi.

Makine öğrenmesi çalışmalarına ciddi şekilde başlamak isteyenin önünde ilk gerçek engel, çoğunlukla ortamı kurmaktır. Bu yazıda çift önyüklemeli bir Ubuntu sistemi nasıl kurduğumu, Python araç zincirini nasıl yapılandırdığımı ve NumPy, SciPy ile Pandas kullanarak ilk veri analizi pipeline'ımı nasıl yazdığımı aktarıyorum.

Neden Ubuntu?

Ciddiye alınmış makine öğrenmesi çalışmalarının neredeyse tamamı Linux üzerinde yapılıyor. CUDA sürücüleri, Python'un yerel araç zinciri ve kabuk betikleri; Ubuntu'da Windows'a kıyasla çok daha öngörülebilir bir biçimde çalışıyor. Günlük iş akışını bozmamak için çift önyükleme tercih ettim; bu sayede Windows mevcut kalırken ML workload'ları ayrı ve temiz bir ortama taşındı.

Disk Bölümlendirme Süreci

Kurulumun en dikkat gerektiren adımı disk bölümlendirmesi. Adımlar şöyle sıralandı:

  1. Windows'ta Disk Yönetimi aracıyla mevcut bölümü küçülterek yeterli boş alan açmak.
  2. Ubuntu 22.04 LTS ISO'sunu Rufus ile bir USB belleğe yazdırmak.
  3. BIOS'tan Secure Boot'u geçici olarak devre dışı bırakmak.
  4. Ubuntu kurucusundaki "Yükleyici" seçeneğiyle bölüm tablosunu elle yapılandırmak:
    • / (root) — 40 GB, ext4
    • /home — kalan alan, ext4
    • swap — RAM büyüklüğünde, takas alanı

GRUB önyükleyicisi otomatik yapılandırıldıktan sonra sistem yeniden başlatıldığında her iki işletim sistemine de erişebildim.

Python Araç Zincirini Yapılandırmak

Ubuntu kurulumunun ardından ilk iş, tekrarlanabilir bir Python ortamı oluşturmak oldu. Her projeye izole bir sanal ortam atamak bağımlılık çakışmalarını önlüyor:

sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip python3-venv build-essential -y

python3 -m venv .venv
source .venv/bin/activate

pip install numpy pandas scipy matplotlib scikit-learn
pip freeze > requirements.txt

requirements.txt dosyasını en baştan oluşturmak projeyi taşınabilir ve gözden geçirilebilir kılıyor — bu alışkanlığı kazanmak erken dönemde çok değerli.

NumPy, SciPy ve Pandas ile İlk Adımlar

Kütüphaneleri teoride öğrenmenin en iyi yolu, onları hemen gerçek veri üzerinde kullanmak. Aşağıdaki örnek, küçük bir CSV veri setini yükleyen, temel istatistiksel özet çıkaran ve eksik değerleri temizleyen minimal ama eksiksiz bir pipeline gösteriyor:

import pandas as pd
import numpy as np
from scipy import stats

# Veri setini yükle
df = pd.read_csv("satis_verisi.csv")

# Yapıyı incele
print(f"Boyut: {df.shape}")
print(df.dtypes)
print(df.isnull().sum())

# Kritik sütunlarda eksik değerleri düşür
df = df.dropna(subset=["gelir", "tarih"])

# Tarih sütununu ayrıştır, ay periyodu çıkar
df["tarih"] = pd.to_datetime(df["tarih"])
df["ay"] = df["tarih"].dt.to_period("M")

# Aylık toplam gelir
aylik = (
    df.groupby("ay")["gelir"]
    .sum()
    .reset_index()
    .rename(columns={"gelir": "toplam_gelir"})
)

# Temel istatistikler — SciPy ile z-skoru hesapla
z_skorlari = np.abs(stats.zscore(df["gelir"].dropna()))
aykiri_deger_sayisi = (z_skorlari > 3).sum()

print(aylik.head(12))
print(f"Aykırı değer sayısı (|z| > 3): {aykiri_deger_sayisi}")

Bu örüntü hakkında dikkat edilmesi gereken birkaç nokta:

Temel Çıkarımlar

Herhangi bir model kodu yazmadan önce ortamı doğru kurmak, sonraki süreçte büyük avantaj sağlıyor. Kararlı Ubuntu tabanı, izole sanal ortamlar ve temiz bir veri yükleme örüntüsü; her ML projesinin dayandığı iskelet. Bir sonraki adım, betimleyici analizden — gruplama ve inceleme — Scikit-learn ile tahmine dayalı çalışmaya geçmek.

Bu pipeline'ın kodu GitHub profilimde mevcut.