24 Haziran 2009 Çarşamba

veri madenciliği

Veri madenciliği genel anlamda; büyük miktarda veri içerisinden,gizli kalmış,değerli,kullanılabilir biligilerin açığa çıkarılması biçiminde ifade edilmektedir.
Veri Madenciliğinde amaç; toplanmış olan bilgilerin bir takım istatistik yöntemlerle incelenip
ilgili kurum ve yönetim destek sistemlerinde kullanılmak üzere
degerlendirilmesidir.Bazı anahtar kelimeler kullanılarak 4 asamalı ayrıntılı VM tanımı söyledir:
1. VM, bir süreçtir.
2. VM, karar destek araçlarının niteligini yüceltir.
3. VM, gizlenmis bilgileri bulur.
4. VM, is uzmanları için kavrayıs dagıtıcı bir sistemdir.
Veri Madenciligi Süreci
(1)
Arastırma Probleminin Tanımlanması (Business Understanding)
(2) Verileri Tanıma Asaması (Data Understanding)
(3) Veri Hazırlama Asaması (Data Preperation)
(4) Modelleme Asaması (Modelling)
(5) Degerlendirme Asaması (Evaluation)
(6) Uygulama Asaması (Deployment)

Veri Madenciligi Yöntem ve Teknikleri
Bir VM modeliyle asagıdaki islemlerden bir veya birkaçı gerçeklestirilebilir:
Sınıflama (Classification) ve Regresyon (Regression) Modelleri,
Kümeleme (Clustering) Modelleri ve
Birliktelik Kuralları (Association Rules) ve Ardısık Zamanlı Örüntüler
(Sequential Patterns).
Sınıflama ve regresyon modelleri tahmin edici, kümeleme, birliktelik
kuralları ve ardısık zamanlı örüntü modelleri tanımlayıcı modellerdir.

1. Sınıflama ve Regresyon Modelleri:

En yaygın uygulanan VM tekniklerinden biri olan sınıflama, sınıfı tanımlanmıs mevcut verilerden yararlanarak sınıfı belli olmayan verilerin sınıfını tahmin etmek için kullanılan VM modelidir. Sınıflama iki adım içeren bir islemdir Birinci adımda tahmin için kullanılacak bir model olusturulmaktadır.İkinci adımda, olusturulan bu model sınıfı belli olmayan veriler üzerinde uygulanarak sınıflar tahmin edilmektedir.

Baslıca sınıflandırmateknikleri ;
Yapay Sinir Agları (Artificial Neural Networks), Genetik Algoritmalar (Genetic Algorithms),
K- En Yakın Komsu (K–Nearest Neighbour), Bellek Temelli Nedenleme (Memory Based Reasoning), Naive – Bayes, Lojistik Regresyon (Logistic Regression) ve Karar Agaçlarıdır (Decision Trees).

2. Kümeleme :
Kümeleme analizi, nesnelerin alt dizinlere gruplanmasını yapan bir islemdir. Böylece nesneler, örneklenen kitle özelliklerini iyi yansıtan etkili bir temsil gücüne sahip olmaktadır. Sınıflamanın aksine, yeniden tanımlanmıs sınıflara dayalı degildir. Kümeleme, bir denetimsiz ögrenme (unsupervised learning) yöntemidir.

3. Birliktelik Kuralları ve Ardısık Zamanlı Örüntüler :
Birliktelik kuralları ile bir iliskide yer alan niteliklerin degerleri arasındaki
bagımlılıklar, anahtarda yer almayan diger niteliklerin gruplandırılması
ile bulunur.
Birliktelik kurallarının analizi süreci market sepeti analizi olarak
da adlandırılır. Market sepeti analizinde müsteri ile ilgili veri hareketlerinden
hareketlerinden gelecekte müsterinin nasıl bir tercih yapacagına dair sonuçlar
tahmin edilmektedir.
Çok sayıda verinin depolandıgı bir veri tabanı içinde çesitli nitelikler arasında hemen fark edilmeyen birtakım iliskilerin ortaya çıkartılması stratejik kararların alınmasına yardımcı olabilir. Ancak, bu iliskilerin çok sayıda verinin içinden elde edilmesi basit bir süreç degildir. Bu
süreç birliktelik kuralı madenciligi (association rule mining) olarak adlandırılmaktadır. Veriler arasındaki iliskiler, eger-sonra ifadeleri ile asagıdaki gibi gösterilmektedir.
Eger sonra gerlerini tahmin et>
En yaygın birliktelik kuralı algoritmaları arasında GRI (The Generalized Rule Induction), Apriori sayılabilir.

