Kosinus-ähnlichkeit zwischen den einzelnen Zeilen in einen Dataframe in Python
Ich habe einen DataFrame mit mehreren Vektoren mit jeweils 3 Einträge. Jede Zeile ist ein Vektor in meiner Darstellung. Ich brauchte zur Berechnung der Kosinus-ähnlichkeit zwischen diesen Vektoren. Die Umwandlung dieser in eine matrix-Darstellung ist besser, oder ist es ein sauberer Ansatz in DataFrame selbst?
Hier ist der code, den ich ausprobiert habe.
import pandas as pd
from scipy import spatial
df = pd.DataFrame([X,Y,Z]).T
similarities = df.values.tolist()
for x in similarities:
for y in similarities:
result = 1 - spatial.distance.cosine(x, y)
- Bitte teilen Sie, was Sie bisher ausprobiert haben, so dass wir richtig kann Ihnen helfen.
- in den for-Schleifen, die Sie verwenden, werden Sie die Berechnung der ähnlichkeit einer Zeile mit sich selbst als gut. Sie brauchen nicht eine verschachtelte Schleife sowie. Iteration über die Anzahl der Zeilen-1, und berechnen Sie den Kosinus-ähnlichkeit zwischen
df.iloc[i,:]
unddf.iloc[i+1,:]
. Alternativ können Sie prüfen, inapply
Methode der dataframes. - Vielen Dank für Ihre wertvollen input. Ich werde sicherlich versuchen, mit Hilfe der apply-Methode von DataFrame.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie direkt verwenden Sie einfach
sklearn.Metriken.paarweise.cosine_similarity
.Demo
.reshape
, behoben!