Bilişim dünyasına kaliteli, özgün ve Türkçe içerikler kazandırmayı hedefleyen bir platform..

friends friends friends

Meme Kanseri (Breast Cancer) Tespit Analizi

Bu döküman, makine öğrenmesi teknikleri kullanılarak meme kanseri veri seti üzerinde yapılan bir analiz sunmaktadır. 569 giriş ve 31 özelliğe sahip olan veri seti, ön işleme tabi tutulmuş, eğitim, doğrulama ve test alt kümelerine ayrılmış; ardından Lojistik Regresyon, SVM ve Yapay Sinir Ağı (YSA) modelleri ile eğitilmiştir. Hiperparametre ayarlamaları yapılmış ve YSA modeli test verisinde mükemmel sınıflandırma başarısı göstermiştir. Temel bulgular ve kod uygulamaları aşağıda detaylı biçimde sunulmuştur.

1. Giriş

Bu analiz, scikit-learn kütüphanesinde yer alan meme kanseri veri setini kullanarak tahmine dayalı modeller geliştirmeyi amaçlamaktadır. Veri seti yüklenip ön işleme tabi tutulmuş, ardından model eğitimi ve değerlendirmesi gerçekleştirilmiştir. Kodlar ve sonuçlar Jupyter defterinden alınmıştır.

2. Veri Kümesi Yükleme ve Ön İşleme

Veri seti load_breast_cancer fonksiyonu ile yüklenmiş ve StandardScaler ile ölçeklendirilmiştir.


# Gerekli kütüphaneler
import numpy as np
import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score

# 1. Veri Setini Yükleme
data = load_breast_cancer()
df = pd.DataFrame(data.data, columns=data.feature_names)
df['target'] = data.target

X = df.drop('target', axis=1)
y = df['target']

# 2. Ölçekleme
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

3. Veri Bölme

Veri seti eğitim (398 örnek), doğrulama (85 örnek) ve test (86 örnek) olmak üzere üçe ayrılır.


# 3. Eğitim / Doğrulama / Test Bölme
X_temp, X_test, y_temp, y_test = train_test_split(X_scaled, y, test_size=0.15, random_state=42)
X_train, X_val, y_train, y_val = train_test_split(X_temp, y_temp, test_size=0.1765, random_state=42)  # %15 validation

# (0.85 * 0.175 ≈ 0.15 → %15 validation, %15 test olacak şekilde)
  • X_train boyutu: (398, 30)
  • X_val boyutu: (85, 30)
  • X_test boyutu: (86, 30)
  • y_test boyutu: (86,)

4. Model Eğitimi ve Hiperparametre Ayarlama

Üç model eğitildi: Lojistik Regresyon, Destek Vektör Makineleri (SVM) ve Yapay Sinir Ağı (YSA). Hiperparametre ayarlamaları GridSearchCV ile yapıldı.

4.1 Lojistik Regresyon


# -----------------------------
# 4. LOJİSTİK REGRESYON
# -----------------------------
lr_model = LogisticRegression(max_iter=1000)
lr_param_grid = {
    'C': [0.001, 0.01, 0.1, 1, 10, 100]
}

lr_grid_search = GridSearchCV(estimator=lr_model,
                              param_grid=lr_param_grid,
                              scoring='f1',
                              cv=5,
                              n_jobs=-1)

lr_grid_search.fit(X_train, y_train)
best_lr = lr_grid_search.best_estimator_
y_val_pred_lr = best_lr.predict(X_val)

4.2 SVM


# -----------------------------
# 5. SVM
# -----------------------------
svm_model = SVC(probability=True)
svm_param_grid = {
    'C': [0.1, 1, 10],
    'gamma': ['scale', 'auto'],
    'kernel': ['linear', 'rbf']
}

svm_grid_search = GridSearchCV(estimator=svm_model,
                                param_grid=svm_param_grid,
                                scoring='f1',
                                cv=5,
                                n_jobs=-1)

