Среднее по версии нужно дополнить разбивкой по темам, распределениями и числом примеров. Автоматический выбор idxmax убираем: он игнорирует малые группы и риск регрессии.
Практическое задание
Среднее по версии нужно дополнить разбивкой по темам, распределениями и числом примеров. Автоматический выбор idxmax убираем: он игнорирует малые группы и риск регрессии.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Практическое задание
AI сгенерировал код для решения о выпуске новой LLM. Проведи ревью: измени его так, чтобы редактор мог сравнить качество версий по тематическим сегментам, увидеть разброс оценок и заметить риск ухудшения на малой группе данных.
import matplotlib.pyplot as plt import pandas as pd
scores = pd.read_csv('model_scores.csv') summary = scores.groupby('model_version')['score'].mean() plt.bar(summary.index, summary.values) plt.title('Качество моделей') plt.ylabel('Средняя оценка') plt.show()
print('Лучшая версия:', summary.idxmax())
Ответ
Среднее по версии нужно дополнить разбивкой по темам, распределениями и числом примеров. Автоматический выбор idxmax убираем: он игнорирует малые группы и риск регрессии.
Нужна колонка topic; если её нет, сначала добавьте тематическую разметку. Пример сохраняет выбросы, показывает n и отмечает малые группы условным порогом 20, который не является статистической гарантией.
import matplotlib.pyplot as plt
import pandas as pd
scores = pd.read_csv('model_scores.csv')
required = {'model_version', 'topic', 'score'}
if not required.issubset(scores.columns):
raise ValueError('Нужны model_version, topic и score')
scores['score'] = pd.to_numeric(scores['score'], errors='raise')
if scores[list(required)].isna().any().any():
raise ValueError('Сначала разберите пропущенные значения')
stats = scores.groupby(['topic', 'model_version'])['score'].agg(
n='count', mean='mean', median='median', std='std', minimum='min'
)
stats['small_group'] = stats['n'] < 20
print(stats)
for topic, part in scores.groupby('topic'):
ax = part.boxplot(column='score', by='model_version', showfliers=True)
ax.set_title(str(topic))
ax.set_ylabel('Оценка')
plt.suptitle('')
plt.show()
Для решения о релизе сравните версии на одинаковых example_id, оцените парные разницы и неопределённость по темам. Не объявляйте отсутствие значимости доказательством отсутствия регресса.