/
kachernenko
/
aaa_tests
Обзор
Документация
Войти
/
kachernenko
/
aaa_tests
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop_branch
one_hot_encoder.py
40 строк
1 KB
KAChernenko
hw done
04 ноя 2024, 16:23
04 ноя 2024, 16:23
815620a
Код
Авторство
О чём код?
from typing import List, Tuple def fit_transform(*args: str) -> List[Tuple[str, List[int]]]: """ fit_transform(iterable) fit_transform(arg1, arg2, *args) """ if len(args) == 0: raise TypeError('expected at least 1 arguments, got 0') categories = args if isinstance(args[0], str) else list(args[0]) uniq_categories = set(categories) bin_format = f'{{0:0{len(uniq_categories)}b}}' seen_categories = dict() transformed_rows = [] for cat in categories: bin_view_cat = (int(b) for b in bin_format.format( 1 << len(seen_categories))) seen_categories.setdefault(cat, list(bin_view_cat)) transformed_rows.append((cat, seen_categories[cat])) return transformed_rows if __name__ == '__main__': from pprint import pprint cities = ['Moscow', 'New York', 'Moscow', 'London'] exp_transformed_cities = [ ('Moscow', [0, 0, 1]), ('New York', [0, 1, 0]), ('Moscow', [0, 0, 1]), ('London', [1, 0, 0]), ] transformed_cities = fit_transform(cities) pprint(transformed_cities) assert transformed_cities == exp_transformed_cities