blog posts

Python ile makine öğreniminde veri bölümlemeyi öğretme

uPython bölme genellikle makine öğreniminde verileri üç eğitim setine (Eğitim Seti), test setine (Test Seti) ve doğrulama setine (Doğrulama Seti) ayırmak için kullanılır . Bu yazıda Python ile makine öğreniminde veri bölümleme eğitimi ele alınmıştır.

Makine öğreniminde veri bölümleme nedir?

Eğitim verilerine ve test verilerine (Train-Test Split) veri ayırma (veri bölme), bir makine öğrenimi algoritmasının performans kalitesini ölçmeye yönelik bir yöntemdir . Veri ayırma, sınıflandırma veya regresyon problemleri için kullanılabilir ve genel olarak bu yaklaşım, her türlü denetimli öğrenme algoritmasında kullanılır. Veri ayırma işlemi, bir veri kümesini iki veya üç alt kümeye bölmeyi içerir. Bu bölümde yapay zeka ve makine öğrenimindeki bazı önemli kavramlardan bahsedilmiştir. Bu nedenle aşağıda bu kavramlarla ilgili bazı maddeler tanıtılmıştır.

Önerilen makaleler:

  • Python ile verileri kategorilere ayırma — Pratik bir kılavuz
  • Basit doğrusal regresyon – basit dilde kavram ve hesaplamalar (+ ücretsiz eğitim videosunu indirin)
  • Python ile Denetimli Öğrenme — Kapsamlı bir kılavuz

Makine öğreniminde veriler neden önemlidir?

şu öğrenimi biliminde veriler çok önemlidir ve bir tür iş yakıtı olarak kabul edilir. Makine öğreniminde verilerin önemi iki nedenden dolayıdır:

  1. Modelin öğrenmesi için verilere ihtiyacı vardır, böylece “Modelin işi, verilerdeki bilgiyi çıkarmak ve kullanmaktır” denilebilir.
  2. Modeli test etmek için verilere ihtiyacımız var, çünkü model verilerdeki bilgileri iyi çıkaramamış olabilir.

 

Python ile makine öğreniminde veri bölümleme eğitimi

Makine öğrenimi sürecinin ilk kısmı için eğitim verileri (Train) kullanılır ve doğrulama verileri (Validation) izleme (İzleme) ve bazen modelin öğrenimini kesintiye uğratmak için kullanılabilir. Test verileri de bu sürecin ikinci kısmı için kullanılır. Bu 3 veri kategorisi arasında Doğrulama verilerini kullanamazsınız; Ancak bunların varlığı, bazı hiperparametrelerin daha iyi ayarlanmasına yardımcı olur.

Python ile makine öğreniminde veri bölümleme için gerekli kitaplıkları çağırma

Şimdi Python ortamına girin ve önce gerekli kütüphaneleri çağırın:

import numpy as np
import sklearn.model_selection as ms
Dizilerle çalışmak için Numpy kütüphanesine ve verileri bölmek için Sklearn kütüphanesindeki veya Scikit-Learn kütüphanesindeki Model Seçimi bölümüne ihtiyaç vardır.

Python ile makine öğreniminde bir veri segmentasyonu projesini uygulamak için veri yükleme

Artık veriyi bölmek için veriye ihtiyaç var; Bu proje için IRIS veri seti kullanılmıştır. Sklearn kitaplığı, IRIS verilerini aşağıdaki gibi yüklemek için de kullanılır:

import sklearn.datasets as dt

IRIS=dt.load_iris()

X = IRIS.data
Y = IRIS.target
Bu sayede gerekli veriler programlama ortamına girmiş olur.

İris verilerini iki kümeye ayırma Python’da Eğitim ve Test

Yalnızca Eğit ve Test verilerine ihtiyaç duyulursa, aşağıdaki gibi yapılabilir:

