Sayfalar

15 Ocak 2013 Salı

HR Şeması İle Uygulamalı SQL(Fonksiyonlar ve Gruplandırma)

Merhaba Arkadaşlar

SQL deyimlerini öğrenmeye kaldığımız yerden devam edelim. Bu yazıda SQL'de veriler üzerinde kolay işlem yapmamızı sağlayan hazır fonksiyonlardan bahsedeceğiz. Öncelikle PL/SQL'de fonksiyonların nasıl ayrıldığını kısaca inceleyeceğiz. Ancak konumuz SQL olduğu için PL/SQL fonksiyonlarını ayrıntılı olarak uygulama yaparak işlemeyeceğiz. Daha sonra SQL fonksiyonlarını -COUNT, AVG, MIN, MAX- ayrıntılı olarak inceleyeceğiz.

Fonksiyon Kavramı
Programlama ile uğraşanların haşır neşir olduğu bu kavram oradaki anlamıyla eş bir kullanıma sahiptir. Yani fonksiyonunuz argüman veya argümanlar alır, onu amacınız doğrultusunda işler ve size bir sonuç döndürür. SQL'de de bu fonksiyonları çok sık kullanacaksınız. Fonksiyonlar farklı sayılarda sonuç döndürmelerine göre iki şekilde incelenirler:

  • Satır başına bir sonuç döndüren fonksiyonlar: Çekilen her satır için bir sonuç değeri üretir. Yani üzerinde işlem yapılan her satır için bir sonuç üretip bunu geriye döndürürler. Argümanlar sütun ismi yada sizin belirlediğiniz bir ifade olabilir. Bu tip fonksiyonlar iç içe yani fonksiyon1(fonksiyon2(...)) şeklinde kullanılabilirler. Yazı içerisinde tüm fonksiyonları vermeyeceğim. Bu fonksiyonlardan kimini belki de hiç kullanmayacaksınız. Şimdi bu fonksiyon başlığı altındaki fonksiyon çeşitlerini bir görelim:
    • Karakter fonksiyonları: Verilen karakterler üzerinde düzenleme işlemleri yaparlar. 
    • Nümerik fonksiyonlar: Sayısal veriler üzerinde; mod alma, sayıyı bir üst yada bir alt değere yuvarlama gibi temel işlemler yaparlar.

14 Ocak 2013 Pazartesi

HR Şeması İle Uygulamalı SQL(WHERE)

Merhaba Arkadaşlar!

SQL deyimlerini öğrenmeye kaldığımız yerden devam edeceğiz. Bir önceki yazdı SELECT deyimini bitirmiştik. Şimdi SELECT deyimini daha gelişmiş olarak kullanmamızı sağlayan bir kaç yeni ifade ekleyeceğiz. Hemen başlayalım:

Şimdiye kadar SELECT ifadesi ile istediğimiz sütunu nasıl çekeceğimizi gördük. Ancak bu sütunun tamamına ait içeriği çekebildik. Yani belirlediğimiz bir satırı yada aklımızdaki koşula uyan bir satırı nasıl çekeceğimizi bilmiyoruz. Bunu gerçekleştirebilmek için WHERE ifadesini kullanmamız gerekmektedir.

WHERE İfadesi
WHERE ifadesinin de SELECT deyimine eklenmesi ile sorgu aşağıdaki şeklini alacaktır:

SELECT *|{[DISTINCT] sütunadi|ifadeler [takmaisim],...}
FROM   tabloadi
[WHERE sart(lar)];

13 Ocak 2013 Pazar

HR Şeması İle Uygulamalı SQL(SELECT)

Merhaba Arkadaşlar!

