PySpark ile Öneri Motorları Oluşturma
Jamen Long
Data Scientist at Nike
F. Maxwell Harper ve Joseph A. Konstan. 2015
The MovieLens Datasets: History and Context.
ACM Transitions on Interactive Intelligent Systems (TiiS) 5, 4, Makale 19 (Aralık 2015), 19 sayfa.
DOI=http://dx.doi.org/10.1145/2827872
F. Maxwell Harper ve Joseph A. Konstan. 2015
The MovieLens Datasets: History and Context.
ACM Transitions on Interactive Intelligent Systems (TiiS) 5, 4, Makale 19 (Aralık 2015), 19 sayfa.
DOI=http://dx.doi.org/10.1145/2827872
Puanlar: 20.000.000+
Kullanıcı: 138.493
Film: 27.278
df.show()
df.columns()

# Matristaki puan sayısı
numerator = ratings.count()
# Farklı kullanıcılar ve filmler
users = ratings.select("userId").distinct().count()
movies = ratings.select("movieId").distinct().count()
# Matristaki puan sayısı numerator = ratings.count() # Farklı kullanıcılar ve filmler users = ratings.select("userId").distinct().count() movies = ratings.select("movieId").distinct().count()# Boş hücre olmasaydı matrisin alabileceği puan sayısı denominator = users * movies
# Matristaki puan sayısı
numerator = ratings.count()
# Farklı kullanıcılar ve filmler
users = ratings.select("userId").distinct().count()
movies = ratings.select("movieId").distinct().count()
# Boş hücre olmasaydı matrisin alabileceği puan sayısı
denominator = users * movies
# Seyrekliği hesaplama
sparsity = 1 - (numerator*1.0 / denominator)
print ("Sparsity: "), sparsity
Sparsity: .998
ratings.select("userId").distinct().count()
671
# userId'e göre grupla
ratings.groupBy("userId")
# Kullanıcı başına şarkı çalma sayısı
ratings.groupBy("userId").count().show()
+------+-----+
|userId|count|
+------+-----+
| 148| 76|
| 243| 12|
| 31| 232|
| 137| 16|
| 251| 19|
| 85| 752|
| 65| 737|
| 255| 9|
| 53| 190|
| 133| 302|
| 296| 74|
| 78| 301|
| 108| 136|
| 155| 3|
| 193| 174|
| 101| 1|
+------+-----+
from pyspark.sql.functions import min, max, avg
# Kullanıcı başına minimum şarkı çalma sayısı
msd.groupBy("userId").count()
.select(min("count")).show()
+----------+
|min(count)|
+----------+
| 1|
+----------+
# Kullanıcı başına maksimum şarkı çalma sayısı
ratings.groupBy("userId").count()
.select(max("count")).show()
+----------+
|max(count)|
+----------+
| 1162|
+----------+
# Kullanıcı başına ortalama şarkı çalma sayısı
ratings.groupBy("userId").count()
.select(avg("count")).show()
+----------+
|avg(count)|
+----------+
| 233.34579|
+----------+
# 20'den az puanı olan kullanıcıları çıkarır
ratings.groupBy("userId").count().filter(col("count") >= 20).show()
+------+-----+
|userId|count|
+------+-----+
| 148| 76|
| 31| 232|
| 85| 752|
| 65| 737|
| 53| 190|
| 133| 302|
| 296| 74|
| 78| 301|
| 108| 136|
| 193| 174|
+------+-----+
PySpark ile Öneri Motorları Oluşturma