2
私は3つのエントリを持つ複数のベクトルを含むDataFrameを持っています。各行は私の表現のベクトルです。これらのベクトルのそれぞれのコサインの類似度を計算する必要がありました。これを行列表現に変換する方が良いか、DataFrame自体にはよりクリーンなアプローチがありますか?PythonのDataframeの各行間のコサイン類似度
ここに私が試したコードがあります。
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)
我々は適切にあなたを助けることができるようにあなたがこれまでにしようとしているものを共有してください。 –
@JayanthPrakashKulkarni:あなたが使っているforループでは、行自体の類似性も計算しています。ネストされたループも必要ありません。行数-1を反復し、 'df.iloc [i、:]'と 'df.iloc [i + 1、:]'のコサインの類似度を計算します。あるいは、データフレームの 'apply'メソッドを調べることもできます。 –
@ClockSlave貴重なご意見ありがとうございます。私は必ずDataFrameのapplyメソッドを使ってみます。 –