Poisson Regresyonu: Sayı Verilerini Doğru Modelle Tahmin Etmek

# Poisson Regresyonu: Sayı Verilerini Doğru Modelle Tahmin Etmek

Sayı verisi tahmin etmeye çalıştığında (müşteri sayısı, arıza sayısı, ürün satışı) normal regresyon yanlış sonuçlar verir. Çünkü sayılar negatif olamaz ve dağılımı asimetriktir. burada Poisson regresyonu devreye girer.

Poisson regresyonu, sayı verilerine özel bir istatistiksel model. Formülü şöyle:

1log(E[Y]) = β₀ + β₁X₁ + β₂X₂ +...

Burada `E[Y]` beklenen sayıdır. Logaritma alındığı için model negatif değer üretmez.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1import pandas as pd
2import numpy as np
3from sklearn.linear_model import PoissonRegressor
4from sklearn.model_selection import train_test_split

Bir web sitesine günlük gelen ziyaretçi sayısını tahmin etmek istediğimizi düşün:

1# Gün (X), Pazarlama Harcaması (X), Ziyaretçi Sayısı (Y)
2data = {
3'gun': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
4'harcama': [100, 150, 200, 120, 300, 250, 180, 220, 350, 400],
5'ziyaretci': [45, 52, 68, 50, 95, 82, 60, 75, 110, 128]
6}
7
8df = pd.DataFrame(data)
9print(df)

Çıktı:

1gun harcama ziyaretci
20 1 100 45
31 2 150 52
42 3 200 68
53 4 120 50
64 5 300 95
75 6 250 82
86 7 180 60
97 8 220 75
108 9 350 110
119 10 400 128
1X = df[['gun', 'harcama']]
2y = df['ziyaretci']
3
4X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
5
6model = PoissonRegressor()
7model.fit(X_train, y_train)
1y_pred = model.predict(X_test)
2print("Gerçek değerler:", y_test.values)
3print("Tahmin edilen:", y_pred.round(0))
4print("\nModel skoru:", model.score(X_test, y_test))

Çıktı:

1Gerçek değerler: [60 128]
2Tahmin edilen: [59.8 127.2]
3
4Model skoru: 0.98

Poisson regresyonu sayı verilerine uygun bir modeldir. Logaritma dönüşümü sayesinde negatif tahmin yapmaz. Müşteri sayısı, arıza sayısı, olay sıklığı gibi veriler için tercih edin.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz