Оценка с меткой истинности основания и списком прогнозируемых меток

#python-3.x #statistics #precision-recall

#python-3.x #Статистика #точность-отзыв

Вопрос:

В настоящее время я пытаюсь предсказать пять / 10 лучших объектов для статистического упражнения на основе описания упражнения. Предметы и упражнения (с меткой истинности основания, как целое число) предоставляются в формате CSV. Метка истинности основания также присутствует в CSV-файлах субъектов и называется «id».

Моя текущая модель создает кортеж для ever exercise, первым элементом которого является метка истинности основания, второй элемент — список прогнозируемых меток.

Тогда мой вопрос: как вычислить (точность,) Точность, отзыв и F1 (если возможно, также MRR и MAR)?

Кроме того, все упражнения и тема преобразуются в векторы. Кроме того, я вычисляю точность, подсчитывая все экземпляры, для которых присутствует истинность истинности в топ-5/10, и деля это на общее количество упражнений.

* примечание: в коде exercise = вопрос, а subject = kc

Мои переменные следующие:

 question_data = df[['all_text_clean', 'all_text_as_vector', 'groud_truth_id'] ].values

kc_data = subject_df[['id', 'all_text_as_vector']].values
  

Затем я перебираю каждую пару упражнение-вопрос:

 question_candidates = []

for qtext, qvec, gt_id in question_data:

    scores = []

    for kc_id, kc_vec in kc_data:
        score = distance.cosine(qvec, kc_vec) # calculate cosine similarities

        scores.append((kc_id, score)) # kc_id and related store cos-sim

    scores = sorted(scores, key=itemgetter(1)) # sort cos-sims and related ids

    candites = [id for id, score in scores][:5] # only id is relevant. These are the suggestions

    question_candidates.append((gt_id, candites))
  

Точность умеренная: около 0,59. Я не ожидаю ничего более высокого, поскольку это всего лишь базовая модель.