我需要为一个熊猫数据帧成对计算cosine_similarity
并将其存储回另一个数据帧(熊猫)中。
到目前为止,我使用sklearn.metrics.pairwise
的{{1}}计算相似度:
cosine_similarity
来自sim = cosine_similarity(df,dense_output=False)
的样本:
sim
现在,我希望将其存储回具有以下结构的Pandas数据框中:
[[1.00000000 8.33333333 ... 8.72871561 8.72871561 8.72871561]
[8.33333333 1.00000000 ... 7.63762616 7.63762616 7.63762616]]
我该怎么做?
答案 0 :(得分:0)
创建索引,然后创建数据框
i, j = np.indices(sim.shape).reshape(2, -1)
mask = i != j
i = i[mask]
j = j[mask]
pd.DataFrame({
'ID': df.index[i],
'Pair_ID': df.index[j],
'Sim_Value': sim[i, j]
})
答案 1 :(得分:0)
import numpy as np
import pandas as pd
def create_df(sim):
df = pd.DataFrame(data=sim[0], columns=['Sim_Value'])
df['Id'] = 1
for x in range(1,sim.shape[0]):
tdf = pd.DataFrame(data=sim[x], columns=['Sim_Value'])
tdf['Id'] = x+1
df = df.append(tdf)
df['Pair_ID'] = df.index + 1
df.reset_index(drop=True,inplace=True)
return df