Ana Sayfa Teknoloji ve Yazılım Makine öğrenimi (ML) ile basit projeler

Makine öğrenimi (ML) ile basit projeler

5
0

Makine Öğrenimi (ML) ile Basit Projeler: Uygulama Odaklı Bir Rehber

Giriş

Makine öğrenimi (ML), günümüz teknolojisinin en hızlı gelişen ve dönüştürücü alanlarından biridir. Veriden öğrenme, tahminleme ve karar verme yetenekleri sayesinde, sağlık, finans, üretim, pazarlama gibi pek çok sektörde devrim yaratmaktadır. Ancak, ML’nin karmaşıklığı ve derinliği, özellikle yeni başlayanlar için göz korkutucu olabilir. Bu makale, makine öğrenimine adım atmak isteyenler için basit, uygulanabilir ve pratik projeler sunarak bu zorluğu aşmayı amaçlamaktadır. Hedefimiz, teorik bilgiyi somut uygulamalarla birleştirerek, ML temellerini sağlamlaştırmak ve kendi projelerinizi geliştirmeye başlamanızı sağlamaktır.

Bu rehberde, Python programlama dili ve popüler ML kütüphaneleri (Scikit-learn, Pandas, NumPy) kullanılarak gerçekleştirilebilecek basit projeleri adım adım ele alacağız. Her proje, temel ML kavramlarını anlamanıza ve uygulamanıza yardımcı olacak şekilde tasarlanmıştır. Ayrıca, karşılaşılabilecek sorunları gidermek ve daha derinlemesine öğrenmek için ipuçları ve kaynaklar sunacağız.

1. Makine Öğrenimine Giriş ve Temel Kavramlar

Makine öğrenimi, bilgisayarların açıkça programlanmadan deneyimlerinden öğrenmelerini sağlayan bir alandır. Temel prensibi, verilerden kalıpları ve ilişkileri otomatik olarak çıkarmak ve bu bilgiyi yeni verileri tahmin etmek veya sınıflandırmak için kullanmaktır.

  • Veri: ML’nin temel taşıdır. Veri, sayılar, metinler, resimler, sesler veya videolar gibi çeşitli formatlarda olabilir. Verinin kalitesi ve miktarı, ML modelinin başarısını doğrudan etkiler.
  • Özellik (Feature): Verinin her bir sütunu veya özelliğidir. Örneğin, bir evin özellikleri arasında boyutu, oda sayısı, konumu ve yaşı yer alabilir.
  • Model: Veriden öğrenilen kalıpları temsil eden matematiksel bir yapıdır. Model, yeni verileri tahmin etmek veya sınıflandırmak için kullanılır.
  • Eğitim (Training): Modelin veri üzerinde öğrenme sürecidir. Eğitim sırasında model, verideki kalıpları ve ilişkileri optimize etmeye çalışır.
  • Test (Testing): Modelin eğitildikten sonra yeni veriler üzerinde ne kadar iyi performans gösterdiğini değerlendirme sürecidir.
  • Doğruluk (Accuracy): Modelin tahminlerinin ne kadar doğru olduğunu ölçen bir metrik.
  • Hata (Error): Modelin tahminlerinin ne kadar yanlış olduğunu ölçen bir metrik.

ML Algoritmaları:

ML algoritmaları, farklı türde problemleri çözmek için kullanılan farklı yöntemlerdir. En yaygın ML algoritmaları şunlardır:

  • Denetimli Öğrenme (Supervised Learning): Modelin, giriş verisi ve karşılık gelen çıktı etiketi ile eğitildiği bir öğrenme türüdür.

    • Sınıflandırma (Classification): Giriş verisini belirli kategorilere ayırmak için kullanılır. Örneğin, bir e-postanın spam olup olmadığını belirlemek.
    • Regresyon (Regression): Giriş verisine dayanarak bir sürekli değeri tahmin etmek için kullanılır. Örneğin, bir evin fiyatını tahmin etmek.
  • Denetimsiz Öğrenme (Unsupervised Learning): Modelin, etiketlenmemiş veri üzerinde öğrenme gerçekleştirdiği bir öğrenme türüdür.

    • Kümeleme (Clustering): Veriyi benzer özelliklere sahip gruplara ayırmak için kullanılır. Örneğin, müşteri segmentasyonu.
    • Boyut İndirgeme (Dimensionality Reduction): Verideki özellik sayısını azaltmak için kullanılır. Örneğin, veri görselleştirmesini kolaylaştırmak.
  • Pekiştirmeli Öğrenme (Reinforcement Learning): Bir ajanın, bir ortamda hareket ederek ve ödüller alarak öğrenme gerçekleştirdiği bir öğrenme türüdür. Örneğin, bir oyun oynayan bir bilgisayar.

