Yapay Zeka Modelleri için Veri Toplama ve Temizleme

Yapay zeka modellerinin başarısı, büyük ölçüde eğitildiği verinin kalitesine bağlıdır. "Çöp girdi, çöp çıktı" (Garbage in, garbage out) prensibi, yapay zeka alanında özellikle geçerlidir. Bu nedenle, veri toplama ve temizleme adımları, bir yapay zeka projesinin en kritik aşamalarından biridir.

Veri Toplama

Veri toplama, yapay zeka modelinizi eğitmek için gerekli bilgileri bir araya getirme sürecidir. Veriler çeşitli kaynaklardan gelebilir:
Mevcut Veritabanları: Şirketlerin veya kurumların elindeki yapılandırılmış veriler (müşteri kayıtları, satış verileri, sensör verileri vb.).
Web Kazıma (Web Scraping): Web sitelerinden otomatik olarak veri çekme. Örneğin, ürün yorumları, haber makaleleri, fiyat bilgileri.
API'ler: Çeşitli servislerin (Twitter, Google Maps, hava durumu servisleri) sunduğu API'ler aracılığıyla veri çekme.
Sensörler: IoT cihazlarından veya fiziksel sensörlerden gelen gerçek zamanlı veriler.
Kamuya Açık Veri Setleri: Kaggle, UCI Machine Learning Repository gibi platformlarda bulunan hazır veri setleri.
Veri toplarken, verinin modelinizin amacına uygun, yeterli miktarda ve çeşitlilikte olmasına dikkat etmek önemlidir. Ayrıca, veri gizliliği ve yasal düzenlemelere (GDPR, KVKK vb.) uyum sağlamak da büyük önem taşır.

Veri Temizleme (Data Cleaning)

Toplanan veriler genellikle ham ve düzensizdir. Veri temizleme, bu ham veriyi analiz ve modelleme için uygun hale getirme sürecidir. Bu aşamada karşılaşılan yaygın sorunlar ve çözüm yolları şunlardır:
1.Eksik Değerler (Missing Values): Veri setindeki bazı gözlemlerde eksik değerler bulunabilir. Bunlar farklı şekillerde ele alınabilir:
Silme: Eksik değere sahip satırları veya sütunları tamamen silmek. Ancak bu, veri kaybına yol açabilir.
Doldurma (Imputation): Eksik değerleri ortalama, medyan, mod gibi istatistiksel yöntemlerle veya daha gelişmiş makine öğrenmesi teknikleriyle doldurmak.
Özel Değer Atama: Eksik değerleri "Bilinmiyor" gibi özel bir kategori veya sayısal bir değerle işaretlemek.
2.Aykırı Değerler (Outliers): Veri setindeki diğer gözlemlerden önemli ölçüde farklı olan değerlerdir. Aykırı değerler, modelin performansını olumsuz etkileyebilir. Tespit edildikten sonra silinebilir, dönüştürülebilir veya özel olarak işlenebilir.
3.Gürültülü Veri (Noisy Data): Rastgele hatalar veya varyans içeren verilerdir. Örneğin, yanlış girilmiş sayılar, yazım hataları. Bu tür veriler, düzeltme algoritmaları veya manuel kontrol ile temizlenebilir.
4.Tekrarlayan Veri (Duplicate Data): Veri setinde aynı kaydın birden fazla kez bulunması. Tekrarlayan kayıtlar, analiz sonuçlarını yanıltabilir ve modelin yanlış öğrenmesine neden olabilir. Genellikle tekrarlayan kayıtlar silinir.
5.Tutarsız Veri (Inconsistent Data): Aynı bilginin farklı formatlarda veya farklı şekillerde temsil edilmesi. Örneğin, "ABD", "Amerika Birleşik Devletleri", "U.S.A." gibi farklı yazımlar. Bu tür veriler standart bir formata dönüştürülmelidir.
6.Veri Formatlama Hataları: Tarih formatları, sayısal değerlerin metin olarak girilmesi gibi hatalar. Veriler doğru veri tiplerine dönüştürülmelidir.
Veri temizleme, genellikle iteratif bir süreçtir ve veri setinin yapısına göre farklı teknikler gerektirebilir.

Pandas ve NumPy ile Veri Manipülasyonu

Python ekosisteminde veri manipülasyonu için en güçlü ve yaygın kullanılan kütüphaneler Pandas ve NumPy'dır.

NumPy