Kısaca SQL'in ne olduğuna bakalım:
Bilindiği üzere ilişkisel veritabanı yönetim sistemleri ilk olarak 1970 yılında Dr. E. F. Codd tarafından ortaya çıkarılmıştır. Codd'un ifade ettiği ilişkisel veritabanı modeli için SQL ilk defa IBM firması tarafından geliştirilmiştir. 1979'da ise günümüzdeki Oracle firması (o zamanlar Relational Software'di) SQL'i ilk ticari uygulama olarak piyasaya sürmüştür. Böylece SQL artık ilişkisel veritabanı yönetim sistemleri için bir standart haline gelmiştir ve tüm yönetim sistemlerinde SQL dil desteği olmak durumundadır. (SQL ile ilgili diğer temel bilgiler için buradan ulaşabilirsiniz.)

SQL ilk çıkarıldığı zamanlar SEQUEL yani Structred English Query Language olarak bilinirken artık Structred Query Language olarak isimlendirilmektedir. SQL deyimleri büyük-küçük harf duyarlı olmayıp SQL cümlesinin sonuna noktalı virgül (;) konur. SQL yazarken dikkat edilecek hususlar aşağıdaki gibidir:

  • SQL cümleleri birden fazla satırı kapsayabilir
  • Okunulabilirlik açısından satırlar girintilerle belirlenir.
  • SQL Developer kullanıyorsanız (;) kullanmanıza gerek olmayabilir ancak SQL*Plus'ta (;) kullanmanız gerekmektedir. 
  • SQL'deki temel kelimeler satırlara bölünemez yada kısaltılamaz.

SQL Developer Kullanımı

Merhaba Arkadaşlar!

Bir dönem sonra bir aksilik olmazsa mezun olacağım. :) Dolayısıyla geleceğimde faydalı olmasını umarak hedeflerime ulaşmak için çalışmalarıma hız verdim. Bu hedeflerimden ilki Oracle OCP Sertifikasyon sınavlarını başarıyla geçmek ve ülkemizde çok da fazla bulunmayan bu sertifikaya sahip olanların kervanına katılabilmek. Bu sertifikayı alabilmek için 3 sınavı başarmış olmanız gerekiyor. Bunlar:
  • SQL'e giriş: Temel SQL bilgilerini içermekte olup PL/SQL üzerine de sorular  içermektedir.
  • Veritabanı Yönetimi 1: Veritabanı mimarisi, temel kurulum ve yönetim işlemlerini kapsar.
  • Veritabanı Yönetimi 2: RMAN, Back-Up gibi ileri düzey veritabanı yönerimi kavramlarını kapsar. 
Ben, bu kapsamda sınavlara şimdiden kendi çabalarımla hazırlanıyorum. Benimle aynı hedefleri paylaşanlar için; bu ve takip eden bir kaç makale ile SQL'e giriş sınavına hazırlık için yaptığım uygulamaları ve temel diğer bilgileri anlatmaya çalışacağım. Sorguları, amaçlarını, veritabanı üzerinde uygulanmasını incelemiş olacağız.

6 Ocak 2013 Pazar

RapidMiner'da K-Means İle Kümeleme Çalışması

Merhaba arkadaşlar!

RapidMiner ile alakalı iki yazı paylaştım ve gördüm ki konu ile ilgilenen fazlaca insan var. Bunun başlıca sebebi sanırım Türkçe kaynak sıkıntısı çekilmesi ve irili ufaklı  şirketlerin yavaş yavaş veri madenciliği çalışmalarına ağırlık vermesi olsa gerek. Bunları göz önünde bulundurarak konu ile ilgili bir konuyu daha işlemek istiyorum: Kümeleme algoritması olan K-Means'ın RapidMiner'da uygulanması.

Bunu yaparken kendi çabalarımla öğrendiğim bir iki mevzuyu daha paylaşmaya çalışacağım. Neden kendi çabalarımla diyorum çünkü sizin de gördüğünüz üzere RapidMiner'ı dolu dolu açıklayan ne bir blog ne de bir kaynak mevcut. Bunu sadece Türkçe kaynaklar için söylemiyorum. RapidMiner'ın ingilizce kaynakları var ama bu kaynaklar da bir yerden sonra yetersiz kalabiliyor.

