iris setosa iris versicolor iris virginica Bilim adamı fisher, İris çiçeğini çeşitli ölçümler neticesinde yukarıda görüldüğü gibi 3 türe ayrılarak sınıflandırmıştır. Bu sınıflandırmada kullanılan ölçümler çanak yaprak genişliği, çanak yaprak uzunluğu, taç yaprak genişliği ve taç yaprak uzunluğu olmuştur. Bu değerler neticesinde üstte görüldüğü gibi iris çiçeği 3 tür olarak sınıflanmıştır. Bu ölçüm değerlerinin küçük bir bölümü aşağıda verilmiştir. A: Çanak Yaprak Uzunluğu(sepal length) B: Çanak Yaprak Genişliği(sepal width) C: Taç Yaprak Uzunluğu(petal length) D: Taç Yaprak Genişliği (petal width) E: İris çiçeğinin türleri Bu durumda A,B,C,D değerleri giriş ve E değeri ise çıkış değerini oluşturmaktadır. A B C D E 5.1 3.5 1.4 0.2 setosa 4.9 3 1.4 0.2 setosa 4.7 3.2 1.3 0.2 setosa 5.2 2.7 3.9 3.4 versicolor 6.3 2.9 5.6 1.8 virginica Toplamda 45 adet ölçülmüş veri bulunmaktadır.(asıl veri kaynağı 150 adet veri içeriyor.) Veriler cm cinsinden ölçülmüştür. Bu çalışmadaki asıl amacımız bu 45 adet veri dışında bize bir veri verilseydi bu veriler doğrultusunda E değerini tahmin etmek olacaktır. Bu durumda Verilerimizi Eğitim ve test olarak 2 kısma ayıracağız. Önce eğitim verilerimizle ağımızı eğitip, sonra eldeki gerçek test verilerini ağ üzerinde doğru sonuç verip vermeyeceklerini deneyeceğiz. 1
1. NORMALİZASYON İŞLEMİ Aşağıda giriş ve çıkış değerlerinin excel formatındaki hali görülmektedir. Çıkış değerleri için 1-3 arası değerler veriyoruz, çünkü ysa da mutlaka değerlerimizi sayısal bir ifade ile karşılamalıyız.(örn: Bay-Bayan olsaydı 1-2 verebilirdik) Normalizasyon formülü: Normalizasyon için aşağıdaki formül kıllanılırsa değerlerin hepsi pozitif çıkacaktır. Dolayısıyla bu durumda log-sig fonksiyonu kullanılmalıdır. V R: Normalize edilecek verileri ifade eder. V Min: En küçük değerdeki veri. V max: En büyük değerdeki veri. 2
Alttaki değerleri uygulamak için Önce A sütununun ilk değerine karşılık gelen formülü yazıp alta sürükleyerek tüm değerleri otomatik normalize edelim. Aynı işlemi diğer 4 sütun içinde yapalım yani eğitim verileri için toplam 5 formül yazmalıyız. Şekil: Eğitim Verilerinden bir bölüm Şimdi eldeki 45 verinin %80 ini(36 adet) eğitim ve %20 sini(9 adet) test verisi olarak belirleyeceğiz. Test verileri random olarak farklı bölgelerden seçilebilir, ya da her 5 (45/9) veriden biri olabilir. Şekil:Test verileri Şimdi sırada bu verileri matlab da girilebilecek şekilde matris formunda düzenlemeye gerekvar. Bunun için tablo formatından çıkarmak ve matris formatına dönüştürmek gerekir. 3
Excel formatı Matlab Formatı Notepad ve Word ile bu işlemler gerçekleştirilebilir. Test verileri için bu işlem şu şekilde gerçekleştirilecektir. Siz hem test hem de eğitim verileri için aynı işlemleri uygulayınız. 1. Önce ilk eğitim giriş verimizin olduğu sütunu excelden kopyalayıp notpad e atalım.(notepad den direk olarak word e atarsak tablolu gider.) 2. Şimdi buradan kopyalayıp word e atalım. 4
3. CTRL+H ile word de aşağıdaki değiştir penceresini açalım. Burada paragrafları boşluk değerleri ile değiştiriyoruz. Yeni değer yazan yere mutlaka boşluk tuşuna basalım. Sonuçta veriler aşağıdaki hali alıyor. Bunu aşağıdaki gibi düzenleyelim. Şimdi kalan test verileri için ve eğitim verileri için aynı işlemleri tekrarlayalım. Not: Eğer değerleriniz noktalı değil virgüllü ise aynı yöntemle virgülleri nokta yapınız. Çünkü Matlab da ondalık ayıracı olarak nokta kullanbiliriz. Matlab ortamında girdi ve çıktıları yazabileceğimiz sadece birer alan vardır. Bu yüzden elimizdeki 4 adet veriyi araya noktalı virgül koyarak birleştirelim. Oluşan bu veriye G diyelim. Çıktıya da Ç diyelim. 5
Veriler son halde yukarıdaki şekle dönüşmelidir. Yani Eğitim için G ve Ç değerleri, Test için G ve Ç değerleri. MATLAB İŞLEMLERİ YSA ile çalışacağımız toolbox ı açmak için nntool komutunu çalıştıralım. 6
7
8
Yeni ağımızı oluşturduk şimdi ağımızın eğitimini gerçekleştireceğiz. 9
10
Deneme sayısı az olduğu için eğitim kısa sürdü. İstersek grafiği sava-as yapabiliriz. 11
Sayıların genelde 8 olması, 8 adet nöron seçilmiş olmasındandır. TEST VERİLERİ İÇİN İŞLEMLER -new data dedikten sonra 12
13
Bu değerler test çıktı değerleridir. Bunu kopyalayalım. Altına da ilk başta oluşturduğumuz gerçek test çıktı değerlerini yazalım. Ağın bulduğu değerler (Tahmin) [0.099934 0.099793 0.10006 0.50005 0.50001 0.5 0.89987 0.90017 0.9] Gerçek test değerleri: (Gerçek) [0.1 0.1 0.1 0.5 0.5 0.5 0.9 0.9 0.9] Şimdi gerçek test ile ağdan elde edilmiş değerlerin ne kadar yakın olduğu görmeye geldi. Bunun için excel de R-kare grafiği çizmek gerekir. Dolayısıyla bu değerleri excel e atacağız. Uygulamamızda test çıktıları ile gerçek test çıktıları 8 adet. Bu az sayılabilecek bir değer. Excel e bu veriler kolaylıkla girilebilir. Binlerce veri girmek için ise aşağıdaki yol izlenmelidir. 14
Bu iki değerin de ctrl+h ile boşlukları paragraf yapıp(ilk yaptığımızın tersi) parantezleri kaldıralım. Aşağıdaki değerler elde edilir. Tahmin 0.099934 0.099793 0.10006 0.50005 0.50001 0.5 0.89987 0.90017 0.9 Gerçek 0.1 0.1 0.1 0.5 0.5 0.5 0.9 0.9 0.9 Bu değerleri seçip tablo-dönüştür-metni tabloya dönüştür ile tablo yapalım. Tahmin 0.099934 0.099793 0.10006 0.50005 0.50001 0.5 0.89987 0.90017 0.9 Gerçek 0.1 0.1 0.1 0.5 0.5 0.5 0.9 0.9 0.9 Sonra bu değerleri Excel e kopyalayalım. 15
16
17
18
İki çizgide neredeyse üst üste çıktı yani R 2 =1 oldu. Bu mükemmel sonuç anlamına gelir. FORMÜLASYON 19
A=5.1 B=3.5 C=1.4 D=0.2 E=? Önce değerleri normalize edelim.(normalizasyon formülü ile) NOT: F9 için kullanılan formül logsig formülüdür. Burada F9 değeri bizim 4 giriş değerine karşı elde ettiğimiz çıktı değeridir. Bu değer normalizasyon değeri olup bunu gerçek değer haline dönüştürmemiz gerekir. 20
Formülünü uygularsak; Vr:Gerçek değerdir Vn: F9 ile elde edilen değerdir. Vmax: E sütununun max değeri(3) Vmin: E sütununun Min değeri(1) Alttaki gibi formülleri matlab a yazalım ve bir isimle kaydedilim. Daha sonra verdiğimiz ismi matlab ana penceresinde >> kısmına yazalım. Çalıştıralım. Elde edilen değerler Artık her deneme için Matlab dosyamızda yazan A,B,C ve D değerlerini değiştirip dosyayı çalıştırıp E değerini görmemiz mümkündür. 21