NumPy (Numerical Python), sayısal hesaplamalar için temel bir kütüphanedir. Özellikle çok boyutlu diziler (ndarray) ve bu diziler üzerinde yüksek performanslı matematiksel işlemler için optimize edilmiştir. Makine öğrenmesi algoritmalarının çoğu, girdi olarak NumPy dizilerini bekler.
Kurulum:
pip install numpy
Temel Kullanım:
import numpy as np # NumPy dizisi oluşturma arr = np.array([1, 2, 3, 4, 5]) print(arr) # İki boyutlu dizi (matris) matrix = np.array([[1, 2, 3], [4, 5, 6]]) print(matrix) # Dizi işlemleri print(arr + 2) # Her elemana 2 ekle print(arr * 3) # Her elemanı 3 ile çarp print(np.sqrt(arr)) # Karekök al # Dizi şekillendirme reshaped_arr = arr.reshape(5, 1) print(reshaped_arr) # İstatistiksel işlemler print(np.mean(arr)) # Ortalama print(np.std(arr)) # Standart sapma

Pandas

Pandas, yapılandırılmış verilerle (tablolar, zaman serileri) çalışmak için tasarlanmış, NumPy üzerine inşa edilmiş bir kütüphanedir. İki ana veri yapısı vardır:
Series: Tek boyutlu etiketli dizidir (bir sütun).
DataFrame: İki boyutlu etiketli veri yapısıdır (tablo, birden fazla sütun).
Pandas, veri yükleme, temizleme, dönüştürme, birleştirme ve analiz etme gibi görevler için çok sayıda araç sunar.
Kurulum:
pip install pandas
Temel Kullanım:
import pandas as pd # DataFrame oluşturma data = { 'İsim': ['Ali', 'Ayşe', 'Can', 'Deniz'], 'Yaş': [25, 30, 22, 35], 'Şehir': ['Ankara', 'İstanbul', 'İzmir', 'Ankara'] } df = pd.DataFrame(data) print(df) # CSV dosyasından veri yükleme # df = pd.read_csv('veri.csv') # İlk 5 satırı görüntüleme print(df.head()) # Sütun seçimi print(df['İsim']) # Koşullu seçim print(df[df['Yaş'] > 25]) # Yeni sütun ekleme df['Yaş_Grubu'] = df['Yaş'].apply(lambda x: 'Genç' if x < 30 else 'Yetişkin') print(df) # Eksik değerleri kontrol etme print(df.isnull().sum()) # Eksik değerleri doldurma (örnek) # df['Yaş'].fillna(df['Yaş'].mean(), inplace=True) # Gruplama ve toplama print(df.groupby('Şehir')['Yaş'].mean())

Veri Görselleştirme (Matplotlib, Seaborn)

Veri görselleştirme, veri setlerindeki kalıpları, eğilimleri ve aykırı değerleri anlamak için kritik öneme sahiptir. Python, bu amaçla Matplotlib ve Seaborn gibi güçlü kütüphaneler sunar.

Matplotlib

Matplotlib, Python için temel bir çizim kütüphanesidir. Çizgi grafikleri, çubuk grafikleri, dağılım grafikleri, histogramlar ve daha fazlasını oluşturmak için geniş bir yelpazede araçlar sunar.
Kurulum:
pip install matplotlib
Temel Kullanım:
import matplotlib.pyplot as plt import numpy as np # Çizgi grafiği x = np.linspace(0, 10, 100) y = np.sin(x) plt.plot(x, y) plt.title('Sinüs Dalgası') plt.xlabel('X Ekseni') plt.ylabel('Y Ekseni') plt.show() # Dağılım grafiği np.random.seed(0) data1 = np.random.rand(50) data2 = np.random.rand(50) plt.scatter(data1, data2) plt.title('Dağılım Grafiği') plt.xlabel('Veri 1') plt.ylabel('Veri 2') plt.show()

Seaborn

Seaborn, Matplotlib üzerine inşa edilmiş, istatistiksel veri görselleştirmesi için daha yüksek seviyeli bir kütüphanedir. Daha çekici ve bilgilendirici grafikler oluşturmayı kolaylaştırır ve Pandas DataFrames ile daha iyi entegrasyon sağlar.
Kurulum:
pip install seaborn
Temel Kullanım:
import seaborn as sns import matplotlib.pyplot as plt import pandas as pd # Örnek veri seti yükleme iris = sns.load_dataset('iris') # Kutu grafiği sns.boxplot(x='species', y='sepal_length', data=iris) plt.title('Türlere Göre Çanak Yaprağı Uzunluğu') plt.show() # Çiftler arası dağılım grafiği (Pairplot) sns.pairplot(iris, hue='species') plt.show() # Isı haritası (Korelasyon matrisi) corr = iris.drop('species', axis=1).corr() sns.heatmap(corr, annot=True, cmap='coolwarm') plt.title('Iris Veri Seti Korelasyon Matrisi') plt.show()
Bu kütüphaneler, yapay zeka projelerinde veriyi anlamak, keşfetmek ve sunmak için vazgeçilmez araçlardır. Masaüstü uygulamalarında, bu görselleştirmeler doğrudan uygulamanın içine gömülebilir veya analiz sonuçlarını kullanıcıya daha anlaşılır bir şekilde sunmak için kullanılabilir.