我有一个用户的口味表:user\u偏好。head()
genres Action Adventure Animation Children Comedy Crime Documentary Drama Fantasy Film-Noir Horror IMAX Musical Mys...
userId
18 0 0 0 0 1 0 0 0 0 0 0 0 0 0
65 9 4 0 4 12 8 1 15 6 4 0 0 0 2
96 0 16 16 0 16 0 0 0 16 0 0 0 16 0
121 8 0 0 0 69 9 0 21 0 0 0 0 0 0
129 11 14 0 3 85 4 4 46 3 0 2 3 0 19
我有电影类型内容表:
genres Action Adventure Animation Children Comedy Crime Documentary Drama Fantasy Film-Noir Horror IMAX Musical Mys...
movieId
10 0 0 0 0 1 0 0 0 0 0 0 0 0 0
11 0 0 0 0 1 1 0 1 0 1 0 0 0 0
12 0 1 0 0 1 0 0 0 0 0 0 0 0 0
13 0 0 0 0 0 0 0 1 0 0 0 0 0 0
14 0 1 0 0 0 1 1 0 0 0 0 0 0 1
我正在尝试获取每个用户的偏好向量,并获取其与电影内容的相似性度量,以便通过点积推荐最偏好的电影:
distances = np.dot(movie_content_df, user_preference[1].reshape(-1, 1))
为了计算距离,我首先通过以下方式标准化了用户的偏好表:
from sklearn.preprocessing import MinMaxScaler
user_preference_tmp = user_preference.copy()
norm = MinMaxScaler().fit(user_preference_tmp)
user_preference_norm = norm.transform(user_preference_tmp)
print(user_preference[1])
print(user_preference_norm[1])
________________________________________________________________________
([ 0, 9, 4, 0, 4, 12, 8, 1, 15, 6, 4, 0, 0, 0, 2, 7, 7, 10, 0, 0])
[0. 0.00239107 0.00131709 0. 0.00355872 0.00212352 0.00300639 0.00044287 0.001469 0.00358637 0.01520913 0. 0. 0. 0.00174978 0.00237691 0.0026616 0.00241604 0. 0. ]
我不明白为什么规范化后用户偏好\u norm[1]
表示不同的偏好?例如,第三个值和第五个值都是4
,但在标准化后,我得到了0.00131709
和0.00355872
,或者最大值15
转换为0.001469
,这在点积之后给出的相似性值较小。
在计算点积之前对数据进行规范化是否正确?如果是,我做得对吗?
这给了我正确的输出,它代表了正确的用户偏好:
from sklearn.preprocessing import Normalizer
user_preference_tmp = user_preference.copy()
norm = Normalizer().fit(user_preference_tmp)
user_preference_norm = norm.transform(user_preference_tmp)
print(list(user_preference[1]))
print(user_preference_norm[1])
_______________________________________________________________________________
[0, 9, 4, 0, 4, 12, 8, 1, 15, 6, 4, 0, 0, 0, 2, 7, 7, 10, 0, 0]
[0. 0.31799936 0.14133305 0. 0.14133305 0.42399915
0.2826661 0.03533326 0.52999894 0.21199958 0.14133305 0.
0. 0. 0.07066653 0.24733284 0.24733284 0.35333263
0. 0. ]
问题内容: 我正在尝试使用Haversine公式来计算由纬度和经度标识的一长串位置的距离矩阵,该公式采用两个坐标对的元组来产生距离: 我可以使用嵌套的for循环计算所有点之间的距离,如下所示: 使用一个简单的函数: 但是考虑到时间的复杂性,这需要花费相当长的时间,大约需要20秒才能获得500点,而且我的清单要长得多。这让我着眼于矢量化,并且遇到了((docs)),但无法弄清楚如何在这种情况下应用它
问题内容: 我为城市建立了邻接矩阵,并在它们之间建立了联系。例如AB,BC,CD。现在,我想知道是否可以计算未连接的城市之间的距离。是否可以计算未连接节点之间的矩阵距离并找到路径? 城市班 主要方法 这是我运行main方法时的输出,我认为一切都很好。 现在我想计算从A到D的距离,但我不知道该怎么做。我将不胜感激。谢谢! 问题答案: 要在加权图中找到最短路径(路线的每个部分都有不同的权重),可以使用
我对计算两个numpy阵列(x和y)之间的各种空间距离感兴趣。 http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.spatial.distance.cdist.html 但是,上述结果会产生太多不需要的结果。我怎样才能限制它只用于我所需的结果。 我想计算[1,11]和[31,41]之间的距离;[2,22]和[32,42
我试图使用Scala类计算两点之间的距离。但它给出了一个错误说 类型不匹配;发现:其他。需要类型(具有基础类型点):?{def x:?}请注意,隐式转换不适用,因为它们是不明确的:在[A](x:A)类型的对象Predef中确保[A]的方法any2Ensuring和在[A](x:A)“ArroAssoc[A]类型的对象Predef中的方法Ani2ArrowasSoc都是可能的其他转换函数。输入到?{
本文向大家介绍Python文本相似性计算之编辑距离详解,包括了Python文本相似性计算之编辑距离详解的使用技巧和注意事项,需要的朋友参考一下 编辑距离 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。一般来说,编辑距离越小,两个串的相似度越大。 例
问题内容: 我需要创建一个类来计算两点之间的距离。我被困住了,我是一个完全的初学者。这是我的课程: 第二课。 我不确定如何在两个定义的点之间获取点对象(中间点)。 我可以创建点对象,但不确定如何通过位于这两个点对象之间的方法返回点对象。 问题答案: 平面上的两个点(x1,y1)和(x2,y2)之间的距离为: 但是,如果您想要的只是两个点的中点,则应将中点函数更改为: 这将返回一个全新的点对象,其点