0
我試圖根據某些特徵創建一個特徵矩陣,然後找到b/w項目的距離。 爲了測試目的,我現在只用了2分。linalg.norm在numpy中的不同結果
數據:項目的名單上有
規格:項目的特徵字典(我使用他們的密鑰的值項的功能)
特點:特點
名單這是我的代碼使用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的零基矩陣。
問題是什麼?