You are on page 1of 7

Model: Makine öğrenmesinde model, belirli bir görevi verilerle kendini eğiterek yapan bir

algoritmadır. Tur tur ileri ve geri yayılım yaparak ağırlıklarını ve biasını öğrenme, kendini
eğitme amacıyla değiştirir.

Aktivasyon Fonksiyonu:  Aktivasyon fonksiyonu, ağırlıklı toplamı hesaplayarak ve buna


daha fazla bias ekleyerek bir nöronun aktive edilip edilmeyeceğine karar verir. Aktivasyon
fonksiyonunun amacı , bir nöronun çıktısını doğrusallıktan arındırmaktır.

Loss Function: Loss function, belirli bir algoritmanın sağlanan verileri ne kadar iyi
modellediğini hesaplar.

Layer (katman): Sinir ağları, bir giriş, bir çıktı katmanlarından ve bu iki katmanın arasında
olan gizli (hidden) katmanlardan oluşur. Her katman belirli sayıda düğüme (node) sahiptir. Bu
düğümler sahip olduğu ağırlıkla modeli oluşturur.

Keras ile model oluştururken genel aşamalar şöyle işler:

 Eğitim verisini tanımlamak.


 Modeli ve katmanları tanımlamak
 Epoch (Tur sayısı), Loss Fonksiyonu ve optimizer gibi hiper parametreleri tanımlamak
 Modeli eğitim verinizle beslemek

ReLU, tanh, sigmoid gibi aktivasyon fonksiyonlarını


Kütüphane çağır
from keras import models
from keras import layers
from keras import optimizers

Model oluşturma
model = models.Sequential()

Sequential, katmanları yığmak için kullanılır – En sık kullanılan.

Functional API, çoklu çıktılı modeller, paylaşılan katmanlar vs. gibi karmaşık model
mimarileri tasarlamak için kullanılır.

Katman ekleme , düğüm sayısı , aktivasyon fonksiyonu input_shape


veri giriş boyutu

Model tanımında dikkat edilmesi gereken önemli bir nokta, ilk katman için
giriş şeklini belirtmemiz gerektiğidir.

model.add(layers.Dense(32, activation='relu', input_shape=(175,175)))

model.add(layers.Dense(10, activation='softmax'))

Eğitim Sürecini Yapılandırma


