Только что у меня в голове, что если вы сравните% случаев с%, если все предметы имели одинаковое количество вхождений
В вашем примере выше
Джон, Джон, Джон, Джонни
50% Джон
25% Джон
25% Джонни
33,3% нормально? (Я придумываю слово, потому что не знаю, как это назвать. 3 предмета: 100% / 3)
Оценка Джона = 50% - 33,3% = 16,7%
Джон, Джон, Джон, Джон
50% Джон
50% Джон
50% Нормальный (2 предмета, 100% / 2)
Оценка Джона = 50% - 50% = 0%
Если бы у вас было [Джон, Джон, Джон, Джон, Джон], тогда оценка Джона была бы 60% -50% = 10%, что ниже, чем в первом случае, но выше, чем во втором (надеюсь, это желаемый результат, в противном случае вам нужно будет уточнить, какими должны быть желаемые результаты)
В вашем первом случае [Джон, Джон, Джон, Джон, Джон] вы получите 80% -50% = 30%
Для [Джон, Джон, Джон, Джон, Джон, Джонни] вы получите 66,6% -33,3% = 33,3%
Это может или не может быть то, что вы хотите.
Если вышеупомянутое может повлиять на большее, то если бы у вас был Джон * 97 + Джон + Джонни + Джонни, это дало бы вам 97% -25% = 72%, но Джон * 99 + Джон дал бы вам только оценку 99-50% = 49%
Вам нужно выяснить, как вы хотите справиться с вырожденным случаем, когда все они одинаковы, иначе вы получите 0% за то, что, вероятно, не то, что вы хотите.
РЕДАКТИРОВАТЬ (хорошо, я сделал много правок, но это не просто примеры: p)
Чтобы нормализовать результаты, возьмите оценку, рассчитанную выше, делите на предел максимально возможной оценки, учитывая количество различных значений. (Хорошо, это звучит намного сложнее, чем нужно, пример времени)
Пример:
[Джон, Джон, Джон, Джонни] 50% - 33,3% = 16,7%. Это предыдущая оценка, но с 3 пунктами верхний предел вашей оценки будет 100% -33,3% = 66,6%, поэтому, если мы примем это во внимание, мы получим 16,7 / 66,6 = 25%
[Джон, Джон, Джон, Джон] дает (50-50) / 50 = 0%
[Джон, Джон, Джон, Джон, Джон] дает (60-50) / 50 = 20%
[Джон, Джон, Джон, Джон, Джон] дает (80-50) / 50 = 60%
[Джон, Джон, Джон, Джон, Джон, Джонни] дает (66,6-33,3) / (66,6) = 50%
[Джон * 97, Джон, Джонни, Джонни] дает (97-25) / 75 = 96%
[Джон * 99, Джон] дает (99-50) / 50 = 98%