Ich versuche, eine Feature-Matrix basierend auf bestimmten Features zu erstellen und dann die Entfernung s/w der Elemente zu finden. Zu Testzwecken verwende ich momentan nur 2 Punkte.Verschiedene Ergebnisse für linalg.norm in numpy
Daten: Liste der Elemente Ich habe
Daten: Merkmal dict die Elemente (ich bin ihre Werte des Schlüssels als Merkmale von Artikeln verwenden)
Merkmale: Liste der Features
Dies ist mein Code unter Verwendung numpy Nullmatrix:
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
Der Wert für dist ich erhalte 1,0
Dies ist mein Code von Python-Listen mit:
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
Der Wert von dist ist in diesem Fall 4,35889894354
ich viele Zeit überprüft haben, dass der Wert 1 ist in beiden Fällen an der gleichen Position eingestellt wird aber die Antwort ist anders.
Möglicherweise verwende ich numpy nicht richtig oder es gibt ein Problem mit der Logik. Ich benutze eine numpy zero-based Matrix wegen ihrer Speichereffizienz.
Was ist das Problem?