#python #pandas
Вопрос:
У меня есть кадр данных, как показано ниже:
import pandas as pd
import scipy.spatial.distance as ssd
import numpy as np
df = pd.DataFrame({'SJDR': [2,3,7,8,0,0], 'TR': [0,0,0,1,1,3], 'BSO': [1,1,2,0,1,1], 'CLASS': [2,2,1,3,1,3]})
df
и я вычисляю сходство между каждой строкой следующим образом:
1 - ssd.cosine(df.iloc[0].to_numpy(), df.iloc[1].to_numpy())
Однако мне нужно выбрать векторы, которые будут рассчитываться, должны быть выбраны в соответствии с CLASS
столбцом. Поэтому мне нужно вычислить косинусное сходство векторов одного класса со всеми остальными. Для этого набора данных я должен был бы выполнить следующие вычисления в соответствии со CLASS
столбцом:
Ex.:
Class 1 Vectors x Class 1 Vectors
Class 1 Vectors x Class 2 Vectors
Class 1 Vectors x Class 3 Vectors
Class 2 Vectors x Class 3 Vectors
До сих пор я не могу придумать, как это сделать. Кто-нибудь может помочь?
Комментарии:
1. Каков ваш ожидаемый результат?
2. Вам просто нужна матрица косинусного подобия df? с
from sklearn.metrics.pairwise import cosine_similarity
помощью вы можете использоватьcosine_similarity(df)
для всей матрицы.3. Результатом может быть словарь или фрейм данных, содержащий сходство косинуса между значениями столбцов разных классов.