У вас есть категориальный признак (например,
"A", "B", "C"), который был закодирован в виде One-Hot Encoding, а затем данные были искажены случайным шумом.Реализуйте функцию
recover_category(matrix, labels), которая по входной матрице matrix (список списков, где каждая строка — вектор с плавающими значениями после шума) и списку labels (названия категорий в нужном порядке) должна восстановить название исходной категории для каждой строки — ту, у которой была 1 до добавления шума.Шум малый, но может нарушать точные значения (например, 1.0 становится 0.91, 0.0 — 0.08 и т.п.).
Решение задачи🔽
def recover_category(matrix, labels):
result = []
for row in matrix:
max_index = row.index(max(row))
result.append(labels[max_index])
return result
# Пример использования
matrix = [
[0.05, 0.92, 0.03],
[0.89, 0.06, 0.12],
[0.12, 0.08, 0.83]
]
labels = ["A", "B", "C"]
print(recover_category(matrix, labels))
# Ожидаемый результат: ['B', 'A', 'C']