首先我使用pandas制作一个userid movieiD表 代码在
之下import pandas as pd
movie = pd.read_csv('ActionsOnly.csv')
movie_pivot = movie.pivot_table(index='userId', columns='movieId', values='rating', fill_value=0.0)
movie_pivot.to_csv('ActionsOnly1.csv')
现在我有一个用户电影表并存储在csv。
现在我正在尝试拍摄电影电影的相似度值 因为我正在使用代码
import math
def cosine_similarity(v1,v2):
"compute cosine similarity of v1 to v2: (v1 dot v2)/{||v1||*||v2||)"
sumxx, sumxy, sumyy = 0, 0, 0
for i in range(len(v1)):
x = v1[i]; y = v2[i]
sumxx += x*x
sumyy += y*y
sumxy += x*y
return sumxy/(math.sqrt(sumxx)*math.sqrt(sumyy))
def get_values():
itemList = []
maxLengthList= input("Enter the number of items:\n")
while len(itemList) < int(maxLengthList):
item = input("Enter your Item to the List: ")
itemList.append(float(item))
return itemList
def c_main():
print("\nEnter the values for the first user \n")
user1 = get_values()
print("\nEnter the values for the second user \n")
user2 = get_values()
print("\nThe cosine similarity value is", round(cosine_similarity(user1,user2),3))
找到电影的相似度并存储在电影电影栏目中 即。
movieid1 movieid2 movieid3
movieid1 1 0.45 0.56
movieid2 0.45 1
movieid3 0.56 1
我想从ActionsOnly.csv中提取包含userid和movieId表的值,并将值放在上面的余弦相似度中,结果将存储在上面的电影电影列表中..整个值将被放置只有...... 所以,我面临错误,我不知道 用于制作movie-movie.csv表我正在使用以下代码
将pandas导入为pd
movie = pd.read_csv('ActionsOnly.csv')
movie_pivot = movie.pivot_table(index='movieId', columns='movieId', values='rating', fill_value=0.0)
movie_pivot.to_csv('Movie_Similarity_Only1.csv')
这里运行代码我遇到错误 这些是
line 615, in _get_level_number
'level number' % level)
ValueError: The name movieId occurs multiple times, use a level number
During handling of the above exception, another exception occurred:
line 5, in <module>
movie_pivot = movie.pivot_table(index='movieId', columns='movieId', values='rating', fill_value=0.0)
line 142, in pivot_table
table = agged.unstack(to_unstack)
line 3954, in unstack
return unstack(self, level, fill_value)
line 449, in unstack
return _unstack_multiple(obj, level)
line 296, in _unstack_multiple
clocs = [index._get_level_number(i) for i in clocs]
line 296, in <listcomp>
clocs = [index._get_level_number(i) for i in clocs]
line 619, in _get_level_number
raise KeyError('Level %s not found' % str(level))
KeyError: 'Level movieId not found'
这些是错误,我想应用上面的cosine similarity
逻辑来获取将插入此影片电影表中的值。
答案 0 :(得分:0)
您可以尝试旋转表格。这可能会提供您需要的格式。
考虑您提供的信息ActionsOnly.csv
userId,movieId,rating
18,9,3
32,204,4
49,2817,1
62,160438,4
70,667,5
73,1599,1
73,4441,3
73,4614,3.5
73,86142,4
95,4636,2
103,71,1
118,3769,4
150,4866,2
你想知道用户对5中哪部电影的评价。
userId
是索引列,movieId
成为标题行,rating
决定值。如果没有值,则会显示NaN
或Not A Number
movie_pivot = movie.pivot_table(index='userId', columns='movieId', values='rating')
要将Pandas中的文件保存为CSV,有一个简单的命令to_csv
所以
movie_pivot.to_csv('ActionsOnly_pivot.csv')
将保存到csv。
所以你需要的完整代码是:
import pandas as pd
movie = pd.read_csv('movies.csv')
movie_pivot = movie.pivot_table(index='userId', columns='movieId', values='rating')
movie_pivot.to_csv('movies_pivot.csv')
我也强烈建议阅读有关大熊猫的内容,这非常容易和合乎逻辑:)