Python Makine öğrenimi için test veri kümeleri oluşturmak

Python Makine öğrenimi için test veri kümeleri oluşturmak

Ağu 22, 2024 - 20:00
Ağu 22, 2024 - 20:01
 0  16
Python Makine öğrenimi için test veri kümeleri oluşturmak

Python'da makine öğrenimi projelerinde test veri kümeleri oluşturmak, modelin performansını doğru bir şekilde değerlendirebilmek için oldukça önemlidir. Test veri kümeleri, modelinizin eğitim verilerine hiç rastlamadığı ve dolayısıyla modelin genelleme yeteneğini ölçen bir veri kümesidir. Bu süreci detaylı bir şekilde ele alalım.

1. Giriş

Makine öğrenimi projelerinde veri kümenizi genellikle şu şekilde bölersiniz:

  • Eğitim Seti (Training Set): Modeli eğitmek için kullanılır.
  • Test Seti (Test Set): Modelin eğitim sırasında hiç görmediği veri ile performansını değerlendirmek için kullanılır.
  • Doğrulama Seti (Validation Set) (Opsiyonel): Modelin hiperparametrelerini ayarlamak ve modelin genel performansını değerlendirmek için kullanılır.

Önemli: Özellikle küçük veri setlerinde, train_test_split fonksiyonu yalnızca eğitim ve test setleri ayırmak için kullanılır. Daha büyük veri setlerinde, eğitim ve test setlerinin yanı sıra doğrulama seti de kullanılır.

2. Gerekli Kütüphaneler

Python'da veri kümenizi bölmek için en sık kullanılan kütüphane Scikit-learn'dir. İlk adım, gerekli kütüphaneleri içe aktarmaktır:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split

3. Veri Setinin Hazırlanması

Öncelikle, veri setinizi hazırlamanız gerekmektedir. Bu aşama, verileri yüklemek ve gerekli özniteliklerin (özelliklerin) ve etiketlerin ayrılmasını içerir.

Örnek Veri Seti Oluşturma

Aşağıda, basit bir veri seti oluşturan örnek bir kod bulunmaktadır:

# Örnek veri seti oluşturma
data = {
    'feature1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    'feature2': [10, 9, 8, 7, 6, 5, 4, 3, 2, 1],
    'label': [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
}

df = pd.DataFrame(data)
X = df[['feature1', 'feature2']]  # Özellikler
y = df['label']  # Etiketler

4. Veriyi Eğitim ve Test Setlerine Bölme

Scikit-learn'ün train_test_split fonksiyonunu kullanarak veriyi eğitim ve test setlerine bölebilirsiniz.

Temel Kullanım

# Veriyi eğitim ve test setlerine bölme
X_train, X_test, y_train, y_test = train_test_split(
    X, y, 
    test_size=0.3,  # Test setinin oranı (örn: %30)
    random_state=42  # Sonuçların tekrar üretilebilirliğini sağlamak için
)
  • test_size: Test setinin oranını belirtir. Örneğin, test_size=0.3 ifadesi, verinin %30'unun test seti olarak ayrılmasını sağlar. Bu parametre bir oran (0.0 ile 1.0 arasında) veya bir tam sayı olabilir.
  • random_state: Rastgelelik tohumunu belirler. Aynı random_state değeri kullanıldığında, aynı veri bölmelerini tekrar elde edersiniz. Bu, tekrarlanabilir sonuçlar elde etmenizi sağlar.
  • shuffle: Verinin karıştırılıp karıştırılmayacağını belirler. Varsayılan olarak True'dır, ancak shuffle=False olarak ayarlanabilir.
  • stratify: Sınıflar arasında dengeli bir bölünme sağlar. Özellikle sınıfların dengesiz olduğu veri setlerinde, stratify=y kullanmak, her iki setin de orantılı sınıf dağılımını korur.

stratify Kullanımı

Eğer veri setinizde sınıf dengesizliği varsa, stratify parametresini kullanarak her iki setin de orantılı sınıf dağılımını koruyabilirsiniz:

X_train, X_test, y_train, y_test = train_test_split(
    X, y, 
    test_size=0.3, 
    random_state=42,
    stratify=y
)

5. Veri Kümesi Kontrolü

Elde edilen eğitim ve test veri kümelerini kontrol edebilirsiniz:

print("Eğitim Özellikleri:")
print(X_train)
print("\nEğitim Etiketleri:")
print(y_train)

print("\nTest Özellikleri:")
print(X_test)
print("\nTest Etiketleri:")
print(y_test)

6. Eğitim ve Test Setlerinin Kullanımı

Eğitim Seti

Eğitim seti, modelin öğrenme sürecinde kullanılır:

from sklearn.linear_model import LogisticRegression

# Model oluşturma ve eğitme
model = LogisticRegression()
model.fit(X_train, y_train)

Test Seti

Test seti, modelin performansını değerlendirmek için kullanılır:

from sklearn.metrics import accuracy_score

# Tahmin yapma
y_pred = model.predict(X_test)

# Sonuçları değerlendirme
accuracy = accuracy_score(y_test, y_pred)
print(f"Modelin doğruluk skoru: {accuracy}")

7. Ekstra: Doğrulama Seti (Validation Set) Kullanımı

Büyük veri setlerinde, genellikle doğrulama seti de kullanılır. Bu set, eğitim sırasında modelin performansını ayarlamak ve hiperparametreleri seçmek için kullanılır.

# Veri setini eğitim, doğrulama ve test setlerine bölme
X_train, X_temp, y_train, y_temp = train_test_split(
    X, y, 
    test_size=0.4, 
    random_state=42
)

X_val, X_test, y_val, y_test = train_test_split(
    X_temp, y_temp, 
    test_size=0.5,  # Bu durumda, test ve doğrulama setleri eşit olacak
    random_state=42
)

8. Tam Kod Örneği

İşte tüm süreci kapsayan kapsamlı bir kod örneği:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# Veri seti oluşturma
data = {
    'feature1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    'feature2': [10, 9, 8, 7, 6, 5, 4, 3, 2, 1],
    'label': [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
}

df = pd.DataFrame(data)
X = df[['feature1', 'feature2']]
y = df['label']

# Veriyi eğitim ve test setlerine bölme
X_train, X_test, y_train, y_test = train_test_split(
    X, y, 
    test_size=0.3, 
    random_state=42, 
    stratify=y
)

# Model oluşturma
model = LogisticRegression()
model.fit(X_train, y_train)

# Tahmin yapma
y_pred = model.predict(X_test)

# Sonuçları değerlendirme
accuracy = accuracy_score(y_test, y_pred)
print(f"Modelin doğruluk skoru: {accuracy}")

Bu süreç, makine öğrenimi projelerinde veriyi etkili bir şekilde bölmenize ve modelinizin performansını doğru bir şekilde değerlendirmenize yardımcı olacaktır.

Bu Yazıya Tepkin Nedir?

like

dislike

love

funny

angry

sad

wow