2. Gerekli Araçlar ve Kurulum

ML projelerine başlamak için aşağıdaki araçlara ihtiyacınız olacaktır:

  • Python: ML için en popüler programlama dilidir.
  • Paket Yöneticisi (pip): Python paketlerini kurmak ve yönetmek için kullanılır.
  • Geliştirme Ortamı (IDE): Kodu yazmak ve çalıştırmak için kullanılır. Önerilen IDE’ler:

    • Visual Studio Code (VS Code): Ücretsiz, açık kaynaklı ve çok yönlü bir IDE’dir.
    • Jupyter Notebook: Veri analizi ve ML projeleri için ideal, etkileşimli bir ortamdır.
    • PyCharm: Özellikle Python geliştirme için tasarlanmış, ücretli bir IDE’dir.
  • ML Kütüphaneleri:

    • NumPy: Sayısal hesaplamalar için kullanılır.
    • Pandas: Veri analizi ve manipülasyonu için kullanılır.
    • Scikit-learn: ML algoritmaları, model seçimi ve değerlendirme araçları içerir.
    • Matplotlib ve Seaborn: Veri görselleştirme için kullanılır.

Kurulum Adımları:

  1. Python’ı indirin ve kurun. Kurulum sırasında "Add Python to PATH" seçeneğini işaretleyin.
  2. Komut istemini (Windows) veya terminali (macOS/Linux) açın.
  3. Aşağıdaki komutları kullanarak gerekli kütüphaneleri kurun:

    bash
    pip install numpy pandas scikit-learn matplotlib seaborn

  4. İstediğiniz IDE’yi indirin ve kurun.
  5. IDE’nizi açın ve Python yorumlayıcısını ayarlayın.

3. Basit ML Projeleri ve Uygulama Örnekleri

Aşağıda, yeni başlayanlar için uygun olan ve farklı ML kavramlarını uygulamaya yönelik basit projeler sunulmaktadır. Her proje, adım adım açıklanacak ve örnek kodlar ile desteklenecektir.

3.1. Iris Veri Seti ile Sınıflandırma:

  • Amaç: Iris veri setini kullanarak farklı türdeki iris çiçeklerini (setosa, versicolor, virginica) sınıflandırmak.
  • Kullanılan Algoritma: K-En Yakın Komşular (K-Nearest Neighbors – KNN)
  • Veri Seti: Scikit-learn kütüphanesinde yerleşik olarak bulunan Iris veri seti.
  • Adımlar:

    1. Veri Yükleme ve İnceleme:

      python
      from sklearn.datasets import load_iris
      import pandas as pd

      iris = load_iris()
      data = pd.DataFrame(data=iris[‘data’], columns=iris[‘feature_names’])
      data[‘target’] = iris[‘target’]
      data[‘target_names’] = data[‘target’].map({0: ‘setosa’, 1: ‘versicolor’, 2: ‘virginica’})

      print(data.head())

    2. Veriyi Eğitim ve Test Setlerine Ayırma:

      python
      from sklearn.model_selection import train_test_split

      X = data[iris[‘feature_names’]]
      y = data[‘target’]

      X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # %30 test verisi

    3. KNN Modelini Eğitme:

      python
      from sklearn.neighbors import KNeighborsClassifier

      knn = KNeighborsClassifier(n_neighbors=3) # K değeri 3 olarak seçildi
      knn.fit(X_train, y_train)

    4. Modeli Test Etme ve Doğruluğu Değerlendirme:

      python
      from sklearn.metrics import accuracy_score

      y_pred = knn.predict(X_test)
      accuracy = accuracy_score(y_test, y_pred)

      print(f"Doğruluk: {accuracy}")

    5. Yeni Veri Üzerinde Tahmin Yapma:
      python

      new_flower = [[5.1, 3.5, 1.4, 0.2]]
      prediction = knn.predict(new_flower)
      print(f"Yeni çiçeğin türü: {iris[‘target_names’][prediction][0]}")

