1
// TEMEL ALTYAPI · BAŞLANGIÇ
Python + Kütüphaneler + Matematik
NumPy · Pandas · Matplotlib · Seaborn · İstatistik · Lineer Cebir
▶
NumPyPandasMatplotlib
SeabornList Comprehension
LambdaJSONCSV
# NumPy — sayısal hesaplama temeli
import numpy as np
import pandas as pd
dizi = np.array([1, 2, 3, 4, 5])
matris = np.array([[1,2],[3,4]])
np.mean(dizi), np.std(dizi), np.dot(matris, matris.T)
# Pandas — veri manipülasyonu kalbi
df = pd.read_csv("veri.csv")
df.info() # genel bakış
df.describe() # istatistik özeti
df["yas"].value_counts() # frekans
df.groupby("sehir")["gelir"].mean() # groupby
# Pandas merge — SQL join gibi
sonuc = pd.merge(df1, df2, on="id", how="left")
pivot = df.pivot_table(values="satis", index="ay", aggfunc="sum")
// MATEMATİK & İSTATİSTİK — YETERİ KADAR, AKADEMİK DEĞİL
μ
Ortalama (Mean)
Σx / n — merkezin nerede?
M
Medyan (Median)
Ortanca değer — outlier'a dayanıklı
σ²
Varyans
Ortalamadan ortalama sapma karesi
r
Korelasyon
-1 ile 1 arası — doğrusal ilişki gücü
p
p-value
<0.05 → sonuç istatistiksel anlamlı
CLT
Central Limit Theorem
Büyük örneklem → normal dağılım. ML'nin temeli!
💡 Lineer Cebir neden önemli? ML algoritmalarının %90'ı matris operasyonları üstüne kurulu. Gradient descent, neural network ağırlıkları, PCA — hepsi lineer cebir. Vektör ve matris çarpımını anlayan, "kara kutuyu" anlayan olur.
Hedef: CSV okuyup analiz yap. Histogram, scatter, heatmap çiz. İstatistiksel özet çıkar.
2
// VERİ ANALİZİ · JUNIOR
EDA + Data Cleaning + Görselleştirme
Pandas Mastery · Outlier · Missing Data · Encoding · Scaling · EDA
▶
⭐ En Kritik Skill: Data Cleaning olmadan model kurulamazsiniz. "Garbage in, garbage out" — temiz veri = iyi model. Sektörde zamanın %70'i burada geçer.
# Exploratory Data Analysis — EDA akışı
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 1. Genel bakış
df.shape, df.dtypes, df.isnull().sum()
# 2. Missing data analizi
eksik_oran = (df.isnull().sum() / len(df)) * 100
# 3. Doldurma stratejileri
df["yas"].fillna(df["yas"].median(), inplace=True) # sayısal
df["sehir"].fillna(df["sehir"].mode()[0], inplace=True) # kategorik
# 4. Outlier tespiti — IQR yöntemi
Q1, Q3 = df["gelir"].quantile([.25, .75])
IQR = Q3 - Q1
alt, ust = Q1 - 1.5*IQR, Q3 + 1.5*IQR
df_temiz = df[(df["gelir"] >= alt) & (df["gelir"] <= ust)]
# 5. Encoding
from sklearn.preprocessing import LabelEncoder, StandardScaler
le = LabelEncoder()
df["cinsiyet_enc"] = le.fit_transform(df["cinsiyet"])
df_dummies = pd.get_dummies(df, columns=["sehir"]) # one-hot
# 6. Scaling
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X_train) # fit sadece train'e!
X_test_scaled = scaler.transform(X_test) # transform test'e
# Görselleştirme — iletişim aracı
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
# Histogram
df["gelir"].hist(ax=axes[0,0], bins=30)
# Scatter — iki değişken ilişkisi
sns.scatterplot(data=df, x="yas", y="gelir", hue="cinsiyet")
# Heatmap — korelasyon matrisi
sns.heatmap(df.corr(), annot=True, fmt=".2f", cmap="coolwarm")
# Box plot — outlier görselleştirme
sns.boxplot(data=df, x="sehir", y="gelir")
🚢 Titanic Analizi
🎬 Netflix Verisi
📊 EDA Raporu
3
// MACHINE LEARNING · ORTA SEVİYE
Algoritmalar + Model Değerlendirme + Scikit-learn
Supervised · Unsupervised · Overfitting · Cross-Val · Metrикler
▶
SUPERVISED · REG.
Linear Regression
Sürekli tahmin · house price · y = mx+b
SUPERVISED · CLF.
Logistic Regression
İkili sınıflandırma · sigmoid fonksiyon
SUPERVISED · TREE
Decision Tree
Kural ağacı · yorumlanabilir · overfitting riski
ENSEMBLE · 🔥
Random Forest
N ağaç → oylama · güçlü baseline · feature importance
SUPERVISED · DIST.
KNN
K en yakın komşu · mesafe bazlı · scaling şart
UNSUPERVISED
K-Means + PCA
Kümeleme · boyut azaltma · müşteri segmentasyonu
# Scikit-learn — standart ML workflow
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.metrics import classification_report, roc_auc_score
from sklearn.pipeline import Pipeline
# Pipeline — preprocessing + model birleştir
pipe = Pipeline([
("scaler", StandardScaler()),
("model", RandomForestClassifier(n_estimators=100, random_state=42))
])
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, stratify=y, random_state=42
)
pipe.fit(X_train, y_train)
# Cross validation — güvenilir değerlendirme
cv_scores = cross_val_score(pipe, X, y, cv=5, scoring="f1")
print(f"CV F1: {cv_scores.mean():.3f} ± {cv_scores.std():.3f}")
# Model değerlendirme
y_pred = pipe.predict(X_test)
print(classification_report(y_test, y_pred))
print(f"ROC-AUC: {roc_auc_score(y_test, pipe.predict_proba(X_test)[:,1]):.3f}")
# Hyperparameter tuning
from sklearn.model_selection import GridSearchCV
params = {"model__n_estimators": [50,100], "model__max_depth": [None,5,10]}
grid = GridSearchCV(pipe, params, cv=5, n_jobs=-1)
grid.fit(X_train, y_train)
Overfitting / Underfitting
Overfitting: train↑ test↓ → regularization, daha az feature. Underfitting: her ikisi↓ → daha karmaşık model.
Bias-Variance Tradeoff
Yüksek bias = underfitting. Yüksek variance = overfitting. Cross-val ile dengeyi bul.
| METRİK | FORMÜL | NE ZAMAN? |
|---|---|---|
| Accuracy | doğru / toplam | Dengeli sınıf dağılımı |
| Precision | TP/(TP+FP) | False positive maliyetliyse (spam) |
| Recall | TP/(TP+FN) | False negative kritikse (hastalık) |
| F1 Score | 2×(P×R)/(P+R) | Dengesiz sınıf dağılımı |
| ROC-AUC | eğri altı alan | İkili sınıflandırma genel değerlendirme |
🏠 House Price Prediction
📉 Customer Churn
4
// İLERİ SEVİYE · SENIOR YOL
Advanced ML + Deep Learning + NLP + Zaman Serisi
XGBoost · LightGBM · Neural Networks · CNN · LSTM · Transformer · ARIMA
▶
# XGBoost — Kaggle'ın favorisi
import xgboost as xgb
from lightgbm import LGBMClassifier
xgb_model = xgb.XGBClassifier(
n_estimators=500, learning_rate=0.05,
max_depth=6, subsample=0.8,
use_label_encoder=False, eval_metric="logloss",
early_stopping_rounds=50
)
xgb_model.fit(X_train, y_train,
eval_set=[(X_val, y_val)], verbose=False)
# LightGBM — daha hızlı, büyük veri için
lgb_model = LGBMClassifier(n_estimators=1000, learning_rate=0.01)
# Stacking ensemble
from sklearn.ensemble import StackingClassifier
stack = StackingClassifier(
estimators=[("xgb", xgb_model), ("lgb", lgb_model)],
final_estimator=LogisticRegression()
)
# PyTorch — Neural Network
import torch, torch.nn as nn
class TabularNet(nn.Module):
def __init__(self, in_features: int, n_classes: int):
super().__init__()
self.net = nn.Sequential(
nn.Linear(in_features, 256), nn.BatchNorm1d(256), nn.ReLU(), nn.Dropout(0.3),
nn.Linear(256, 128), nn.BatchNorm1d(128), nn.ReLU(), nn.Dropout(0.2),
nn.Linear(128, n_classes)
)
def forward(self, x): return self.net(x)
# Zaman Serisi — Prophet
from prophet import Prophet
model = Prophet(seasonality_mode="multiplicative", yearly_seasonality=True)
model.fit(df) # df: ds (tarih), y (değer) kolonları
gelecek = model.make_future_dataframe(periods=90)
tahmin = model.predict(gelecek)
NLP Pipeline
Text → temizleme → tokenizasyon → TF-IDF / Word2Vec → model. HuggingFace Transformers ile BERT fine-tuning.
CNN (Görüntü)
Konvolüsyon → pooling → flatten → dense. Transfer learning: ResNet/EfficientNet ile fine-tune.
🎬 Recommendation System
💳 Fraud Detection
🤖 NLP Chatbot
5
// GERÇEK DÜNYA · ÇOK ÖNEMLİ
SQL + ETL + Model Deployment + Dashboard
Window Functions · Airflow · Spark · FastAPI · Docker · Power BI
▶
-- SQL Window Functions — güçlü analitik araç
SELECT
musteri_id,
satis_tarihi,
tutar,
-- Kümülatif toplam
SUM(tutar) OVER (PARTITION BY musteri_id ORDER BY satis_tarihi) AS kumulatif,
-- Önceki satışa fark
tutar - LAG(tutar) OVER (PARTITION BY musteri_id ORDER BY satis_tarihi) AS fark,
-- Sıralama
RANK() OVER (PARTITION BY ay ORDER BY tutar DESC) AS sira,
-- Yüzdelik dilim
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY tutar) OVER () AS medyan
FROM satislar;
# Model Deployment — FastAPI
from fastapi import FastAPI
from pydantic import BaseModel
import joblib, numpy as np
app = FastAPI(title="Churn Prediction API")
model = joblib.load("models/churn_model.pkl")
scaler = joblib.load("models/scaler.pkl")
class MusteriVerisi(BaseModel):
yas: int; tenure: int; aylik_ucret: float
urun_sayisi: int; aktif_kart: bool
@app.post("/tahmin")
async def tahmin_et(veri: MusteriVerisi):
X = np.array([[veri.yas, veri.tenure, veri.aylik_ucret,
veri.urun_sayisi, int(veri.aktif_kart)]])
X_s = scaler.transform(X)
olasılik = model.predict_proba(X_s)[0,1]
return {"churn_olasiligi": round(float(olasılik),4),
"yuksek_risk": bool(olasılik > 0.7)}
ETL Pipeline
Extract → Transform → Load. Apache Airflow ile DAG (Directed Acyclic Graph) tanımla. Spark ile büyük veri.
Docker
Model + dependencies → container. "Bende çalışıyor" problemi biter. Kubernetes ile ölçeklendir.
MLflow
Deney takibi, model versiyonlama, artifact store. Hangi parametre hangi sonucu verdi?
6
// UZMANLAŞMA ALANLARI · BİR SEÇMEK LAZIM
İş Analitiği · ML Engineer · AI/Deep Learning
KPI · Dashboard · Deployment · Görüntü işleme · NLP · Transformer
▶
⚠️ Karar Ver: Her şeyi öğrenmek = hiçbirini bilmemek. 6 aylık odaklanmış çalışma, 2 yıllık dağınık çalışmadan değerlidir. Güçlü yönünü bul.
1️⃣ İş Analitiği
KPI tanımlama · Power BI/Tableau · SQL mastery · A/B testing · İş kararlarını veriye dökmek. Şirketlerde en fazla açık bu profil.
2️⃣ ML Engineer
Model deployment · API · Docker · Kubernetes · MLOps · CI/CD pipeline. Backend bilgisi kritik. En yüksek maaş bu alanda.
3️⃣ AI / Deep Learning
PyTorch/TF · Görüntü işleme (YOLO, SAM) · NLP (BERT, GPT fine-tune) · Akademik yayın. En uzun süre gerektiren yol.
💡 Tavsiye: Yeni başlıyorsan → İş Analitiği ile başla. İlk iş en çabuk bu yolla gelir. Deneyim kazanınca ML Engineer veya AI'a geç. Sektörde iş fırsatları en fazla bu sıralamada.