Konuya başlayalım...
Veri madenciliği(yazının diğer kısımlarında VM diye bahsedeceğim) çalışmalarını kolaylaştırmayı amaçlayan bir yazılım olan RapidMiner bu amaçlar doğrultusunda VM çalışmaları için geliştirilen algoritmaların pek çoğuna cevap verebilmektedir. Bunlardan sınıflandırma grubundaki karar ağacı algoritmasının kullanılışına değinmiştik. VM çalışmalarının gözdesi olan bir diğer metot ise Kümeleme(Clustering) olup, sadece VM çalışmalarında değil görüntü işleme, veritabanı gibi pek çok sektörde de kendini göstermektedir. Hemen kısaca sınıflandırmayı hatırlayıp kümelemeden bahsedelim:

13 Aralık 2012 Perşembe

Görüntü İşleme Çalışmaları

Merhaba Arkadaşlar!

Bu kez biraz farklı bir konu üzerine eğileceğiz. Çok farklı teknikler içeren bir alana göz atacağız. Veritabanı, iş zekası, veri madenciliği dışında da teknoloji dünyasının kalbinin attığı bir alan: Görüntü İşleme...

Aslında görüntü işlemeyi merak etmemin ve öğrenmek isteyişimin nedeni bir proje üzerinde çalışıyor olmamdır. Günümüzde görüntü işleme teknikleri o kadar fazla kullanılmakta ki, artık mobil teknoloji ile de ceplerimize girmiş durumda. Şunu da baştan söylemek gerekirse görüntü işleme dünyasının önümüzdeki yıllarda yok olacağını söylemek imkansız gibi. Bunu neden söylüyorum? Çünkü pek çok teknoloji; teknolojinin gelişmesiyle birlikte kendi kendinin sonunu getirmekte. Kod yazan kodların geliştirilmesi ile gündeme gelen bu konu giderek kendini hissettirmeye başlamış durumda. Acaba "biz bilgisayar mühendislerinin geleceği riskli mi?" sorusu beynimizde yankılanır oldu şu günlerde. Fakat bu tartışmanın anlamsız olduğu fikrini savunanlardanım. Zira o kadar fazla sektörde o kadar fazla yenilik var ki! Örneğin ele alacağımız görüntü işleme mevzu savaş teknolojilerinden güvenliğe, tıptan fiziğe, sanayiden kişisel bilgisayarlara kadar sayısız uygulama alanına sahip. Halen bu teknoloji üzerine geliştirilmeyi bekleyen ve hayal gücünüze bağlı pek çok problem mevcut. Fazla uzatmadan konuya giriş yapalım :)

7 Kasım 2012 Çarşamba

RapidMiner'da Decision Tree Uygulaması

Merhaba Arkadaşlar,

Bildiğiniz gibi bir önceki yazımda RapidMiner ile ilgili temel bir kaç şeye değindik. Burada internetten bulduğunuz metin dosyası halinde gelen herhangi bir veri setini Excel'e, oradan da RapidMiner'a aktarmayı öğrendik. Bu arada gezinirken keşfettiğim bir dolu veri seti sitesinden en kullanışlı olanı sizlere söylemek istiyorum;
http://archive.ics.uci.edu/ml/datasets.html
Bu adresten uygulamalarınız için deneme amaçlı veri setlerini görebilirsiniz. Zaten veri setlerine ait açıklamalar da ayrıntılı bir biçimde verilmiş.

Bu kez; bir veri seti üzerinde Sınıflandırma metodunun bir algoritması olan Decision Tree uygulamasını sizlere elimden geldiğince anlatmak istiyorum. Veri seti olarak Göğüs Kanseri veri setini kullanacağız. Bu veri setine aşağıdaki linkten erişebilirsiniz:
http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/

Öncelikle RapidMiner'da yeni bir proses başlatalım(File->New). Yeni prosesi başlatıp Read Excel operatörünü çalışma alanına bırakalım. Bir önceki yazımızda anlattığımız üzere bu operatörü indirdiğimiz ve excel ortamına taşıdığımız veri seti ile bağlayalım. Bu kısmı tekrar anlatmayacağım. Bundan sonrasına değinmeye çalışacağım.