Kullanıcı ve Zaman Bazlı Ağırlıklı Ortalama
Herkese merhaba,

Kullanıcı ve Zaman Bazlı Ağırlıklı Ortalama

Çeşitli kurslar ve puanlamaları
Herkese merhaba,
Medium’daki ilk yazımda bilgim dahilinde sizlere Veri Bilimi Okulu’ndaki bir projemizden bahsedeceğim. Müşterilerin veya kullanıcıların herhangi bir hizmet sonrasında değerlendirme yapmalarına hepimiz aşinayızdır, fakat bu puanlamalar nasıl mı yapılıyor gelin birlikte “course_reviews.csv” adlı veri setimizi inceleyip yorumlayalım sonrasında zaman bazlı ağırlıklı ortalamaya ve kullanıcı bazlı ağırlık ortalamaya bir göz atalım.

import işlemleri ve veri setini okuma
Burada veri setimizi okutmadan önce gerekli kütüphaneleri import işlerimizi yaptıktan sonra veriyi güzel bir şekilde bakmak için kodlarımızı yazıyoruz, şimdi ise df.head() kodunun çıktısına bir bakalım.

df.head() çıktısı
df.head() komutunu çalıştırdıktan sonra verimize ilk bakışımızı yapıyoruz ve sütunlardaki değişkenleri görüyoruz burada yapılan değerlendirmeleri , kursu bitirme tarih ve zamanları , kayıt oldukları günü, ilerlemeleri , sordukları soru sayılarını ve cevaplanan soru sayılarını görmekteyiz.

değerlendirilmelerin sayısı
df[“Rating”].value_counts() diyerek kaç tane kullanıcının hangi puanı verdiğini görmekteyiz. Örneğin 3267 kişi kursa 5 puan verirken 2 kullanıcımız ise 1.5 puan vermiştir.

Sorulan soru dağılımı
df’in içine sorulan soru değişkenini girip value_counts’ una baktığımız zaman ise kullanıcıların kaçtane soru sorduğunu görmüş oluruz, 3867 kullanıcı hiç soru sormamışken, 22 soru soran 1 kişi ve 15 soru soran 2 kişi olduğunu görmekteyiz.

Sorulan soru dağılımında verilen puanların ortalaması
Groupby’ın içine sorulan soru değişkenini girdikten sonra aggregation’ın içine sorulan soruların sayısını ve puanlamaların ortalamasını yazdığımızda yukarıdaki görseli elde ederiz. Örneğin hiç soru sormayan 3867 kişinin kursa vermiş yapmış olduğu değerlendirmelerin ortalaması 4.76519 iken 22 soru soran 1 kullanıcımız ise 5 puan vermiştir.

kursa verilen puanlamaların ortalaması
Şimdi ise Puan Zamanlarına Göre Ağırlıklı Ortalamayı ele alalım, burada kullanıcıların kursa vermiş olduğu güncel puanların değerini biraz arttırırken üstünden zaman geçmiş olan değerlendirmeleri ise biraz azaltacağız.

zaman bazlı ağırlıklı ortalama kodları
Burada ise verimizi timestamp değişkenine indirgiyoruz ve bugünün zamanını current_date diyerek belirliyoruz, sonrasında bugünün tarihinden kullanıcıların değerlendirme yaptıkları günü çıkartarak, kaç gün önce değerlendirme yaptıklarına ulaşıyoruz. 30 gün önce değerlendirme yapan kullanıcıların ortalama değerlendirmeleri 28, 30–90 gün arasını 26, 90–180 gün arasını 24, 180+ günlük puanlamaları ise 22 ile çarparak, güncel yorumların önemini biraz daha arttırıyoruz.

kodumuzun çıktısı
Çıktımız bize Puan “Zamanlarına Göre Ağırlıklı Ortalamayı” göstermektedir. Sizde gün sayılarını istediğiniz zamana göre ayarlayabilir ve katsayılarda değişiklikler yapabilirsiniz.

Kullanıcı bazlı ağırlık ortalama
Benzer işlemi bu sefer fonksiyon yazarak yapalım, dataframe’i progress değişkenine göre indirgedikten sonra kullanıcıların kurslardaki ilerlemelerine göre vermiş olduğu puanların ortalamalarına göre katsayılar giriyoruz. %10 ve aşağıda olan ilerlemelerin oranını 22, 10–45 aralığını 24, 45–75 aralığını 26 ve 75 ten fazla ilerlemiş kullanıcıların vermiş olduğu puanların ortalama değerlerini 28 diyerek arttırmış oluyoruz.

kullanıcı bazlı ağırlıklı ortalama puanı
tanımladığımız fonksiyonu çağırarak kullanıcıların kurstaki ilerlemelerine değiştirdiğimiz yeni ortalamayı görmekteyiz.

Kursun Ağırlıklı Ortalaması
course_weighted_rating adında yeni bir fonksiyon oluşturarak zaman bazlı ortalama ile kullanıcı bazlı ortalamayı eşit oranda birleştirerek kursun puanını görmüş olacağız.

Kursun ağırlıklı ortalaması
Evet bu çıktı ise bize yarı kullanıcı bazlı yarı zaman bazlı ortalamayı göstermektedir. Yukarıdaki fonksiyonun içindeki time_w ve user_w değerlerini istediğiniz gibi değiştirebilir ve kendi ortalamanızı yakalayabilirsiniz.
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Okuduğunuz için teşekkür ederim, umarım beğenmişsinizdir :)
KAYNAKÇA
I ❤ VBO
메타데이터
- post_id
- a7c34dfd4396
- slug
- kullanıcı-ve-zaman-bazlı-ağırlıklı-ortalama-a7c34dfd4396
- url
- https://medium.com/@boranarikann/kullan%C4%B1c%C4%B1-ve-zaman-bazl%C4%B1-a%C4%9F%C4%B1rl%C4%B1kl%C4%B1-ortalama-a7c34dfd4396
- canonical_url
- https://medium.com/@boranarikann/kullan%C4%B1c%C4%B1-ve-zaman-bazl%C4%B1-a%C4%9F%C4%B1rl%C4%B1kl%C4%B1-ortalama-a7c34dfd4396
- author_url
- https://medium.com/@boranarikann
- status
- ok
- fetched_at
- 2026-07-27 16:27:02