1 Mayıs 2009 Cuma

C# ile grafik çizimi


C# ile grafik çizdeceğiz.Bu istatistiksel vs gibi durumların goruntuendiği x-y koordinat grafiği olacaktır.Uygulamamız hangi amaca hizmet ediyor dersek kendisine parametre olarak verilen Random 10 sayının göre zamana göre değişen değerinin grafiğini gösteriyor.Grafiğin iskeleti zaten basit fakat değerlere göre uzyan çubukları ve bunları birleştirmek kısmının uzerinde durabiliriz.Bunu yaparken elimizde bulunan noktaları kullanacağız.Mesela cubukların aralığı sabit olduğuiçin bir sonraki aralıkta o kadar uzunlukta bir grafik çizeriz.Sonra da bunların uz noktalarını hesaplayıp doğrularımızı çizeriz.
Kodları da verelim-->
namespace grafik_2
{
public partial class Form1 : Form
{
Random r = new Random();
Graphics g;
SolidBrush s;
int x0 = 400, y0 = 400, x1 = 700, x2 = 400, y1 = 400, y2 = 100;
Pen p;
int[] sayilar = new int[10];
int[] sirali_sayilar = new int[10];

public Form1()
{
InitializeComponent();
}

private void button2_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();

for (int i = 0; i < 10; i++)
{
sayilar[i] = r.Next(0, 100);


}

for (int i = 0; i < 10; i++)
{

listBox1.Items.Add(sayilar[i].ToString());

}

}
public void siralama()
{
int gecici = 0;
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 9; j++)
{
if (sayilar[j] > sayilar[j + 1])
{
gecici = sayilar[j];
sayilar[j] = sayilar[j + 1];
sayilar[j + 1] = gecici;
}
}
}
}
public void cizgi(int x, int y, int x1, int y1)
{
g = this.CreateGraphics();
p=new Pen(Brushes.DarkBlue,2);
g.DrawLine(p, x, y, x1, y1);
g.Dispose();
}
public void cizgi1(int x, int y, int x1, int y1)
{
g = this.CreateGraphics();
p = new Pen(Brushes.Gray, 1);
g.DrawLine(p, x, y, x1, y1);
g.Dispose();
}
public void xy()
{
g = this.CreateGraphics();
p=new Pen(Brushes.WhiteSmoke,1);
s = new SolidBrush(Color.Blue);
g.DrawString("x", this.Font, s, x1, y0+10);
g.DrawString("y", this.Font, s, x0-5, y2-20);
g.DrawRectangle(p,400,100,300,300);
for (int i = 0; i < 300; i+=30)
{
cizgi1(400, 100 + i, 700, 100 + i);
}

}
private void button1_Click(object sender, EventArgs e)
{
g = this.CreateGraphics();
g.Clear(Color.Snow);
cizgi(x0, y0, x2, y2);
cizgi(x0, y0, x1, y1);
zaman();
sayılar();
xy();
cizgim();

}
public void sayılar()
{
g = this.CreateGraphics();
s = new SolidBrush(Color.Orange);
for (int i = 0; i <= 300; i += 30)
{
g.DrawString((i/3).ToString(), this.Font, s, x0-30 , y0 -i );

}
g.Dispose();
}
public void cizgim()
{

for (int i = 0; i < 300; i += 30)
{

if (i > 0)
{
cizgi(x0 + i, y0 - (sayilar[(i / 30)-1]*3), x0 + i+30, y0 - (sayilar[((i + 30) / 30) - 1]*3));
}
if (i == 0)
{
cizgi(x0, y0, x0 + 30, y0 - (sayilar[0]*3));
}
}

}
public void tut() {
for (int i = 30; i <= 300; i += 30)
{
cizgi(x0 + i, y0 - 5, x0 + i, y0 - (sayilar[(i / 30) - 1] * 3));
}
}
public void zaman()
{
g = this.CreateGraphics();
s=new SolidBrush(Color.Blue);
for (int i = 0; i <= 300; i += 30)
{
g.DrawString(i.ToString(), this.Font, s, x0 + i - 10, y0);


}
g.Dispose();

}
private void button3_Click(object sender, EventArgs e)
{
g = this.CreateGraphics();
g.Clear(Color.Snow);
cizgi(x0, y0, x2, y2);
cizgi(x0, y0, x1, y1);
zaman();
sayılar();
xy();
}