model.compile(optimizer=optimizers.RMSprop(lr=0.001),loss='mse',metrics=['a
ccuracy'])

Belirlenmesi gereken zorunlu parametreler, optimize edici ve kayıp fonksiyonudur.

optimize ediciler

Stokastik Gradyan İniş(SGD),


Adam,
RMSprop,
AdaGrad,
AdaDelta, vb.
RMSprop çoğu sorun için iyi bir optimize edici seçimidir.

Kayıp fonksiyonları

Denetimli bir öğrenme probleminde gerçek değerler ile öngörülen değerler arasındaki hatayı
bulmak zorundayız. Bu hatayı değerlendirmek için kullanılabilecek farklı ölçümler olabilir.
Bu metriğe genellikle kayıp fonksiyonu veya maliyet fonksiyonu veya amaç fonksiyonu
denir. Hata ile ne yaptığınıza bağlı olarak, birden fazla kayıp fonksiyonu olabilir. Genel
olarak kullanırız

İkili sınıflandırma problemi için ikili çapraz entropi,


Çok sınıflı bir sınıflandırma problemi için kategorik-çapraz entropi,
regresyon problemi için ortalama-kare-hata vb.

Eğitmeye başlama epoch= kaç kere ileri ve geri yayılım yapacağı


model.fit(girdi_verilerimiz,cikti_verilerimiz,epochs=10)

batch = aynı anda işlenecek veri sayısı. Düşük ise işleme süresi uzar. 2 nin kuvveti olması iyidir

Suffle boolean değer alır ve her bir epoch’tan önce verilerin yerlerinin değiştirilmesi için kullanılır

Verbose 0,1 ve 2 değerlerinden birisini alır. 0 eğitim sırasında ekranda bir sonuç göstermezken 1
progres bar gibi anlık olarak güncellenen sonçları gösterir. 2 ise her bir epoch sonunda tek bir satır
olarak çıktı verir.

Epoch sayısı, model eğitilirken verilerin modelden kaç kez geçiş yapacağını belirtir. Optimum seçilmeli

history =model.fit(X_train,
y_train,
validation_data=(X_test, y_test),
batch_size=16,
shuffle=True,
verbose=1,
epochs=500)

Modelin Değerlendirilmesi

Model eğitildiğinde, görünmeyen test verilerinin doğruluğunu kontrol etmemiz gerekir. Bu


Keras’ta iki şekilde yapılabilir.

model.evaluate () – model.compile () adımında belirtilen kayıp ve metrikleri bulur. Hem test


verilerini hem de etiketleri girdi olarak alır ve doğruluğun nicel bir ölçüsünü verir. Çapraz
doğrulama yapmak ve en iyi modeli elde etmek için parametreleri daha ince ayar yapmak için
de kullanılabilir.
model.predict () – Verilen test verisinin çıktısını bulur. Çıktıların kalitatif olarak kontrol
edilmesinde yararlıdır.
Veri okuma
import pandas as pd
#read in data using pandas
train_df = pd.read_csv('Downloads/Dataset/Veriseti.csv')
#check data has been read in properly
train_df.head()

veri kümemizi girdiler (train_X) ve hedefimiz (train_y) olarak bölmemiz

drop ile Type kolonunu train_X ten çıkarma

train_X = train_df.drop(columns=['Type'])
train_X.head()

Type sütununu train y ekleme

train_y = train_df[['Type']]
train_y.head()

Veri setinin eğitim ve test veri seti olarak ikiye bölünmesi

X_train, X_test, y_train, y_test = train_test_split(train_X, train_y, test_size=0.15, shuffle=True,


random_state=100)

Yeni veriler ile tahmin yapmak

Bu modeli yeni verilerle ilgili tahminlerde bulunmak için kullanmak istiyorsak, model.predict
() fonksiyonunu kullanmamız gerekir. girdi olarak test verilerinden istediğimiz bir tanesini
seçip verebiliriz.

results = model.predict(X_test.iloc[1:2])
#sınıflarımız, 3 adet tümeör türü var
class_names = ['Glioma', 'Meningioma', 'Patiutary']
ind = 0.1+0.3*np.arange(len(class_names))
width = 0.15 #bar genişliği
color_list = ['blue','orangered','limegreen']
#sonuçlarımızı renklendirelim
for i in range(len(class_names)):
plt.bar(ind[i], results[0][i], width, color=color_list[i])
plt.title("Sınflandırma sonuçları ",fontsize=20)
plt.ylabel(" Sınıflandırma Skoru",fontsize=16)
plt.xticks(ind, class_names, rotation=0, fontsize=14)
plt.show()
print("Tahmin sonucu:", class_names[np.argmax(results)])
print("Gerçek sonuç:",class_names[np.argmax(y_test[1:2])])
Başarım grafiği
from matplotlib import pyplot as plt
# Plot training & validation accuracy values
plt.figure(figsize=(14,3))
plt.subplot(1, 2, 1)
plt.plot(history.history['acc'])
plt.plot(history.history['val_acc'])
plt.title('Model accuracy')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(['Train', 'Test'], loc='upper left')
# Plot training & validation loss values
plt.subplot(1, 2, 2)
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('Model loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['Train', 'Test'], loc='upper left')
plt.show()
NORON SAYISI HESAPLAMA

gizli katmanda (giriş+çıkış)/2= nöron

RELU
ReLU veya Rectified Linear Activation. Bu aktivasyon fonksiyonu sıfırdan küçük olan değerleri sıfır
olarak, sıfırdan büyük olan değerleri olduğu gibi alır. formül olarak f(x)=max(0,x) şeklinde yazabiliriz.

You might also like