• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

Scikit-learn ile doğrusal regresyon nasıl kurulur?

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
Doğrusal regresyonu scikit-learn ile kurmak için veriyi özellikler ve hedef değişken olarak ayırıp LinearRegression modelini eğitmeniz, ardından test verisi üzerinde tahmin ve hata ölçümü yapmanız gerekir. Aşağıdaki örnekte, çalışma alanına göre ev fiyatı tahmin eden en küçük çalışır akış gösteriliyor. Çalıştırmanın sonunda modelin tahminlerini, katsayısını ve ortalama mutlak hatasını görebilirsiniz.

Gerekli yapı​

Doğrusal regresyon, hedef değeri bir veya daha fazla girdinin doğrusal birleşimiyle tahmin eder. Tek özellik için model kabaca y = a × x + b biçimindedir. Birden fazla özellik olduğunda her özellik için ayrı katsayı kullanılır.

Örnekte alan bağımsız değişken, fiyat ise modelin tahmin etmeye çalıştığı hedef değişkendir. X iki boyutlu, y ise tek boyutlu tutulur; scikit-learn modellerinin beklediği temel biçim budur.

Modeli kurma ve çalıştırma​

Ön koşul olarak Python ile birlikte scikit-learn ve pandas paketlerinin kurulu olması gerekir. Paketler kurulu değilse terminalde şu komutu çalıştırın:

Bash:
python -m pip install scikit-learn pandas

Ardından aşağıdaki kodu örneğin regresyon.py adıyla kaydedip çalıştırın:

Python:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, r2_score

# Varsayımsal örnek veri: alan metrekare, fiyat bin TL cinsindendir.
veri = pd.DataFrame({
    "alan": [50, 60, 75, 90, 110, 130, 150, 180],
    "fiyat": [1800, 2150, 2600, 3150, 3700, 4300, 5000, 5900]
})

# Özellikleri ve hedef değişkeni ayırın.
X = veri[["alan"]]
y = veri["fiyat"]

# Verinin bir bölümünü eğitim dışında bırakın.
X_egitim, X_test, y_egitim, y_test = train_test_split(
    X, y, test_size=0.25, random_state=42
)

# Modeli oluşturup eğitim verisiyle eğitin.
model = LinearRegression()
model.fit(X_egitim, y_egitim)

# Test verisi için tahmin üretin.
tahmin = model.predict(X_test)

# Modelin test performansını ölçün.
mae = mean_absolute_error(y_test, tahmin)
r2 = r2_score(y_test, tahmin)

print("Eğim katsayısı:", model.coef_[0])
print("Sabit terim:", model.intercept_)
print("Ortalama mutlak hata:", mae)
print("R² skoru:", r2)

# Yeni bir değer için tahmin yapın.
yeni_ev = pd.DataFrame({"alan": [100]})
yeni_tahmin = model.predict(yeni_ev)
print("100 metrekare için tahmin:", yeni_tahmin[0])

Adımların anlamı​

  1. Veriyi hazırlayın. X, modelin kullanacağı girdileri; y, tahmin edilecek sonucu içerir. Tek sütunlu X bile iki boyutlu veri çerçevesi olarak bırakılmalıdır.
  2. Veriyi ayırın. train_test_split eğitim ve test kümeleri oluşturur. random_state=42, aynı kodun tekrar çalıştırıldığında aynı bölmeyi kullanmasını sağlar; bu değer modelin doğruluğunu artırmaz.
  3. Modeli eğitin. LinearRegression() doğrusal regresyon modelini oluşturur. fit çağrısı, katsayıları yalnızca eğitim verisinden öğrenir.
  4. Tahmin üretin. predict, testteki veya yeni verideki girdiler için hedef değer tahminleri döndürür.
  5. Sonucu ölçün. mean_absolute_error, tahminlerin gerçek değerlerden ortalama ne kadar saptığını hedef değişkenin kendi biriminde gösterir. r2_score ise modelin test verisindeki değişimi ne ölçüde açıkladığını özetler.
  6. Yeni girdiyi aynı biçimde verin. Eğitimde kullanılan sütun adlarını ve veri biçimini koruyarak 100 metrekarelik ev için tahmin alın.

Çıktıyı nasıl yorumlamalısınız?​

model.coef_[0], alan bir birim arttığında tahminin katsayı kadar değiştiğini ifade eder. intercept_, tüm girdiler sıfır olduğunda modelin hesapladığı sabit terimdir; gerçek hayatta bu değer her zaman anlamlı bir başlangıç noktası olmayabilir.

Ortalama mutlak hata düşükse tahminler test verisindeki gerçek değerlere ortalama olarak daha yakındır. Ancak düşük hata, modelin yeni şehirlerde, farklı dönemlerde veya eğitim verisinin dışındaki fiyat aralıklarında kesin doğru sonuç vereceğini kanıtlamaz.

R² değeri test verisi üzerinde değerlendirilmelidir. Yüksek bir R², bu veri kümesindeki değişimin önemli bölümünün model tarafından açıklandığını gösterir; nedensellik, gelecekte garanti edilen başarı veya verinin hatasız olduğu anlamına gelmez. Eğitim ve test sonuçları arasında büyük fark varsa model veriyi ezberlemiş olabilir veya veri bölümü temsili olmayabilir.

Birden fazla özellik kullanma​

Modeli yalnızca alanla değil, oda sayısı ve bina yaşıyla da eğitmek için özellikleri aynı veri çerçevesine ekleyin:

Python:
# Önce varsayımsal veri çerçevesine iki örnek özellik ekleyin.
veri["oda_sayisi"] = [1, 1, 2, 2, 3, 3, 4, 4]
veri["bina_yasi"] = [30, 25, 20, 18, 15, 12, 8, 5]

X = veri[["alan", "oda_sayisi", "bina_yasi"]]
y = veri["fiyat"]

# Yeni X ile eğitim ve test kümelerini yeniden oluşturun.
X_egitim, X_test, y_egitim, y_test = train_test_split(
    X, y, test_size=0.25, random_state=42
)

model = LinearRegression()
model.fit(X_egitim, y_egitim)

# Tahmin verisinde aynı üç sütun bulunmalıdır.
yeni_ev = pd.DataFrame({
    "alan": [100],
    "oda_sayisi": [3],
    "bina_yasi": [10]
})

print(model.predict(yeni_ev))

Burada sütunların adları, sırası ve anlamı eğitim verisiyle tutarlı olmalıdır. Eksik değerler, aykırı kayıtlar veya kategorik metinler doğrudan bu modele verilmemelidir; bunları önce uygun biçimde temizlemek, dönüştürmek veya sayısal temsile çevirmek gerekir. İlişki doğrusal değilse ya da hata ölçümleri kabul edilemeyecek kadar yüksekse özellikleri inceleyin, veri kalitesini kontrol edin ve doğrusal olmayan modelleri değerlendirin.
 
Son düzenleme:

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Geri
Üst