【问题标题】:Different results for linalg.norm in numpynumpy 中 linalg.norm 的不同结果
【发布时间】:2016-07-05 22:16:06
【问题描述】:

我正在尝试根据某些特征创建一个特征矩阵,然后找到项目的黑白距离。 出于测试目的,我现在只使用 2 个点。

数据:我拥有的项目列表

specs : 项目的特征字典(我使用它们的键值作为项目的特征)

功能:功能列表

这是我使用 numpy 零矩阵的代码:

import numpy as np
matrix = np.zeros((len(data),len(features)),dtype=bool)
for dataindex,item in enumerate(data):
    if dataindex > 5:
    break
specs = item['specs']
values = [value.lower() for value in specs.values()]
for idx,feature in enumerate(features):
    if(feature in values):
        matrix[dataindex,idx] = 1
        print dataindex,idx
v1 = matrix[0]
v2 = matrix[1]
# print v1.shape
diff = v2 - v1
dist = np.linalg.norm(diff)
print dist

我得到的 dist 值是 1.0

这是我使用 python 列表的代码:

matrix = []
for dataindex,item in enumerate(data):
    if dataindex > 5:
        f = open("Matrix.txt",'w')
        f.write(str(matrix))
        f.close()
        break
    print "Item" + str(dataindex)
    row = []
    specs = item['specs']
    values = [value.lower() for value in specs.values()]
    for idx,feature in enumerate(features):
        if(feature in values):
            print dataindex,idx
            row.append(1)
        else:
            row.append(0)
    matrix.append(row)

v1 = np.array(matrix[0]);
v2 = np.array(matrix[1]);
diff = v2 - v1
print diff
dist = np.linalg.norm(diff)
print dist

本例中 dist 的值为 4.35889894354

我已经检查了很多次,在这两种情况下,值 1 都设置在相同的位置,但答案不同。

可能是我没有正确使用 numpy 或者逻辑有问题。 我正在使用基于 numpy 零的矩阵,因为它的内存效率很高。

有什么问题?

【问题讨论】:

    标签: python numpy matrix feature-extraction euclidean-distance


    【解决方案1】:

    这是一个类型问题:

    In [9]: norm(ones(3).astype(bool))
    Out[9]: 1.0
    
    In [10]: norm(ones(3).astype(float))
    Out[10]: 1.7320508075688772
    

    您必须确定适合您问题的标准,并最终使用astype 投射您的数据。

    norm(M)sqrt(dot(M.ravel(),M.ravel())) ,所以对于布尔矩阵,norm(M) 是 0。如果 MFalse 矩阵, 1. 否则。使用normord 参数来调整函数。

    【讨论】:

      猜你喜欢
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 2020-05-22
      • 2012-02-01
      • 1970-01-01
      • 2018-10-17
      • 1970-01-01
      • 2018-11-05
      相关资源
      最近更新 更多