private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked == true)
{
button1.PerformClick();
tut();

}
if (checkBox1.Checked == false)
{
button1.PerformClick();

}
}

}
}

Herkese kolay gelsin.

C# ile mail atma programı



Bu uygulmamızda C# ile SMTP maili atma programı yapacaz.Bunun için buna izin veren mail server'a(mesela Gmail) uye olmanız gerekir.Hotmail'in buna izin verip vermediini bilmiyorum ama ben birkaç kez denedim boyle bir girişe izin yok denildi cevap olarak.



ilkonce using System.Net.Mail; sınıfını ekledik daha sonra bu sınıftan bir nesne oluturduk ve bu sınıfa ait özellikleri kullandık.


private void button1_Click(object sender, EventArgs e)
{
try
{
MailMessage mesaj = new MailMessage();
mesaj.From = new MailAddress(textBox1.Text,"hasan",System.Text.Encoding.UTF8);
SmtpClient smtp = new SmtpClient();
mesaj.To.Add(textBox2.Text);
mesaj.Subject = textBox4.Text;
mesaj.IsBodyHtml=false;
mesaj.BodyEncoding = System.Text.Encoding.UTF8;
mesaj.Body = richTextBox1.Text;
mesaj.Priority = MailPriority.High;
smtp.Credentials = new System.Net.NetworkCredential(textBox1.Text, textBox3.Text);
smtp.Port = 587;
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
smtp.Send(mesaj);
}
catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); }
}

30 Nisan 2009 Perşembe

Stored Procedure (Saklı Yordam)

Stored Procedure nedir?
Bir tabloya bağlı olmaksızın veritabanı içinde tanımlanan belirli bir işi yapmaya yönelik kodlardır. Başka bir değişle "Derlenmiş sql cümlecikleridir".
Bunlar birer veritabanı nesnesi oldukları için, doğrudan veritabanı yöneticisi olan programda (örneğin Sql Server) yer alırlar. Veritabanınızı nereye taşırsanız orda yer alırlar.
Stored Procedure ne işe yarar?
Çalıştırmak istediğimiz sql cümleciklerini bir Saklı Yordam içine yerleştirerek, bunun bir veritabanı nesnesi haline gelmesini ve çalışıtırıldığında doğrudan, veritabanı yöneticisini üzerinde barındıran sunucu makinede işlemesini sağlarız.
Stored Procedure faydaları nelerdir?
İstemci makinelerdeki iş yükünü azaltır ve performansı arttırır (yazıldığı zaman aynı zamanda compile edildikleri için query optimizer tarafından optimize edilmiş en hızlı şekilde çalışır).
Sql cümleleri, Saklı Yordam’ lardan çok daha yavaş sonuç
döndürür
Çok katlı mimariyi uygulamak isteğimiz projelerde faydalıdır.
Networkü (Ağ Trafiğini) azaltır.
Açık Sql cümleciklerine nazaran daha güvenlidir
Programlama deyimlerini içerebilirler. if, next, set vs.. programlama dillerindekine benzer özellikler sunar. Gelen parametrelere göre sorgu yapılıp sonucun dönmesi sağlanabilir.

