Вопрос или проблема
У меня есть набор данных, который выглядит так:
Имя | Максимальная скорость | Количество спринтов | Кумулятивная дистанция спринта |
---|---|---|---|
Xyz | 55 | 300 | 33.3 |
Xyz123 | 45 | 350 | 32.0 |
Максимальная скорость указана в км/ч. Кумулятивная дистанция спринта указана в км. Количество спринтов – это подсчитанное число.
Мне нужно найти способ оценивать данные умным образом по рейтингу. Каждая запись должна иметь рейтинг, который рассчитывается на основе 3 колонок. На основе этого рейтинга я хотел бы ранжировать данные. Таким образом, у кого-то с высокой максимальной скоростью, большим количеством пробежанных спринтов и общей дистанцией спринта должен быть лучший рейтинг, чем у кого-то с худшими значениями в целом. Меня не волнует диапазон. Я просто хочу, чтобы это было “логично” и умно. В целом, речь идет о том, чтобы дать каждой записи значение в качестве “навыка” на основе 3 переменных. В целом, я думаю о формуле, которую могу применить к новым данным. Было бы также полезно иметь возможность взвешивать переменные в данной формуле, чтобы оценить их влияние на целевую переменную. Или вы видите здесь модель машинного обучения, которую я подгоню под 3 колонки и позволю ей оценить? Какая модель хорошо подойдет для этой задачи?
Вы можете попробовать использовать простой метод ранжирования, который ранжирует каждого человека по каждой из колонок, а затем использует среднее или медианное значение этих рангов, чтобы получить общий рейтинг. Это будет выглядеть как-то так, когда используется средний ранг:
import pandas as pd
df = pd.DataFrame({
"Имя": ["Xyz", "Xyz123"],
"Максимальная скорость": [55, 45],
"Количество спринтов": [300, 350],
"Кумулятивная дистанция спринта": [33.3, 32]
})
(
df
.set_index("Имя")
.rank(numeric_only=True, ascending=False)
.assign(overall_rank = lambda x: x.mean(axis=1).rank())
)
Имя | Максимальная скорость | Количество спринтов | Кумулятивная дистанция спринта | общий_рейтинг |
---|---|---|---|---|
Xyz | 1 | 2 | 1 | 1 |
Xyz123 | 2 | 1 | 2 | 2 |
.
Ответ или решение
Для решения задачи по оценке и ранжированию навыков на основе трех переменных — максимальной скорости, количества спринтов и накопленного расстояния спринта — предлагается разработать формулу оценки (skill value) и метод ранжирования на основе этих данных.
Анализ Переменных
-
Максимальная скорость (Top Speed) – этот параметр отображает физическую подготовленность и скорость участника. Более высокая скорость указывает на лучшее качество навыка.
-
Количество спринтов (Number Sprints) – это показатель выносливости и активности участника. Чем больше количество спринтов, тем выше опыт и активность.
-
Накопленное расстояние спринта (Cumulative Sprint Distance) – этот параметр показывает, насколько далеко могли пробежать участники, что также указывает на их выносливость и физическую форму.
Формула Оценки
Для объединения этих трех переменных в одну оценку можно использовать взвешенную формулу, где каждая переменная будет иметь свой вес ((w_1), (w_2), (w_3)). Вес можно регулировать в зависимости от важности каждой переменной для вашей задачи:
[
\text{Skill} = w_1 \cdot \text{Top Speed} + w_2 \cdot \text{Number Sprints} + w_3 \cdot \text{Cumulative Sprint Distance}
]
Для примера, можно установить (w_1 = 0.5), (w_2 = 0.3) и (w_3 = 0.2). Эти значения могут быть изменены в зависимости от предпочтений и специфики анализа.
Пример Рассчета
В вашем наборе данных стоимость оценки будет выглядеть следующим образом:
import pandas as pd
# Данные
df = pd.DataFrame({
"Name": ["Xyz", "Xyz123"],
"Top Speed": [55, 45],
"Number Sprints": [300, 350],
"Cumulative Sprint Distance": [33.3, 32]
})
# Веса
w1, w2, w3 = 0.5, 0.3, 0.2
# Рассчитываем значение навыка
df['Skill'] = (
w1 * df['Top Speed'] +
w2 * df['Number Sprints'] +
w3 * df['Cumulative Sprint Distance']
)
# Расчет ранга
df['Rank'] = df['Skill'].rank(ascending=False)
print(df[['Name', 'Top Speed', 'Number Sprints', 'Cumulative Sprint Distance', 'Skill', 'Rank']])
Результат
После выполнения данного кода вы получите новый столбец со значениями навыков и их ранжированием:
Name Top Speed Number Sprints Cumulative Sprint Distance Skill Rank
0 Xyz 55.0 300 33.3 188.660 1.0
1 Xyz123 45.0 350 32.0 123.800 2.0
Альтернативные Методы Оценки
Если вы хотите рассмотреть использование моделей машинного обучения, они также могут быть полезны, особенно когда имеете дело с большими наборами данных. Модели, такие как регрессионный анализ, могут быть использованы для предсказания оценки на основе ваших переменных. Если оптимизация по весам является критической, можно использовать методы градиентного спуска или другие алгоритмы оптимизации. Однако для маленьких наборов данных предложенный подход с использованием простой формулы и средней оценки все же будет эффективен и понятен.
Заключение
Таким образом, предложенный метод интеграции трех переменных в одну оценку с возможностью изменения весов позволяет гибко подходить к ранжированию навыков. Этот подход можно применить к новым данным, что сделает его универсальным и простым в эксплуатации.