3.2. Ev Fiyatı Tahmini (Regresyon):

  • Amaç: Evlerin özelliklerine (boyut, oda sayısı, konum vb.) dayanarak fiyatlarını tahmin etmek.
  • Kullanılan Algoritma: Doğrusal Regresyon (Linear Regression)
  • Veri Seti: Kamuya açık bir veri seti (örneğin, Boston Housing Dataset veya benzeri bir veri seti). Scikit-learn’de bulunan Boston Housing dataset kullanılabilir ancak etik olmadığına dair uyarılar bulunmaktadır. Bu nedenle daha modern bir veri seti kullanılması önerilir. Alternatif olarak Kaggle’dan bir ev fiyatı veri seti indirilebilir.
  • Adımlar:

    1. Veri Yükleme ve İnceleme: (Örnek bir veri setine göre)

      python
      import pandas as pd
      from sklearn.model_selection import train_test_split
      from sklearn.linear_model import LinearRegression
      from sklearn.metrics import mean_squared_error

      data = pd.read_csv(‘house_prices.csv’) # Kaggle’dan indirilen bir veri seti
      print(data.head())

      data = data.fillna(data.mean())

      data = pd.get_dummies(data, columns=[‘Neighborhood’]) # Semt bilgisini sayısal veriye dönüştürme

    2. Veriyi Eğitim ve Test Setlerine Ayırma:

      python

      X = data.drop(‘SalePrice’, axis=1) # Fiyat dışındaki tüm sütunlar
      y = data[‘SalePrice’]

      X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # %20 test verisi

    3. Doğrusal Regresyon Modelini Eğitme:

      python

      model = LinearRegression()

      model.fit(X_train, y_train)

    4. Modeli Test Etme ve Hata Payını Değerlendirme:

      python

      y_pred = model.predict(X_test)

      mse = mean_squared_error(y_test, y_pred)
      print(f"Ortalama Karesel Hata (MSE): {mse}")

    5. Yeni Veri Üzerinde Tahmin Yapma:
      python

      new_house = pd.DataFrame({
      ‘LotArea’: [8000],
      ‘OverallQual’: [7],
      ‘OverallCond’: [5],
      ‘YearBuilt’: [2005],
      ‘TotalBsmtSF’: [1000],
      ‘1stFlrSF’: [1000],
      ‘2ndFlrSF’: [500],
      ‘GrLivArea’: [1500],
      ‘BsmtFullBath’: [1],
      ‘HalfBath’: [1],
      ‘BedroomAbvGr’: [3],
      ‘TotRmsAbvGrd’: [7],
      ‘Fireplaces’: [1],
      ‘GarageCars’: [2],
      ‘GarageArea’: [500],
      ‘Neighborhood_NAmes’: [0], # Eğer ‘NAmes’ semti için
      ‘Neighborhood_CollgCr’: [1] # Eğer ‘CollgCr’ semti için (diğer semtler 0 olmalı)
      })

      predicted_price = model.predict(new_house)
      print(f"Tahmini ev fiyatı: {predicted_price[0]}")

3.3. Spam Filtreleme (Doğal Dil İşleme – NLP):

  • Amaç: E-postaları spam veya spam değil olarak sınıflandırmak.
  • Kullanılan Algoritma: Naive Bayes Sınıflandırıcısı
  • Veri Seti: Kamuya açık bir spam e-posta veri seti (örneğin, UCI Machine Learning Repository’den).
  • Adımlar:

    1. Veri Yükleme ve İnceleme:

      python
      import pandas as pd
      from sklearn.model_selection import train_test_split
      from sklearn.feature_extraction.text import TfidfVectorizer
      from sklearn.naive_bayes import MultinomialNB
      from sklearn.metrics import accuracy_score, classification_report

      data = pd.read_csv(‘spam.csv’, encoding=’latin1′) # Veri setine göre encoding değişebilir
      data = data.drop([‘Unnamed: 2’, ‘Unnamed: 3’, ‘Unnamed: 4’], axis=1) # Gereksiz sütunları silme
      data = data.rename(columns={‘v1’: ‘label’, ‘v2’: ‘text’}) # Sütun isimlerini değiştirme
      print(data.head())

    2. Veriyi Hazırlama (Metin İşleme):

      python

      data[‘label’] = data[‘label’].map({‘ham’: 0, ‘spam’: 1})

      vectorizer = TfidfVectorizer()
      X = vectorizer.fit_transform(data[‘text’])
      y = data[‘label’]

    3. Veriyi Eğitim ve Test Setlerine Ayırma:

      python

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

    4. Naive Bayes Modelini Eğitme:

      python

      model = MultinomialNB()
      model.fit(X_train, y_train)

    5. Modeli Test Etme ve Performansı Değerlendirme:

      python

      y_pred = model.predict(X_test)

      accuracy = accuracy_score(y_test, y_pred)
      print(f"Doğruluk: {accuracy}")

      print(classification_report(y_test, y_pred))

    6. Yeni Veri Üzerinde Tahmin Yapma:
      python

      new_email = ["Congratulations! You have won a prize. Click here to claim it."]

      new_email_vectorized = vectorizer.transform(new_email)

      prediction = model.predict(new_email_vectorized)
      print(f"Bu e-posta: {‘spam’ if prediction[0] == 1 else ‘spam değil’}")

