Kodlar.tr için bir örnekle başlayacağız. Elimizde bir grup öğrencinin sınav öncesinde çalıştığı saatler ve aldıkları sınav notları var. Amacımız, yeni bir öğrencinin çalışma saatini bildiğimizde, bu öğrencinin sınav notunu tahmin edebilecek basit bir makine öğrenmesi modeli oluşturmak.
Veri:
Aşağıdaki gibi basit bir veri setimiz olduğunu varsayalım:
Kod:
Python
import numpy as np
# Çalışma saatleri (saat)
calisma_saatleri = np.array([2, 3, 5, 7, 8, 10])
# Sınav notları
sinav_notlari = np.array([60, 75, 82, 90, 93, 98])
Bu basit doğrusal ilişkiyi modellemek için doğrusal regresyon (Linear Regression) algoritmasını kullanabiliriz. Python'da bu algoritmayı uygulamak için
Kod:
scikit-learn
Kod:
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
# Doğrusal regresyon modelini oluştur
model = LinearRegression()
# Modeli verilere göre eğit
model.fit(calisma_saatleri.reshape(-1, 1), sinav_notlari)
# Yeni bir çalışma saati için not tahmini yap
yeni_calisma_saati = 6
tahmin_edilen_not = model.predict([[yeni_calisma_saati]])
print(f"{yeni_calisma_saati} saat çalışan bir öğrencinin tahmini notu: {tahmin_edilen_not[0]:.2f}")
# Veri noktalarını ve regresyon çizgisini görselleştir
plt.scatter(calisma_saatleri, sinav_notlari, color='blue', label='Gerçek Notlar')
plt.plot(calisma_saatleri, model.predict(calisma_saatleri.reshape(-1, 1)), color='red', label='Doğrusal Regresyon Çizgisi')
plt.scatter(yeni_calisma_saati, tahmin_edilen_not, color='green', marker='x', s=100, label='Tahmin Edilen Not')
plt.xlabel('Çalışma Saatleri')
plt.ylabel('Sınav Notları')
plt.title('Çalışma Saatleri ve Sınav Notları İlişkisi')
plt.legend()
plt.grid(True)
plt.show()
- Veri İçe Aktarma:
kütüphanesini kullanarak çalışma saatleri ve sınav notlarını içeren NumPy dizileri oluşturduk.Kod:numpy
- Model Oluşturma:
modülündenKod:sklearn.linear_model
sınıfını kullanarak bir doğrusal regresyon modeli nesnesi oluşturduk.Kod:LinearRegression
- Modeli Eğitme:
metodu ile modelimizi mevcut çalışma saatleri ve sınav notları verileriyle eğittik.Kod:fit()
ifadesi,Kod:reshape(-1, 1)
'ün beklentisi doğrultusunda tek özellikli (çalışma saatleri) veriyi iki boyutlu bir diziye dönüştürmek için kullanılır.Kod:scikit-learn
- Tahmin Yapma: Eğitilmiş modeli kullanarak yeni bir çalışma saati (örneğimizde 6 saat) için sınav notu tahmini yaptık.
metodu, girdi olarak iki boyutlu bir dizi beklediği içinKod:predict()
şeklinde bir girdi verdik.Kod:[[yeni_calisma_saati]]
- Görselleştirme:
kütüphanesi ile gerçek veri noktalarını, elde edilen doğrusal regresyon çizgisini ve tahmin edilen notu bir grafik üzerinde gösterdik. Bu, modelin veriye ne kadar iyi uyduğunu görsel olarak anlamamıza yardımcı olur.Kod:matplotlib.pyplot
Kod:
scikit-learn