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}")