MNIST Dataset’i Python ile İndirme Yöntemleri

MNIST Nedir?

MNIST (Modified National Institute of Standards and Technology) dataset, el yazısı rakamları içeren ve makine öğrenimi ile veri bilimi alanında yaygın olarak kullanılan bir örnek veri kümesidir. Bu veri seti, 0’dan 9’a kadar olan rakamların el yazısı ile yazılmış görüntülerini içerir. Toplamda 70,000 görüntü barındıran MNIST, 60,000 eğitim verisi ve 10,000 test verisi ile birlikte gelir. Bu veri setinin popülaritesi, yeni başlayanlardan uzmanlara kadar geniş bir yelpazedeki araştırmacıların ve geliştiricilerin, makine öğrenimi algoritmalarını denemek ve geliştirmek için bu veri kümesini kullanmalarıyla ilişkilidir.

MNIST, özellikle derin öğrenme alanında, model performansını test etmek ve doğrulamak için harika bir başlangıç noktası sunar. Görüntü sınıflandırma gibi görevlerde kullanılan algoritmalar, bu dataset üzerinden eğitim alarak doğruluk oranlarını artırmak için geri bildirim sağlanabilir. Bu nedenle, MNIST datasetini indirmek ve kullanmak, bir makine öğrenimi projesinin ilk adımlarından biridir.

Bununla birlikte, MNIST datasetinin Python ile nasıl indirileceğini anlamak ve sürecin adımlarını öğrenmek, bu yazının ana amacını oluşturur. Bu rehberde, farklı yöntemlerle MNIST datasetini indirmenin yollarını detaylandıracağız ve kod örnekleriyle açıklayacağız.

MNIST Datasetini Python ile İndirme Yöntemleri

Python’da MNIST datasetini indirmenin birkaç farklı yolu vardır. Bu yöntemler arasında popüler kütüphaneler kullanarak veri setini kolayca indirmek de vardır. Bunlardan biri, TensorFlow veya Keras gibi makine öğrenimi kütüphaneleridir. Bu kütüphaneler, kullanıcılara MNIST datasetine doğrudan erişim sağlar ve veri setini indirmek için basit komutlar kullanmak mümkündür. Diğer bir yöntem de, doğrudan veri setini internetten indirmektir.

Aşağıda, en yaygın kullanılan iki yöntemi ele alacağız: TensorFlow kullanarak indirmek ve doğrudan bağlantıdan indirmek.

1. TensorFlow ile MNIST İndirmek

TensorFlow, Google tarafından geliştirilen açık kaynaklı bir makine öğrenimi ve derin öğrenme kütüphanesidir. TensorFlow ile MNIST datasetini indirmek oldukça kolaydır. Aşağıda adım adım bir rehber bulabilirsiniz:

import tensorflow as tf

# MNIST veri kümesini indir
mnist = tf.keras.datasets.mnist.load_data()

Yukarıdaki kod parçasında, TensorFlow’un Keras modülünü kullanarak MNIST datasetini indiriyoruz. load_data() fonksiyonu, veriyi indirir ve eğitim ve test setlerine ayırır. İndirme işlemi tamamlandığında, eğitim verisi ve test verisi iki ayrı değişkene atanır.

İndirdikten sonra veriler şu şekilde erişilebilir:

(x_train, y_train), (x_test, y_test) = mnist
# Eğitim ve test verileri üzerinde işlem yapabilirsiniz.

Burada, x_train ve x_test değişkenleri görüntü verilerini, y_train ve y_test ise bu görüntülerin etiketlerini içermektedir. Görüyorsunuz ki kullanıcı için oldukça basit bir işlem haline gelmiştir.

2. Doğrudan Bağlantıdan İndirme

MNIST datasetini doğrudan internetten indirmek de mümkündür. Bu yöntem, daha fazla kontrol sağlasa da, biraz daha karmaşık olabilir. Aşağıda, bu yöntemi nasıl gerçekleştirebileceğinizi görebilirsiniz:

import requests
import os

url = 'http://yann.lecun.com/exdb/mnist/'
file_names = ['train-images-idx3-ubyte.gz', 'train-labels-idx1-ubyte.gz', 't10k-images-idx3-ubyte.gz', 't10k-labels-idx1-ubyte.gz']

for file_name in file_names:
    response = requests.get(url + file_name)
    with open(file_name, 'wb') as f:
        f.write(response.content)

Bu kod parçacığında, Python’un requests kütüphanesini kullanarak MNIST datasetinin dosyalarını indiriyoruz. İlk olarak, MNIST’in ana URL’sini tanımlıyoruz ve ardından indirmek istediğimiz dosyaların adlarını bir listeye ekliyoruz. Sonra, döngü kullanarak her dosyayı indiriyor ve yerel bir dosyaya kaydediyoruz.

