Hoşgeldin Misafir

Python Kullanarak Obsesif kompulsif bozukluk (OKB) teşhisi için yapay sinir ağı modeli

Mustafa73

20 Eyl 2023
423 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
# Obsesif kompulsif bozukluk (OKB) teşhisi için yapay sinir ağı modeli
# Kaynak: https://www.researchgate.net/public...or_Diagnosis_of_Obsessive_Compulsive_Disorder
# Gerekli kütüphaneleri içe aktar
import numpy as np
import pandas as pd
import tensorflow as tf
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, confusion_matrix
# Veri setini yükle
data = pd.read_csv("OKB_veri.csv")
# Girdi ve çıktı değişkenlerini ayır
X = data.drop("OKB", axis=1)
y = data["OKB"]
# Veri setini eğitim ve test olarak böl
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Yapay sinir ağı modelini oluştur
model = tf.keras.Sequential([
tf.keras.layers.Dense(32, activation="relu", input_shape=(X.shape[1],)),
tf.keras.layers.Dense(16, activation="relu"),
tf.keras.layers.Dense(1, activation="sigmoid")
])
# Modeli derle
model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"])
# Modeli eğit
model.fit(X_train, y_train, epochs=50, batch_size=32, validation_split=0.1)
# Modelin performansını değerlendir
y_pred = model.predict(X_test)
y_pred = np.round(y_pred).flatten()
acc = accuracy_score(y_test, y_pred)
cm = confusion_matrix(y_test, y_pred)
print("Modelin doğruluk oranı: {:.2f}%".format(acc*100))
print("Modelin karışıklık matrisi:")
print(cm)
#Yazan Rıdvan Kaya
Bu kod, obsesif kompulsif bozukluk (OKB) teşhisi için yapay sinir ağı modeli oluşturmak ve eğitmek için kullanılan bir Python kodudur. Kodun yaptığı işlemleri adım adım açıklayayım:
- Öncelikle, kod gerekli kütüphaneleri içe aktarıyor. Numpy, pandas ve tensorflow gibi kütüphaneler, veri işleme, matematiksel işlemler ve yapay sinir ağı oluşturma için kullanılıyor. Sklearn kütüphanesi ise veri setini bölme ve modelin performansını değerlendirme için kullanılıyor.
- Sonra, kod OKB_veri.csv adlı bir veri setini yüklüyor. Bu veri seti, OKB hastalarının ve sağlıklı kişilerin çeşitli psikolojik ölçümlerini içeriyor. Veri setindeki OKB sütunu, kişinin OKB hastası olup olmadığını gösteriyor. 1 ise hasta, 0 ise sağlıklı anlamına geliyor.
- Daha sonra, kod veri setini girdi ve çıktı değişkenlerine ayırıyor. Girdi değişkenleri, kişinin psikolojik ölçümlerini içeriyor. Çıktı değişkeni ise OKB sütunu. Bu değişkenler, yapay sinir ağı modelinin girdisi ve çıktısı olacak.
- Ardından, kod veri setini eğitim ve test olarak ikiye bölüyor. Eğitim verisi, modelin öğrenmesi için kullanılacak. Test verisi ise modelin doğruluğunu ölçmek için kullanılacak. Test verisinin boyutu, veri setinin %20'si olarak belirleniyor. Ayrıca, random_state parametresi ile veri setinin bölünme şekli sabitleniyor. Böylece, her çalıştırmada aynı sonuçlar elde edilebiliyor.
- Sonra, kod yapay sinir ağı modelini oluşturuyor. Model, üç katmandan oluşuyor. İlk katman, girdi katmanıdır ve girdi değişkenlerinin sayısı kadar nöron içerir. İkinci katman, gizli katmandır ve 16 nöron içerir. Üçüncü katman, çıktı katmanıdır ve tek bir nöron içerir. Çıktı katmanındaki nöronun aktivasyon fonksiyonu, sigmoid fonksiyonudur. Bu fonksiyon, 0 ile 1 arasında bir değer üretir. Bu değer, kişinin OKB hastası olma olasılığını gösterir. Eğer değer 0.5'ten büyükse, kişi OKB hastası olarak sınıflandırılır. Eğer değer 0.5'ten küçükse, kişi sağlıklı olarak sınıflandırılır.
- Daha sonra, kod modeli derliyor. Derleme işlemi, modelin nasıl eğitileceğini belirler. Optimizer parametresi, modelin ağırlıklarını nasıl güncelleyeceğini gösterir. Adam optimizer, en yaygın kullanılan optimizasyon yöntemlerinden biridir. Loss parametresi, modelin hata fonksiyonunu gösterir. Binary_crossentropy, ikili sınıflandırma problemleri için uygun bir hata fonksiyonudur. Metrics parametresi, modelin performansını ölçmek için kullanılacak metriği gösterir. Accuracy, doğru sınıflandırılan örneklerin oranını verir.
- Ardından, kod modeli eğitiyor. Fit fonksiyonu, modeli eğitim verisi ile öğretir. Epochs parametresi, modelin eğitim verisi üzerinde kaç kez çalışacağını belirler. Batch_size parametresi, modelin her seferde kaç örnek alacağını belirler. Validation_split parametresi, eğitim verisinin bir kısmını doğrulama verisi olarak ayırır. Doğrulama verisi, modelin eğitim sırasında aşırı uyum (overfitting) olup olmadığını kontrol etmek için kullanılır. Aşırı uyum, modelin eğitim verisine çok iyi uyum sağlayıp, test verisinde kötü performans göstermesi durumudur.
- Son olarak, kod modelin performansını değerlendiriyor. Predict fonksiyonu, modelin test verisi üzerindeki tahminlerini üretir. Bu tahminler, 0 ile 1 arasında bir değerdir. Bu değerleri, 0.5 eşik değerine göre 0 veya 1 olarak yuvarlamak için np.round fonksiyonu kullanılır. Flatten fonksiyonu, tahminleri tek boyutlu bir diziye dönüştürür. Accuracy_score fonksiyonu, modelin doğruluk oranını hesaplar. Confusion_matrix fonksiyonu, modelin karışıklık matrisini oluşturur. Karışıklık matrisi, modelin doğru ve yanlış sınıflandırmalarını gösterir. Kod, modelin doğruluk oranını ve karışıklık matrisini ekrana yazdırır.