trX, teX, trY, teY = ms.train_test_split(X, Y, train_size=0.7)
Yukarıdaki kod satırının çalıştırılması sonucunda verinin %70’i eğitime, %30’u teste ayrılacaktır; Bu işlem rastgele gerçekleşecek, ancak her verinin X’i, Y ile karşılık gelen veri olarak kalacaktır.

Verileri iki kümeye ayırma Python’da yeniden üretilebilir bir şekilde Eğitin ve Test Edin

Bu kodun her çalıştırıldığında verileri farklı şekillerde böldüğüne ve programın aynı şekilde tekrar üretilemeyeceğine ve gerekirse Ransom State’in aşağıdaki gibi ayarlanabileceğine dikkat edilmelidir:

trX, teX, trY, teY = ms.train_test_split(X, Y, train_size=0.7, random_state=2)
Bu şekilde, veriler her çalıştırıldığında aynı şekilde bölünecektir. Train_test_split fonksiyonunun çıkış sırasının önce Xs sonra Ys için olduğu ve bir sonraki adımda Train verilerine öncelik verileceği unutulmamalıdır.

Python ile makine öğreniminde veri bölümleme için veri boyutlarının incelenmesi

Artık verilerin boyutlarını kontrol edebilirsiniz:

print(f'{X.shape = } -- {Y.shape = }')
print(f'{trX.shape = } -- {trY.shape = }')
print(f'{teX.shape = } -- {teY.shape = }')
Çıktı aşağıdaki gibidir:
X.şekli = (150, 4) -- Y.şekli = (150,)
trX.shape = (105, 4) -- trY.shape = (105,)
teX.shape = (45, 4) -- teY.shape = (45,)

Dolayısıyla hem verilerin oranı hem de verilerin birinci boyutunun boyutu gözlenmiştir. Ancak veriler üzerinde doğrulama yapma niyeti varsa, biraz farklı yapılmalıdır.

Python ile makine öğreniminde doğrulama için veri ayırma nasıl yapılır?

İlk olarak Train verilerini (eğitim verileri) ayırabilir ve ardından bir sonraki adımda doğrulama verilerini test verilerinden ayırabilirsiniz:

trX, X2, trY, Y2 = ms.train_test_split(X, Y, train_size=0.7, random_state=2)

vaX, teX, vaY, teY = ms.train_test_split(X2, Y2, train_size=0.5, random_state=2)
Bu bölümde, verilerin %70’i başlangıçta eğitim için ayrılır ve geri kalanı X 2 ve Y 2 değişkenlerinde saklanır .

Veri madenciliği ve makine öğrenimi eğitim videolarının tanıtımı

Faradars web sitesinde, her biri belirli bir konuya sahip çeşitli eğitim koleksiyonları bulunmaktadır ve her koleksiyonda derlenen tüm dersler ortak bir bilimsel ve eğitimsel geçmişe sahiptir. Veri madenciliği ve makine öğrenimi ile ilgilenenlerin kurslarını kontrol etmesi ve kullanması tavsiye edilen web sitesinde bir “veri madenciliği ve makine öğrenimi eğitim seti” de bulunmaktadır. Bu makalenin yazıldığı sırada, söz konusu koleksiyonda veri madenciliği ve makine öğrenimi alanında 265 saatten fazla video eğitim içeriğinin sunulduğu 30 farklı eğitim kursu bulunmaktadır.

Test ve doğrulama verilerini eşit olarak bölmek için veri oranı

Artık X2 ve Y2 , test verileri ve doğrulama verileri arasında 1:1 oranında bölünebilir Nihai oranlar aşağıdaki gibi olacaktır:

İkinci fonksiyonda, train_size değerinin, bu koddaki doğrulanmış sete eşit olan fonksiyonun ilk çıkış setinin boyutunu gösterdiğine dikkat edilmelidir. Şimdi verilerin boyutlarını tekrar kontrol edebiliriz:

print(f'{X.shape = } -- {Y.shape = }')
print(f'{trX.shape = } -- {trY.shape = }')
print(f'{vaX.shape = } -- {vaY.shape = }')
print(f'{teX.shape = } -- {teY.shape = }')
Çıktı aşağıdaki gibi olacaktır:
X.şekli = (150, 4) -- Y.şekli = (150,)
trX.shape = (105, 4) -- trY.shape = (105,)
vaX.shape = (22, 4) -- vaY.shape = (22,)
teX.shape = (23, 4) -- teY.shape = (23,)

Python’da veri bölümleme işlevi tasarlama

Artık aynı işlemi gerçekleştiren ve kodlama görevlerini kolaylaştıran bir fonksiyon tasarlamak mümkün. Bunu yapmak için, ilk olarak girişte Tren ve Doğrulama setlerinin verileri ve boyutu alınır:

def Split (X:np.ndarray, Y:np.ndarray, trS:float, vaS:float):
Veri türünün Numpy n-boyutlu diziler olması gerektiğine ve her kümenin boyutunun 0’dan 1’e kadar bir ondalık sayı olacağına dikkat edilmelidir. Şimdi Train verilerini ayırmamız gerekiyor:
    trX, X2, trY, Y2 = ms.train_test_split(X, Y, train_size=trS)
Ardından Doğrulama ve Test verilerinin ayrılması gerekir. Bunun için öncelikle Test datasının boyutunu bulmalısınız:
    teS = 1 - trS - vaS
Şimdi ikinci bölümün verilerini bölebiliriz:
    vaX, teX, vaY, teY = ms.train_test_split(X2, Y2, train_size=vaS/(vaS+teS))
Bu şekilde, her üç veri seti de ayrılır.

7. Python’da veri bölme işlevinin çıktı biçimini belirleme

Artık fonksiyonun çıktısı tanımlanabilir; Ancak çıktıda 6 dizi alındığından ve kullanım sırasında hatalara neden olabileceğinden Python’da sözlük veri türü kullanılır:

    Output = {'X':{'tr':trX,
                   'va':vaX,
                   'te':teX},
              'Y':{'tr':trY,
                   'va':vaY,
                   'te':teY}}
Bu şekilde her diziye tuşları kullanılarak erişilebilir.

8. Python ile makine öğreniminde veri bölümleme işlevinin son hali

Şimdi ortaya çıkan sözlük çıktıda döndürülür ve işlev aşağıdaki son biçimi alır:

def Split (X:np.ndarray, Y:np.ndarray, trS:float, vaS:float):
    trX, X2, trY, Y2 = ms.train_test_split(X, Y, train_size=trS)
    teS = 1 - trS - vaS
    vaX, teX, vaY, teY = ms.train_test_split(X2, Y2, train_size=vaS/(vaS+teS))
    Output = {'X':{'tr':trX,
                   'va':vaX,
                   'te':teX},
              'Y':{'tr':trY,
                   'va':vaY,
                   'te':teY}}
    return Output
Şimdi bu işlev şu şekilde çağrılabilir ve kullanılabilir:
SD = Split(X, Y, 0.7, 0.15)
Diziler şu şekilde de mevcut olacaktır:
trX = SD['X']['tr']
teY = SD['Y']['te']
Bu sayede hata olasılığı da azalmış olacaktır.

Python’da veri bölme işlevinin ayarlanabilirliğini geliştirmek için özellikler eklendi

İşlev şu ana kadar tamamlandı, ancak davranışını daha özelleştirilebilir hale getirmek için bazı özellikler eklenmelidir. Birincisi, girişte bir Rastgele Durum ayarlamak ve bunu verileri bölmek için kullanmaktır. İkinci şey, Train ve Validation boyutunu kontrol etmektir. Bu iki öğeyi düzelttikten sonra, fonksiyonumuz aşağıdaki formu alır:

def Split (X:np.ndarray, Y:np.ndarray, trS:float, vaS:float, RS:int=None):
    assert trS + vaS < 1, 'Train Size + Validation Size Must be Smaller Than 1'
    trX, X2, trY, Y2 = ms.train_test_split(X, Y, train_size=trS, random_state=RS)
    teS = 1 - trS - vaS
    vaX, teX, vaY, teY = ms.train_test_split(X2, Y2, train_size=vaS/(vaS+teS), random_state=RS)
    Output = {'X':{'tr':trX,
                   'va':vaX,
                   'te':teX},
              'Y':{'tr':trY,
                   'va':vaY,
                   'te':teY}}
    return Output
RS’nin varsayılan değerinin Yok olarak ayarlandığına dikkat edilmelidir, çünkü belirli koşullar altında Rastgele Durumu düzeltme niyeti olmayabilir. iddia, veri boyutu hakkında bir hata mesajı oluşturmak için de kullanılır ve örneğin, işlev aşağıdaki gibi yanlış çağrılırsa bir hata oluşur:
SD = Split(X, Y, 0.8, 0.4)
Karşılık gelen hata aşağıdaki gibi olacaktır:
İstisna oluştu: AssertionError
Tren Boyutu + Doğrulama Boyutu 1'den Küçük Olmalıdır

Bu sayede Python ile makine öğrenimindeki veri bölme işlevi tamamlanmış olur ve projelerinizde kullanabilirsiniz. Şimdi bu yazının son bölümünde Python ile makine öğreniminde veri bölme eğitimi ile ilgili eğitim kursları tanıtılmıştır.

Öğrenen makine Python ile öğrenmeye yönelik eğitim videolarının tanıtımı

Python ile makine öğreniminde veri bölümleme hakkındaki makalenin bu son bölümünde, Python ile makine öğrenimi alanında bir dizi ilgili ve uygulamalı müfredat dışı kurs tanıtıldı.

Python ile makine öğrenimi videosu

 

Ders dışı makine öğrenimi kursunun süresi 10 saattir ve eğitmen Saeed Mazloumi Rad. Bu kurs, yapay zeka alanına ilgi duyan ve aktif olanlar ile makine öğrenmesi alanında beceri kazanmak ve çalışmaya başlamak isteyenler için uygundur. Bu eğitim kursunda sunulan konular ve ana hatlar arasında, makine öğrenimine giriş, NumPy’ye aşinalık, Pandalara aşinalık, veri çizme, istatistiksel konulara aşinalık ve diğer konuları sayabiliriz.

Python’da uygulama içeren makine öğrenimi eğitim videosu – birinci bölüm

 

Bu kursun süresi yaklaşık 17 saat olup, eğitmeni Dr. Farshid Shirafken’dir. Bu kurs, temel kavramlar, veriler, regresyon ve dört sınıflandırma yöntemi gibi konuları içeren makine öğrenimi eğitiminin ilk bölümünü içerir: lojistik regresyon, destek vektör makinesi, sinir ağı ve karar ağacı. Makine öğrenimi eğitiminin ikinci kısmı, aşağıda tanıtılan başka bir eğitim kursundadır.

Python’da uygulama içeren makine öğrenimi eğitim videosu – Bölüm II

 

Python’da uygulamalı makine öğrenimi eğitim kursunun ikinci bölümünün süresi on saat 33 dakikadır ve eğitmen Dr. Farshid Shirafken’dir. Bayes sınıflandırması, k en yakın komşu, toplu öğrenme gibi diğer sınıflandırma yöntemleri de dahil olmak üzere makine öğreniminin temel ve önemli konularının devamı ve makine öğreniminin diğer konuları bu derste tam olarak işlenir.

Çözüm

Bu yazıda Python ile makine öğreniminde verilerin nasıl bölüneceği öğretildi. Python’da, makine öğrenimi projelerinizde kullanabileceğiniz yerleşik bir veri bölme işlevi vardır. Oluşturulan fonksiyonu ihtiyaçlarınıza göre değiştirebilir ve ihtiyaçlarınıza uygun hale getirebilirsiniz. Daha fazla kodlama pratiği için aynı işlev Python’da Numpy kitaplığı ve List veri türü kullanılarak uygulanabilir .