Veri Madenciliği Çok fazla bilgiden gizli kalmış örüntüleri ortaya çıkarma sürecine Veri Madenciliği denir. istatistik + makine öğrenmesi + yapay zeka = veri madenciliği Veri madenciliği süreçleri CRISP-DM Süreci Data Understanding Classification (Sınıflandırma): veri belirli kategorilere göre sınıflara ayrılır. Clustring (kümeleme): Belirli etiketlere göre kümeleme yapıp promosyon maillerinin sadece ilgili kişilere gitmesini sağlar Assocation Rules (Birliktelik kuralları): Buna bakan bunlara da baktı yapısı gibi veriler arasında ilişki. Data preparation Bu fazda değerlendirilecek veriler hazırlanır. Elimizde boş girilmiş veri olmaması gerekir. Boş olan verilere diğer veriler medyanı veya aritmetik ortalaması ile doldurulur.
Modelleme İstatiksel makine öğrenmesi ve yapay zeka yöntemleri kullanılır. Bu şekilde istatistiksel olarak karşılaştırma yapılır. Evaluation Modellemeden gelen veriler değerlendirilir. Deployment Verilerin ekranda gösterilmesi aşamasına denir. OLTP: Bir veritabanında sadece Insert-Update-Delete yapılıyor ise bu veri tabanına denir. Dataware House OLTP veritabanındaki verilerin sadece analiz edilecek kısmını tutar. Kullanılacak bazı kütüphaneler Pandas: csv verileri üzerinde hızlı işlem yapabiliyor. NumPy : matrisler üzerinde hızlı çalışıabiliyor Scikit_Learn: Makine öğrenmesi kütüphanesi Pandas Verilerin satır ve sütunları üzerinde işlem yapmaya izin veren Data Frame ve Series özellikleri vardır. NumPy Güçlü bir N-boyutlu dizi sağlar. Karmaşık fonksiyonlar bulunmaktadır. C/C++ Fortran entegrasyonu bulunmaktadır. Kullanışlı Foruier dönüşümü ve rastgele sayı yeternekleri vardır. Scikit_Learn Makine öğrenmesi kütüphanesi NumPy verilerini parametre olarak alır. Pandas kullanarak verileri yüklenebilir. temizlenebilir ve işlenebilir.
ilk uygulama import pandas as pd import numpy as np # F9 ile bulunulan satır veya taranmış olan satırları çalıştırabiliriz. dataframe = pd.read_csv('eskicalisanlar.csv') # Data frame kısmında içeriği görebiliriz. dataframe.head() # en üstten itibaren belirli sayıda kaydı gösterir. # head parantezlerinin içerisine bir parametre verilirse o parametre kadar # veriyi gösterir. dataframe.tail() # sondan itibaren kayıtları görmek için kullanılır. dataframe.shape # dataframein kaç satır ve kaç sütundan oluştuğunu bir tuple olarak verir. dataframe.size # dataframein içerisinde kaç tane kayıt olduğunu gösterir. len(dataframe) # satır sayısını öğrenmemizi sağlar. dataframe.columns # kolon isimlerini görmemizi sağlar. dataframe['hired'] # sadece 'Hired' kolonu bilgilerini görmemizi sağlar. dataframe['hired'][5] # Hired ın 5. indisindaki veri gösterir. dataframe[['hired', 'Employed?']] # birden fazla sütunu aynı anda çekmemizi sağlar. dataframe.sort_values(['years Experience']) # verileri 'Years Experience' öncelikli sıralamamızı sağlar. Varsayılan olarak # küçükten büyüğe sıralar. egitimduzeyi = dataframe['level of Education'].value_counts() # 'Level of Education' kolonuna sahip kişilerin verilerini birleştirir. egitimduzeyi.plot(kind='bar') # egitimduzeyi verilerinden grafik oluşturmamızı sağlar.
Soru Yalnızca "Previous Employers" ve "Hired" sütunlarını, dataframeimizin 5-10 satırlarını saçin. Bunu yeni bir Dataframe'e atayın ve verilerin bu alt kümesindeki Previous Employersların dağılımını gösteren bir histogram oluşturun. Veri Tipleri Numerical Nümerik veriler Discrete ve Continuous olmak üzere ikiye ayrılır. Dicrete Data (Ayrık veri) Tam sayı tabanlıdır. Genellikle bir olayın gerçekleşme sayısı gibi durumlar ifade edilir. (Bir müşteri yılda kaç defa alışveris yaptı.) Continuous Data (Sürekli Veri) Bu tip veriler ölçümle belirlenmiş değerlerdir. Gerek tam sayı gerekse virgüllü sayılar olabilir. Yani sayı doğrusu üzerindeki tüm değerleri alabilirler. (Bir okuldaki öğrencilerin kiloları nedir?) Categorical Data (Kategorik Veri) Cinsiyeti Irk, Ürün kategorisi vb. Ordian Data (Ordinal Veri) Ordinal veriler de yine kategorik veri türündendir. Fakat değerleri arasında sıralı bir ilişki bulunmaktadır. (Film ratingleri, Müşteri ürün değerlendirmeleri vb.) Örnek Sorular Tankınızda ne kadar gaz var? (Continuous) Hastane hizmetine verdiğiniz puan? 1 kötü, 2 orta, 3 iyi, 4 çok iyi (Ordinal) Sınıtaki öğrencilerin yaşadıkları iller (Categorical) Sınıftaki öğrencilerin yaşları. (Discrete) Alışveriş merkezinde harcanan para (Continuous) Categorical
Mean, Median ve mode Mean verilerin aritmetik ortalamsıdır. import pandas as pd import numpy as np veri = [1,2,3,4,5,6,7,8,9,10] np.mean(veri) rastgele veri üretmek istersek aşağıdaki gibi yapabiliriz. import pandas as pd import numpy as np import mathplotlib.pyplot as plot gelirler = np.random.normal(3000,1500,10000) # Normal dağılıma sahip ortalama değer, Standart sapma, 10000 değer üret np.mean(gelirler) plot.hist(gelirler, 50) # gelirler verilerini 50 aralığa ayır demek. Histogram Gruplandırılmış bir veri dağılımının sütun grafiği ile gösterimine histogram adı verilir. Histogram oluşturma 1. Öncelikle veriler küçükten büyüğe sıralanır. 2. Veri grubunun açıklığı (aralığı) bulunur. Açıklık en büyük veriden en küçük verinin çıkarılması ile bulunur. 3. Verilerin kaç gruba ayrılacağı belirlenir. 4. Grup genişliği bulunur. Açıklık değerinin grup sayısına bölünmesiyle elde edilen sayıdan büyük en küçük doğal sayı grup genişliği olarak alınır. 5. Veriler en küçük veriden başlayarak veri genişliğine göre gruplara ayrılır. 6. Oluşturulan gruplar ve gruplardaki veri sayıları tablo halinde düzenlenir. 7. Tabloya bakılılarak histogram çizilir.
Örnek histogram çizimi: Veriler: 162, 161, 170, 167, 170, 173, 163, 176, 174, 180, 179, 164, 169, 175, 177, 185, 169, 172, 180, 175, 168, 163, 172, 172, 169, 173, 170, 171, 168, 166, 167, 170. 1) Öncelikleri veriler küçükten büyüğe sıraladık. 161, 162, 163, 163, 164, 166, 167, 167, 168, 168, 169, 169, 169, 170, 170, 170, 170, 171, 172, 172, 172, 173, 173, 174, 175, 175, 176, 177, 179, 180, 180, 185 2) Veri grubunun açıklığını bulduk. 185 161 = 24 3) Verilerin kaç gruba ayrılacağı belirledik. Grup sayımız 5 olsun 4) Grup genişliğini bulduk. 24 : 5 = 4,8 olup bu sayıdan büyük en küçük doğal sayı 5'tir. Verileri grup genişliğine göre gruplara ayırdık. Verilerdeki en küçük sayıdan başlayarak grup genişliği kadar sayı ilerleyerek bir grup yapıyoruz. Buradaki sayıların veriler arasında olma zorunluluğu yok. 161-162-163-164-165 gibi 5 tane veriyi 161-165 şeklinde yazıyoruz. O halde gruplarımız: 161-165, 166-170, 171-175, 176-180, 181-185 5) Gruplarımızı ve o gruplardaki veri sayılarını tablo halinde düzenledik. Gruplar Kişi sayısı 161-165 5 166-170 12 171-175 9 176-180 5 181-185 1
Outlier (Aşırı değer) Bir veri analizi yapılırken verilerin normal dağılıma uygun olduğu düşünülür. Veriler, ortalama >= -3*Standart sapma ve ortalama <= 3 * Standart sapma aralığı içerisinde olmalıdır. Bu aralığın dışında bulunan değerler Outlier değerlerdir. Outlier değerler silinmezse doğru sonuca ulaşılamaz. Bu verilerin silinmesi gerekmektedir. Mod Bir sayısal değer içerisinde en çok tekrar eden değere denir. from scipy import stats yaslar = np.random.randint(18, high=90, size=500) # Rastgele yaş değerine sahip 500 tane değer oluşturur. stats.mode(yaslar) # verilen yaşların en çok tekrar edenini bulur. Median Bir sayısal değer sıralandığında ortadaki sayıyı verir. Eğer standart sapma çok yüksekse medyan çok önemlidir. Çünkü ortalama istediğimiz sonucu vermeyecektir. Burada medyan değerlerine göre işlem yapılır. Bu yğzden veriyi düzgün incelemek gerekmektedir. np.median(yaslar)