Python ile Basit Bir Yapay Zeka Sınıflandırma Modeli Eğitmek

kusha · 03 Ağustos 2026 · 6 dk okuma

Bu derste, hazır bir veri setini kullanarak basit bir ikili sınıflandırma (binary classification) modeli eğiteceğiz — modelin görevi, girilen özelliklere bakarak bir kaydın "1" mi yoksa "0" mı grubuna ait olduğunu tahmin etmek. Örnek olarak halka açık bir sağlık veri setini kullanacağız; bu, gerçek bir tıbbi teşhis aracı değil, öğrenme amaçlı bir makine öğrenmesi alıştırmasıdır.

Veri Setini Bulmak

Kaggle gibi açık veri platformlarında, satır satır özellik içeren ve son kolonda 0/1 formatında bir sonuç (etiket) barındıran birçok ücretsiz veri seti bulunur.

Kurulum

pip install pandas tensorflow

Veriyi Yüklemek ve Ayırmak

import pandas as pd
from sklearn.model_selection import train_test_split

veri = pd.read_csv("veri_seti.csv")

X = veri.drop(columns=["hedef"])
y = veri["hedef"]

X_egitim, X_test, y_egitim, y_test = train_test_split(X, y, test_size=0.2)
  • X, tahmin için kullanılacak tüm özellik kolonlarını içerir — hedef (tahmin edilecek) kolonu buradan çıkarıyoruz.
  • y, yalnızca tahmin edilmek istenen hedef kolonunu içerir.
  • test_size=0.2, verinin %20'sini modelin doğruluğunu ölçmek için ayırır; kalan %80 ile model eğitilir.

Modeli Kurmak

from tensorflow import keras

model = keras.models.Sequential([
    keras.layers.Dense(256, input_shape=(X_egitim.shape[1],), activation="sigmoid"),
    keras.layers.Dense(256, activation="sigmoid"),
    keras.layers.Dense(1, activation="sigmoid"),
])

model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"])
  • Sequential, katmanları sırayla (ard arda) dizen basit bir model yapısıdır.
  • İlk iki katman, veriyi işleyen "gizli katmanlar"dır — nöron sayısı ve katman sayısı arttıkça model daha karmaşık örüntüleri öğrenebilir, ama aşırı büyütmek gereksiz yavaşlığa ve ezberlemeye (overfitting) yol açabilir.
  • Son katmandaki tek nöron, 0 ile 1 arasında bir olasılık değeri üretir — bu, "1 sınıfına ait olma olasılığı" olarak yorumlanır.

Modeli Eğitmek

model.fit(X_egitim, y_egitim, epochs=100)

epochs, modelin tüm eğitim verisini kaç kez baştan sona göreceğini belirler. Epoch sayısı arttıkça doğruluk genelde artar, ama belirli bir noktadan sonra artış yavaşlar ve eğitim süresi uzar — bu iki faktör arasında bir denge kurmanız gerekir.

Yeni Bir Veriyle Tahmin Yaptırmak

yeni_veri = [[45, 1, 130, 250, 0, 1, 150, 0, 2.3, 1]]  # veri setindeki kolonlara uygun sırayla
tahmin = model.predict(yeni_veri)
print(f"Olasılık: {tahmin[0][0]:.2f}")

Model, 0'a yakın bir değer döndürürse "0" sınıfını, 1'e yakın bir değer döndürürse "1" sınıfını daha olası görüyor demektir — bu bir kesinlik değil, öğrenilen örüntülere dayalı bir olasılık tahminidir.

Önemli Uyarı

Bu, öğretim amaçlı basit bir örnektir — gerçek bir karar destek sistemi (özellikle sağlık gibi hassas alanlarda) çok daha titiz veri temizleme, doğrulama ve uzman gözetimi gerektirir. Buradaki amaç, bir sinir ağının uçtan uca nasıl kurulup eğitildiğini göstermektir.

Sırada Ne Var?

Sırada, Telegram botlarına geri dönüp bir botu yalnızca belirli bir grubun üyelerinin kullanabildiği bir yapı kuracağız.