Veri Kümesini Kullanma

MNIST datasetini indirdikten sonra, onu uygulamalarımızda kullanmak oldukça kolaydır. Genellikle, bu veriler makine öğrenimi modellerini eğitmek için kullanılır. Aşağıda, indirdiğimiz verileri nasıl yükleyeceğimiz ve basit bir modelin nasıl eğitileceğine dair bir örnek veriyoruz:

import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.utils import to_categorical

# Veriyi yükleme
(x_train, y_train), (x_test, y_test) = mnist

# Verileri normalize etme
x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255

# Etiketleri kategorilere ayırma
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

# Basit bir model tanımlama
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten

model = Sequential()
model.add(Flatten(input_shape=(28, 28)))
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))

# Modeli derleme
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

# Modeli eğitme
model.fit(x_train, y_train, epochs=10, batch_size=32, validation_data=(x_test, y_test))

Yukarıdaki kod parçacığında, MNIST datasetini indirdikten sonra basit bir yapay sinir ağı modeli tanımlıyoruz. Modelde, ilk katman olarak Flatten katmanını kullanarak her 28×28’lik görüntüyü düzleştiriyoruz. Ardından bir Dense katmanı ekleyerek bunu takip ediyoruz. Son katmanda, 10 sınıf için softmax aktivasyon fonksiyonu ile çıkış alıyoruz.

Modelin Test Edilmesi

Modelin eğitim sürecinden sonra, performansını test etmek için test veri setini kullanabiliriz. Eğitim sonuçları genellikle modele ne kadar iyi öğrenip öğrenmediğini gösterir. Aşağıda, modelin test verisindeki doğruluğunu nasıl kontrol edeceğimizi görebilirsiniz:

test_loss, test_accuracy = model.evaluate(x_test, y_test)
print('Test doğruluğu:', test_accuracy)

Test setine ilişkin kayıp ve doğruluğu hesaplayarak modelimizin ne kadar başarılı olduğunu görebiliriz. Yüksek bir doğruluk oranı, modelimizin bu veri kümesi ile iyi bir şekilde eğitildiğini gösterir.

Sıkça Sorulan Sorular

MNIST datasetini indirirken ve kullanırken karşılaşabileceğiniz bazı yaygın soruları burada ele alacağız:

1. MNIST datasetine alternatif datasetler var mı?

Evet, el yazısı rakamları için farklı veri setleri bulunmaktadır. Örneğin, Fashion MNIST, giyisilerle ilgili benzer bir veri setidir ve benzer özelliklere sahiptir. Bunun yanı sıra, kendi el yazısı rakamlarınızı içeren özel veri setleri oluşturabilirsiniz.

2. MNIST datasetinin içindeki görüntüler nasıl işlenebilir?

MNIST datasetindeki görüntüler genellikle 28×28 piksel boyutlarında gri tonlamalıdır. İşlem yaparken, görüntüleri makine öğrenimi algoritmalarını beslemeden önce normalleştirmek önemlidir. Bunun için her pikselin değerini 255’e bölerek değerleri 0 ile 1 arasında bir aralığa indirgemek en yaygın yaklaşımdır.

3. Hangi modeller MNIST datasetinde daha başarılı sonuçlar verir?

MNIST üzerinde genellikle, Dört Katmanlı Yer Paylaşımı (Convolutional Neural Networks – CNN) tabanlı modeller, geleneksel yapay sinir ağlarına göre daha başarılıdır. Bu, görüntü tabanlı verilerin daha iyi anlaşılmasına yardımcı olur ve görüntü sınıflandırma problemlerinde etkili bir yoldur.

Sonuç

MNIST datasetini Python ile indirmek ve kullanmak, makine öğrenimine giriş yapmak için oldukça değerli bir adımdır. Bu yazıda, MNIST datasetinin ne olduğunu, nasıl indirileceğini ve basit bir modelin nasıl oluşturulacağını ele aldık. Python’daki popüler kütüphaneler sayesinde, bu işlemleri gerçekleştirmek oldukça kolaydır.

Kendi projeleriniz için bu veri kümesini deneyebilir ve makine öğrenimi alanında yeteneklerinizi geliştirmek için çalışmalara başlayabilirsiniz. Unutmayın, verilerin kaliteli ve doğru bir şekilde kullanımı, sonuçların başarısını büyük ölçüde etkileyebilir.

Umarım bu rehber, MNIST datasetine nasıl erişip kullanacağınız konusunda size yardımcı olmuştur. Yukarıda bahsedilen yöntemlerle verilerinizi indirip, analizlerinizi yapmanız için gerekli bilgiye sahip oldunuz. Şimdi, kendi projelerinizi geliştirerek bu bilgileri uygulamaya geçirme zamanı!

Scroll to Top