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:
Bash
pip install numpy
Temel Kullanım:
Python
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:
Bash
pip install pandas
Temel Kullanım:
Python
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:
Bash
pip install matplotlib
Temel Kullanım:
Python
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:
Bash
pip install seaborn
Temel Kullanım:
Python
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.