Trigger (Tetikleyici)

  • Trigger nedir?
    Bir tablo üzerinde belirli bir olaya bağlı olarak tetiklenip çalışan SQL kodlarıdır. Diğer bir değişle trigger tetikleyicidir,veritabanında kayıt eklerken,silerken ve değiştirirken arkda tarafata kendi kendine calışan sql cümleleridir.
  • Triggerlar neden kullanılır?
    Genel amacı veri bütünlüğünü korumaktır. Bunun için yapılacak herhangi bir değişiklikte izin verilmemiş işlemler veya gerçekleşmesi durumunda veri bütünlüğünde bozulmalara yol açacak işlemlerde veri bütünlüğünün korunmasına yardımcı olurlar.
  • Hangi olaylar trigerları tetikler?
    Tablo üzerindeki triggerları tetikleyen olaylar insert, update, delete olaylarıdır.
  • Triggerlar nerde kullanılır?
    Bir tablo üzerinde bu olayların öncesinde ve sonrasında tetiklenecek istenildiği kadar trigger yazılabilir. Fakat genel eğilim ve kullanım her bir olay için tek bir trigger kullanmak şeklindedir. Örneğin stok hareketleri sonucunda stok miktarlarının azalması veya artması işlemlerinin, veya tahakkuk ve tahsilatlar sonucu cari hesapların etkilenmesi işlemlerinin triggerlar aracılığı ile yapılmaları tipik bir trigger kullanım yeridir.
  • Triggerların çeşitleri nelerdir?
    Tablo üzerindeki triggerları tetikleyen olaylar insert, update, delete olaylarıdır. Bu olaylara istinaden 3 ana tip triggerdan bahsedilir. Bunlar insert triggerı, update triggerı, delete triggerı şeklindedir.

Basit Store Prosedure Örnekleri


Arkadaşlar bu yazıda size Basit Store Prosedure Örnekleri göstereceğim. Örnek tablomuz yandaki resimdeki gibidir.



Tüm masaları Listeleyelim

create proc [dbo].[sp_masalar_listele]
as
select
*
from tbl_Masalar

ID ye göre masa Listeleyelim

create proc [dbo].[sp_masa_byid]
(
@id int
)
as
select
MasaID,MasaNo,MasaDurum,MasaNotu
from A.tbl_Masalar(NOLOCK)
WHERE A.MasaID=@id


Masa Silelim

create proc [dbo].[sp_masa_sil]
(
@masaID int
)
as
delete
from tbl_Masalar
where MasaID=@masaID

Masa Ekleyelim

create proc [dbo].[sp_masa_ekle]
(
@masaID int output,
@masaNo int,
@masaDurum int,
@masaNotu nvarchar(50)
)
as
insert into
tbl_Masalar
values(@masaNo,@masaDurum,@masaNotu)
set @masaID=@@identity

Masa Güncelleyelim

create proc [dbo].[sp_masa_guncelle]
(
@masaID int output,
@masaNo int,
@masaDurum int,
@masaNotu nvarchar(50)
)
as
update
tbl_Masalar
set
MasaNo=@masaId,
MasaDurum=@masaDurum,
MasaNotu=@masaNotu
where MasaID=@masaID


İyi Çalışmalar...:)

29 Nisan 2009 Çarşamba

3 KATLI MİMARİ


Bu modelde veritabanı üzerinde sırasıyla şu katmanlar bulunur:
  • En altta veri erişim katmanı( Data Access Layer).
  • Ortada iş katmanı( Business Layer ).
  • En üstte sunum katmanı( Prensentation Layer ).
VERİ ERİŞİM KATMANI
Veri erişim katmanı tablolar,stored procedure'lar ve diğer bileşenler ile sağlam bir ilişki kurarak veri mantığını sağlar.Veri tabanına esnek , kolay,hızlı ve güvenli erişim sağlar.Diğer katmanlar istetklerini veri katmanına gönderirler.Bu istekleri alan veri katmanı , isteğe göre tablolara kayıt ekleme,silme,kayıt güncelleme ,stored procedure'lar ile kayıt seçme , dataset geri döndürme gibi işlemleri yapacaklardır.Projelerde böyle bir veri erişim katmanın bulunması ,veritabanı güvenliği açısından performans,hız,güvenlik ve kod okunabirliği açısından avantajlar sağlar.
İŞ KATMANI
Uygulamanın iş mantığını kapsayan Business(iş) katmanının, veri erişim katmanındaki kod kalabalığından etkilenmemesi amaçlanmaktadır.İş katmanı,tüm işlemlerin yapıldığı kısımdır.Her türlü denetim burada yapılır.Sunum katmanından gelen istekleri hazırlayan ve veri katmanına gönderen kısımdır.
SUNUM KATMANI
Sunum katmanı,iş katmanı ve veri katmanından gelen bilgilerin kullanıcılara gösterildiği kısımdır.Yani bir arayüz denilebilir.HTML sayfalar bu katmana örnek verilebilir.