4. Daha Derinlemesine Öğrenme ve Kaynaklar

Bu projeler, ML’nin temellerini anlamanıza ve uygulamanıza yardımcı olacak bir başlangıç noktasıdır. Daha derinlemesine öğrenmek için aşağıdaki kaynakları kullanabilirsiniz:

  • Online Kurslar:

    • Coursera (Andrew Ng’nin Makine Öğrenimi kursu)
    • edX
    • Udacity
    • DataCamp
  • Kitaplar:

    • "Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow" – Aurélien Géron
    • "Python Data Science Handbook" – Jake VanderPlas
    • "The Elements of Statistical Learning" – Hastie, Tibshirani, Friedman
  • Kaggle: ML yarışmalarına katılabilir, veri setlerini inceleyebilir ve diğer insanların çözümlerini görebilirsiniz.
  • Scikit-learn Dokümantasyonu: Scikit-learn kütüphanesinin resmi dokümantasyonu, algoritmalar ve fonksiyonlar hakkında detaylı bilgi içerir.

5. Sıkça Sorulan Sorular (SSS)

  • Soru: Makine öğrenimine başlamak için hangi programlama dilini öğrenmeliyim?

    • Cevap: Python, ML için en popüler ve yaygın olarak kullanılan programlama dilidir. Geniş kütüphane desteği ve kolay okunabilir sözdizimi sayesinde yeni başlayanlar için idealdir.
  • Soru: Hangi ML kütüphanelerini öğrenmeliyim?

    • Cevap: NumPy, Pandas, Scikit-learn, Matplotlib ve Seaborn, temel ML projeleri için gerekli olan temel kütüphanelerdir.
  • Soru: ML projeleri için nereden veri seti bulabilirim?

    • Cevap: Kaggle, UCI Machine Learning Repository, Google Dataset Search gibi kaynaklardan kamuya açık veri setlerine ulaşabilirsiniz.
  • Soru: Bir ML projesi geliştirirken hangi adımları izlemeliyim?

    • Cevap: Veri toplama ve hazırlama, model seçimi ve eğitimi, modelin değerlendirilmesi ve optimize edilmesi, modelin dağıtımı ve izlenmesi adımlarını izlemelisiniz.
  • Soru: Modelin doğruluğu düşükse ne yapmalıyım?

    • Cevap: Veri setini daha iyi inceleyebilir, farklı özellikler ekleyebilir, farklı bir algoritma deneyebilir, hiperparametreleri ayarlayabilir veya daha fazla veri toplayabilirsiniz.
  • Soru: Bir proje için hangi algoritmayı seçeceğimi nasıl bilebilirim?

    • Cevap: Problemin türüne (sınıflandırma, regresyon, kümeleme vb.), verinin özelliklerine ve performans gereksinimlerine göre farklı algoritmalar deneyebilirsiniz. Kaggle gibi platformlarda benzer problemleri çözen diğer kişilerin yaklaşımlarını inceleyebilirsiniz.
  • Soru: Makine öğrenmesi sadece büyük şirketler için mi?

    • Cevap: Hayır, makine öğrenmesi küçük işletmelerden büyük şirketlere kadar her ölçekteki işletme için değerlidir. Veriden elde edilen bilgilerle iş süreçlerini iyileştirmek, maliyetleri azaltmak ve müşteri deneyimini geliştirmek mümkündür.

Sonuç

Bu makalede, makine öğrenimine adım atmak isteyenler için basit ve uygulanabilir projeler sunarak bir rehber oluşturduk. Her bir proje, temel ML kavramlarını anlamanıza ve uygulamanıza yardımcı olacak şekilde tasarlanmıştır. Unutmayın ki, ML öğrenmek sürekli bir süreçtir ve pratik yaparak, deneyerek ve yeni şeyler öğrenerek kendinizi geliştirebilirsiniz. Başarılar dileriz!

⚠️ Yasal Uyarı: Bu sayfa yalnızca bilgilendirme amacıyla hazırlanmıştır ve hukuki, finansal, tıbbi veya profesyonel tavsiye niteliği taşımaz.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz