![](https://crypto4nerd.com/wp-content/uploads/2024/03/1VdXnjZmhdAq1LgKIsqsGHQ.png)
Basit Doğrusal Regresyon, bağımlı ve bağımsız değişken arasındaki ilişkiyi modellemek olduğunu söyleyebiliriz.
Problemimiz şu şekilde farklı medya kanallarına yapılan reklam harcamalarının (TV, radyo, gazete) ürün satışları üzerindeki etkisini göstermektedir. Buradaki ana amaç, hangi reklam türünün satışları ne kadar etki ettiğini anlamak ve reklam bütçesinin en etkili şekilde nasıl ayrılacağını belirlemektir.
İlk olarak “advertising.csv” dosyamızdan verilerimizi almamız gerekiyor.
TV,radio,newspaper,sales
230.1,37.8,69.2,22.1
44.5,39.3,45.1,10.4
17.2,45.9,69.3,9.3
151.5,41.3,58.5,18.5
180.8,10.8,58.4,12.9
8.7,48.9,75.0,7.2
57.5,32.8,23.5,11.8
120.2,19.6,11.6,13.2
8.6,2.1,1.0,4.8
199.8,2.6,21.2,10.6
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as snspd.set_option('display.float_format', lambda x: '%.2f' % x)
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, mean_absolute_error
from sklearn.model_selection import train_test_split, cross_val_score
İlk olarak csv dosyamızı pandas kütüphanesi kullanarak “df” adlı DataFrame’ e okuyoruz. Basit Doğrusal Regresyon’ u inceleyeceğimiz için ilk olarak ben TV değişkeni ve Sales arasındaki ilişkiyi incelemek istedim.
Bağımsız değişkenimiz “TV Independent Variable Bağımsız Değişken
Bağımlı değişkenimiz ise “Sales” olacak. Dependent Variable Bağımlı Değişken
B0 → sabit, bias
B1 ->katsayımız, eğim, ağırlık, coefficient
df = pd.read_csv("Dosyalar/advertising.csv")
df.shape # 200 satır ve 4 sütün olduğunu belirtir.X = df[["TV"]]
y = df[["sales"]]
Model Oluşturma
Model oluşturmadaki amacımız elimizdeki verilerle modele verilerimiz arasındaki ilişkiyi öğretmek ve bunun sonunda iyi bir tahmin yapabilmek.
reg_model = LinearRegression().fit(X, y)# y_i = b + w*TV
# sabit (b - bias) sabiti görebiliriz.
reg_model.intercept_[0]
# tv'nin katsayısı (w1) katsayıları görebiliriz.
reg_model.coef_[0][0]
Linear Regression() ile bir model oluşturulur. “.fit(X,y)” ile bu modele eğitilir. Yani TV verileriyle ve satış arasında bir ilişki kuran bir modelimiz olmuş olur. Modelimiz hazır artık elimize veriler gelirse tahminler elde edebiliriz. Bu işlem, en iyi regresyon çizgisini bulmak için kullanılan en küçük kareler yöntemini uygular.(En küçük kareler yöntemi bir optimizasyon yöntemidir sci-kit kütüphanesi bunu kullanır)
Tahmin
Katsayı ve sabit değerlerimizi bildiğimiz için artık tahmin yapabiliyoruz.Sabiti biliyoruz katsayımızı biliyoruz bundan sonrası sadece yerine koyup matematiksel işlemleri yerine getirmek.
##########################
# Tahmin
########################### 150 birimlik TV harcaması olsa ne kadar satış olması beklenir?
reg_model.intercept_[0] + reg_model.coef_[0][0]*150
# 500 birimlik tv harcaması olsa ne kadar satış olur?
reg_model.intercept_[0] + reg_model.coef_[0][0]*500
trans=df.describe().T
Modelin Görselleştirilmesi
# Modelin Görselleştirilmesi
g = sns.regplot(x=X, y=y, scatter_kws={'color': 'b', 's': 9},
ci=False, color="r")g.set_title(f"Model Denklemi: Sales = {round(reg_model.intercept_[0], 2)} + TV*{round(reg_model.coef_[0][0], 2)}")
g.set_ylabel("Satış Sayısı")
g.set_xlabel("TV Harcamaları")
plt.xlim(-10, 310)
plt.ylim(bottom=0)
plt.show()
Model Başarısı Değerlendirme
##########################
# Tahmin Başarısı
########################### MSE
y_pred = reg_model.predict(X)
mean_squared_error(y, y_pred)
# 10.51
y.mean() # ortalama
y.std() # standart sapma
# RMSE
np.sqrt(mean_squared_error(y, y_pred))
# 3.24
# MAE
mean_absolute_error(y, y_pred)
# 2.54
# R-KARE
reg_model.score(X, y)
y_pred= reg_model.predict(x) kodu X verilerimiz ve öğretmiş olduğumuz modeli kullanarak tahminler yap daha sonrasında ise başarı değerlendirme yöntemleri ile bunları değerlendir.
Daha önceki yazımda bahsettiğim model başarı değerlendirme yöntemlerini burada kullanmış olduk. Python’daki kütüphaneler bunlar için çok fazla çaba harcamamızı gerektirmiyor. Bir satır kod ile hepsini hesaplayabiliyoruz.
- MSE ve RMSE: 10.51 ve 3.24 değerleri, modelin hatalarının büyüklüğünü gösterir. Bu değerler, veri setinin özelliklerine ve diğer modellerle karşılaştırmalara bağlı olarak değerlendirilmelidir.
- MAE: 2.54, ortalama olarak her tahminin gerçek değerden ne kadar uzak olduğunu gösterir. Bu, modelin hatalarının mutlak ölçeğini anlamamıza yardımcı olur.
- R-Kare: Modelin, bağımlı değişkenin varyansını ne kadar iyi açıkladığını gösterir. Değer ne kadar yüksekse model o kadar iyi performans göstermiş demektir. Bu değer, modelin genel uyumunun bir göstergesidir.