加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读