Değişkenleri dönüştürme

Python ile statsmodels kullanarak Regresyona Giriş

Maarten Van den Broeck

Content Developer at DataCamp

Levreği veri kümesi

perch = fish[fish["species"] == "Perch"]
print(perch.head())
   species  mass_g  length_cm
55   Perch     5.9        7.5
56   Perch    32.0       12.5
57   Perch    40.0       13.8
58   Perch    51.5       15.0
59   Perch    70.0       15.7

Avrupa levreği, _Perca fluviatilis_

Python ile statsmodels kullanarak Regresyona Giriş

Doğrusal bir ilişki değil

sns.regplot(x="length_cm",
            y="mass_g",
            data=perch,
            ci=None)

plt.show()

Uzunluklara karşı levrek kütlelerinin saçılım grafiği ve trend çizgisi. Levrekler uzadıkça doğrusal olmayan biçimde daha hızlı ağırlaşır; yukarı kıvrım oluşur.

Python ile statsmodels kullanarak Regresyona Giriş

Sazan vs. levrek

Sazan balığı (bream). Oldukça yassıdır.

Avrupa levreği. Levreğin gövdesi daha yuvarlaktır.

Python ile statsmodels kullanarak Regresyona Giriş

Kütle vs. uzunluk küpünün grafiği

perch["length_cm_cubed"] = perch["length_cm"] ** 3
sns.regplot(x="length_cm_cubed",
            y="mass_g",
            data=perch,
            ci=None)
plt.show()

Küpü alınmış uzunluklara karşı levrek kütlelerinin saçılım grafiği ve trend çizgisi. Bu dönüşümden sonra noktalar çoğunlukla trend çizgisine yakındır.

Python ile statsmodels kullanarak Regresyona Giriş

Kütle vs. uzunluk küpünü modelleme

perch["length_cm_cubed"] = perch["length_cm"] ** 3

mdl_perch = ols("mass_g ~ length_cm_cubed", data=perch).fit()
mdl_perch.params
Intercept         -0.117478
length_cm_cubed    0.016796
dtype: float64
Python ile statsmodels kullanarak Regresyona Giriş

Kütle vs. uzunluk küpünü tahmin etme

explanatory_data = pd.DataFrame({"length_cm_cubed": np.arange(10, 41, 5) ** 3,
                                 "length_cm": np.arange(10, 41, 5)})
prediction_data = explanatory_data.assign(
  mass_g=mdl_perch.predict(explanatory_data))
print(prediction_data)
   length_cm_cubed  length_cm       mass_g
0             1000         10    16.678135
1             3375         15    56.567717
2             8000         20   134.247429
3            15625         25   262.313982
4            27000         30   453.364084
5            42875         35   719.994447
6            64000         40  1074.801781
Python ile statsmodels kullanarak Regresyona Giriş

Kütle vs. uzunluk küpünün grafiği

fig = plt.figure()
sns.regplot(x="length_cm_cubed", y="mass_g",
            data=perch, ci=None)
sns.scatterplot(data=prediction_data,
                x="length_cm_cubed", y="mass_g",
                color="red", marker="s")

Küpü alınmış uzunluklara karşı levrek kütlelerinin trend çizgili saçılım grafiği; predict() ile hesaplanan noktalarla açıklamalı. Noktalar trend çizgisini tam izler.

fig = plt.figure()
sns.regplot(x="length_cm", y="mass_g",
            data=perch, ci=None)
sns.scatterplot(data=prediction_data,
                x="length_cm", y="mass_g",
                color="red", marker="s")

Uzunluklara karşı levrek kütlelerinin trend çizgili saçılım grafiği; predict() ile hesaplanan noktalarla açıklamalı. Noktalar trendi izlemez, ancak veri eğrisini izler.

Python ile statsmodels kullanarak Regresyona Giriş

Facebook reklam veri kümesi

Reklam nasıl işler

  1. Facebook’a reklam gösterimi için ödeme yapın.
  2. İnsanlar reklamları görür ("impressions").
  3. Görenlerin bir kısmı tıklar.

 

  • 936 satır
  • Her satır 1 ilanı temsil eder
spent_usd n_impressions n_clicks
1.43 7350 1
1.82 17861 2
1.25 4259 1
1.29 4133 1
4.77 15615 3
... ... ...
Python ile statsmodels kullanarak Regresyona Giriş

Grafik sıkışık

sns.regplot(x="spent_usd",
            y="n_impressions",
            data=ad_conversion,
            ci=None)

Gösterim sayısına karşı reklam harcaması saçılım grafiği ve trend çizgisi. Çoğu nokta grafiğin sol altına sıkışmış.

Python ile statsmodels kullanarak Regresyona Giriş

Karekök vs. karekök

ad_conversion["sqrt_spent_usd"] = np.sqrt(
  ad_conversion["spent_usd"])

ad_conversion["sqrt_n_impressions"] = np.sqrt(
  ad_conversion["n_impressions"])

sns.regplot(x="sqrt_spent_usd",
            y="sqrt_n_impressions",
            data=ad_conversion,
            ci=None)

Gösterim sayısının karekökü ile reklam harcamasının karekökü arasındaki saçılım grafiği ve trend çizgisi. Noktalar artık grafikte daha eşit dağılmıştır.

Python ile statsmodels kullanarak Regresyona Giriş

Modelleme ve tahmin

mdl_ad = ols("sqrt_n_impressions ~ sqrt_spent_usd", data=ad_conversion).fit()
explanatory_data = pd.DataFrame({"sqrt_spent_usd": np.sqrt(np.arange(0, 601, 100)),
                                 "spent_usd": np.arange(0, 601, 100)})
prediction_data = explanatory_data.assign(sqrt_n_impressions=mdl_ad.predict(explanatory_data),
                          n_impressions=mdl_ad.predict(explanatory_data) ** 2)
print(prediction_data)
   sqrt_spent_usd  spent_usd  sqrt_n_impressions  n_impressions
0        0.000000          0           15.319713   2.346936e+02
1       10.000000        100          597.736582   3.572890e+05
2       14.142136        200          838.981547   7.038900e+05
3       17.320508        300         1024.095320   1.048771e+06
4       20.000000        400         1180.153450   1.392762e+06
5       22.360680        500         1317.643422   1.736184e+06
6       24.494897        600         1441.943858   2.079202e+06
Python ile statsmodels kullanarak Regresyona Giriş

Haydi pratik yapalım!

Python ile statsmodels kullanarak Regresyona Giriş

Preparing Video For Download...