我必须计算用户评分的质心。我的数据存储在这样一个矩阵中(假设我们有4个用户和12个评级):
[[0,1,0,-1,0,2,3,4,1,0,0,0],
[0,1,1,-1,0,2,3,4,1,0,2,0],
[0,1,0,0,-1,2,3,4,1,0,0,0],
[0,1,-1,2,0,2,3,4,1,4,-1,-1]]
我的问题是,我不确定如何处理未知数据,也就是说,当用户没有对所有内容进行评分时(在我的示例中,值初始化为-1)。现在,0表示用户根本不喜欢这个对象,4表示他们喜欢它。计算质心时,值等于-1时应该怎么做?现在,我在python中的代码如下所示:
def calc_centroid(ratMatrix):
centroid = [0 for x in range(len(ratMatrix[0]))]
for i in range(len(ratMatrix)):
for j in range(len(ratMatrix[i])):
centroid[j] = centroid[j] + ratMatrix[i][j]
count = len(ratMatrix[0])
for i in range(len(centroid)):
centroid[i] = centroid[i]*1.0/count;
return centroid
然而,我并没有考虑到“质心”也是用-1值计算的,我想这是不完全正确的。做这件事的标准方法是什么?你知道吗
我假设质心是平均值。当4个等级为1时,代码返回0.33。我想应该是1。你知道吗
numpy可以做一些事情,使这个更整洁。你知道吗
这就产生了
相关问题 更多 >
编程相关推荐