exam-evaluator / check_quality.py
KarmanovaLidiia
Initial clean commit for HF Space (models via Git LFS)
bcb314a
import pandas as pd
import numpy as np
# Загрузи скачанный файл
df = pd.read_csv('predicted_from_api.csv', sep=';')
print("📊 АНАЛИЗ КАЧЕСТВА ПРЕДСКАЗАНИЙ")
print("=" * 50)
# Проверяем наличие колонок
if 'Оценка экзаменатора' in df.columns and 'pred_score' in df.columns:
# Убираем строки где нет истинных оценок
df_clean = df.dropna(subset=['Оценка экзаменатора'])
if len(df_clean) > 0:
true_scores = df_clean['Оценка экзаменатора'].astype(float)
pred_scores = df_clean['pred_score'].astype(float)
# Основные метрики
mae = (abs(true_scores - pred_scores)).mean()
rmse = ((true_scores - pred_scores) ** 2).mean() ** 0.5
print(f"📈 Общие метрики:")
print(f" MAE (средняя абсолютная ошибка): {mae:.3f}")
print(f" RMSE (среднеквадратичная ошибка): {rmse:.3f}")
print(f" Корреляция: {true_scores.corr(pred_scores):.3f}")
# По вопросам
print(f"\n📋 По типам вопросов:")
for q in [1, 2, 3, 4]:
mask = df_clean['№ вопроса'] == q
if mask.any():
q_true = true_scores[mask]
q_pred = pred_scores[mask]
q_mae = (abs(q_true - q_pred)).mean()
# Диапазон баллов для вопроса
if q in [1, 3]:
max_score = 1
else:
max_score = 2
print(f" Вопрос {q} (0-{max_score}): MAE = {q_mae:.3f}, примеров = {len(q_true)}")
else:
print("❌ В файле нет строк с оценками экзаменатора")
else:
print("❌ В файле отсутствуют колонки 'Оценка экзаменатора' или 'pred_score'")
# Статистика предсказаний
print(f"\n📊 Статистика предсказаний:")
for q in [1, 2, 3, 4]:
mask = df['№ вопроса'] == q
if mask.any():
scores = df.loc[mask, 'pred_score'].astype(float)
print(f" Вопрос {q}: ср.={scores.mean():.2f}, мин={scores.min():.2f}, макс={scores.max():.2f}")