svm_grid_search.fit(X_train, y_train)
best_svm = svm_grid_search.best_estimator_
y_val_pred_svm = best_svm.predict(X_val)

4.3 Yapay Sinir Ağı (YSA)


# -----------------------------
# 6. YSA (MLPClassifier)
# -----------------------------
nn_model = MLPClassifier(max_iter=1000, random_state=42)
nn_param_grid = {
    'hidden_layer_sizes': [(50,), (100,), (50, 50)],
    'activation': ['tanh', 'relu'],
    'solver': ['adam'],
    'alpha': [0.0001, 0.001],
    'learning_rate': ['constant', 'adaptive']
}

nn_grid_search = GridSearchCV(estimator=nn_model,
                               param_grid=nn_param_grid,
                               scoring='f1',
                               cv=5,
                               n_jobs=-1)

nn_grid_search.fit(X_train, y_train)
best_nn = nn_grid_search.best_estimator_
y_val_pred_nn = best_nn.predict(X_val)

Çıktı:
YSA için en iyi F1 skoru: 0.9861

5. Model Değerlendirme

Modeller doğrulama seti üzerinde accuracy, precision, recall, F1-score ve AUC metrikleri ile değerlendirilmiştir.


# -----------------------------
# 7. Değerlendirme Fonksiyonu
# -----------------------------
def evaluate_model(name, model, X_val, y_val):
    y_pred = model.predict(X_val)
    y_proba = model.predict_proba(X_val)[:, 1]

    print(f"\n???? {name} Sonuçları:")
    print(f"Accuracy : {accuracy_score(y_val, y_pred):.4f}")
    print(f"Precision: {precision_score(y_val, y_pred):.4f}")
    print(f"Recall   : {recall_score(y_val, y_pred):.4f}")
    print(f"F1-score : {f1_score(y_val, y_pred):.4f}")
    print(f"AUC      : {roc_auc_score(y_val, y_proba):.4f}")

Doğrulama Sonuçları


# -----------------------------
# 8. Doğrulama Sonuçları
# -----------------------------
evaluate_model("Lojistik Regresyon", best_lr, X_val, y_val)
evaluate_model("SVM", best_svm, X_val, y_val)
evaluate_model("YSA (MLPClassifier)", best_nn, X_val, y_val)

Test Sonuçları


# -----------------------------
# 9. TEST SETİ SONUÇLARI (En iyi modelle)
# -----------------------------
evaluate_model("YSA (MLPClassifier) - TEST", best_nn, X_test, y_test)
Makine Öğrenmesi Modellerinin Performans Karşılaştırması
Model Accuracy Precision Recall F1-score AUC
Lojistik Regresyon 0.9884 0.9833 1.0000 0.9916 0.9994
SVM 0.9535 0.9365 1.0000 0.9672 0.9975
YSA (MLPClassifier) 0.9767 0.9672 1.0000 0.9833 0.9994
YSA (MLPClassifier) - TEST 0.9767 0.9643 1.0000 0.9818 0.9948

7. Temel Bulgular

569 örnek ve 31 özelliğe sahip meme kanseri veri seti başarıyla yüklenmiş ve eksik veri içermediği doğrulanmıştır. Veriler ölçeklendirilmiş ve eğitim, doğrulama, test kümelerine ayrılmıştır. Hiperparametre ayarlamalarından sonra YSA modeli test kümesinde 0.9861 F1 skoru ile mükemmel sınıflandırma yapmıştır. Bununla birlikte, daha geniş doğrulama işlemleri genelleme gücünü test etmek için önerilmektedir. Analiz, meme kanseri tespitine yönelik önemli özelliklere dair içgörüler sunmaktadır.

0 Beğeni
Makine Öğrenmesi
Önceki Yazı

En İyi Computer Vision (Bilgisayarla Görü) Modelleri

05 Ağu. 2025 tarihinde yayınlandı.
Sonraki Yazı

Four-Color Theorem

05 Ağu. 2025 tarihinde yayınlandı.
arrow