analytics – 包含混合数据类型(离散和连续)的向量的相似性度量
发布时间:2020-12-14 04:42:13 所属栏目:大数据 来源:网络整理
导读:我有一组向量,每个向量包含文本和数字元素.我正在寻找这些载体的相似性度量,如果可能的话,他们实现的框架.任何帮助非常感谢. 解决方法 对我来说,这是一个数据建模问题,而不是找到适当的类似度量标准. 例如,你可以使用欧几里德距离 重新调整您的数据(例如,以
我有一组向量,每个向量包含文本和数字元素.我正在寻找这些载体的相似性度量,如果可能的话,他们实现的框架.任何帮助非常感谢.
解决方法
对我来说,这是一个数据建模问题,而不是找到适当的类似度量标准.
例如,你可以使用欧几里德距离 >重新调整您的数据(例如,以平均为中心和单位差异);和 例如,想象一个由数据向量组成的数据集,每个数据向量都有四个特征(列或字段): minutes_per_session,sessions_per_week,registered_user,sex 前两个是连续的(又称“数字”)变量 – 即,适当的值是12.5,4.7等等. 第二个是离散的,显然需要转换. 第1步:重新编码离散变量 常见的技术是将每个离散特征重新编码为一系列特征,一旦为该特征记录每个值的特征(并且其中每个特征被赋予该原始特征的值的名称). 因此,存储每个用户的性别的单个列可能具有M的值,并且F将被转换为两个特征(字段或列),因为性别具有两个可能的值. 所以用户性别的值列: ['M'] ['M'] ['F'] ['M'] ['M'] ['F'] ['F'] ['M'] ['M'] ['M'] 变成两列 [1,0] [1,0] [0,1] [1,1] [0,0] 第2步:重新缩放数据(例如,以均值为中心和单位方差) 随机生成的合成数据2D数组: array([[ 3.,5.,2.,4.],[ 9.,0.,8.],[ 5.,1.,8.,0.],9.,7.,[ 3.,6.,2.]]) for each column: calculate the mean then subtract the mean from each value in that column: >>> A -= A.mean(axis=0) >>> A array([[-2.8,1.4,-2.6,0.4],[ 3.2,-1.6,-4.6,4.4],[-0.8,3.4,-3.6],5.4,2.4,[-2.8,-1.6]]) for each column:now calculate the *standard deviation* then divide each value in that column by this std: >>> A /= A.std(axis=0) verify: >>> A.mean(axis=0) array([ 0.,-0.,-0.]) >>> A.std(axis=0) array([ 1.,1.]) 所以由四列组成的原始数组现在有六个;成对相似度可以通过欧几里德距离来测量,如下所示: take the first data vectors (rows): >>> v1,v2 = A1[:2,:] 欧几里德距离,适用于2个特征空间: dist = ( (x2 - x1)**2 + (y2 - y1)**2 )**0.5 >>> sm = NP.sum((v2 - v1)**2)**.5 >>> sm 3.79 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |