Я предполагал представить каждую запись в датасете как вектор, и посчитать косинусную схожесть между векторами.
Косинусная здесь не подходит.
Косинус учитывает вес каждого параметра. Например слова "шалаш" и "кабан"
содержат по 2 буквы "а" и это делает возможным введение косинусной метрики для дистанции двух слов.
У тебя автомобили содержат просто булевы признаки. Например тип_двигателя_дизель = true.
И сравнивать тебе выгоднее просто векторы такого вида { 1.0, 0.0, 1.0, 0.0 .... },
Тут дистанция хемминга была бы проще и вернее.
По поводу
объема двигателя и года выпуска - решай сам. Но при численном сравнении
у тебя возникнет дилемма крокодила. Типа
крокодил более зеленый чем плоский? Или наоборот.
Грубо говоря какой из параметров будет иметь БОЛЬШИЙ вес в при операциях сравнения.