Мой оригинальный Dataframe выглядит примерно так:
type username product count
0 access 45michael 63767 0
1 access 7762hc 84325 0
2 order angel8 86217 1
3 order kerrigan 76863 1
4 order 45michael 86833 1
После получения матрицы, связывающей продукты с пользователями со счетом в качестве значений (0, если пользователь купил продукт, 1, если нет), я выполнить косинусное подобие, получая что-то вроде этого:
username 45michael alicia7 kerrigan
username
45michael 1.000000 0.577350 0.408248
alicia7 0.577350 1.000000 0.000000
john5 0.816497 0.707107 0.000000
kerrigan 0.408248 0.000000 1.000000
И теперь я использую эту строку кода:
sorted_values = cosine_sim['45michael'].sort_values(ascending=False)[1:11]
Чтобы получить наиболее похожих пользователей к тому, кого я указывая:
username
john5 0.816497
alicia7 0.577350
kerrigan 0.408248
yvera 0.000000
uololo 0.000000
И теперь я хочу фильтр ряд sorted_values pandas, чтобы получить только пользователей, которые имеют ненулевое сходство и получить продукты, которые они купили у оригинального Dataframe, но я до сих пор так тяжело боролся с этой проблемой.
Желаемый результат будет выглядеть следующим образом:
john5 0.816497
alicia7 0.577350
kerrigan 0.408248
Или просто с указанием имен пользователей наиболее похожих пользователей:
john5, alicia7, kerrigan