2010-08-10 3 views
0

Я занимаюсь некоторыми материалами для машинного обучения, и я хочу взять некоторые случайные образцы и определить, согласен ли человек с компьютером. Для этого пользователь просто голосует вверх или вниз по заданному элементу. Затем я хочу, чтобы сортировать по элементам с наивысшим рейтингом. Я хочу использовать что-то более сложное, чем просто вверх-вниз, чтобы получить хорошие результаты.C# Сортировка, основанная на рейтинге [Обновлено до уточнения]

Я просмотрел Wilson Interval Score и, похоже, это достойное решение, но мне интересно, есть ли другие альтернативы.

Я собираюсь использовать C# 4.0, если это имеет значение.

Редактировать: Добавлено ниже примера;

Давайте предположим, что у меня есть 3 пунктов и несколько человек проголосовали на них в соответствии с таблицей:

Item Up Down 
1  6  1 
2  60  11 
3  100  40 

В этом примере я хотел Пункт 3, чтобы быть первой в списке, пункт 2 секунды и 3 треть. Это приблизительное приближение моих ожиданий.

Пункт 3 имеет наибольшее количество ответов и самое высокое относительное одобрение. Пункт 2 имеет больше ответов, чем пункт 1, несмотря на то, что он имеет более низкое процентное разрешение.

Я пытаюсь перечислить элементы в терминах какой-то относительной метрики и альтротизма, не используя что-то вроде утверждения процента или чистого балла; что-то более сложное.

+0

Это домашнее задание? Это нормально, если это так, просто добавьте домашнюю метку. – developer

+0

Нет, это не домашнее задание. Я учитель (вроде), и я пытаюсь определить способ связать работу с каждым учеником, где на него голосуют друг друга. Его трудно оценить, потому что материал, который делает каждый студент, очень отличается, поэтому я стараюсь, чтобы студент оценил работу, а затем анонимно связал работу с учеником, который выполнял эту работу. Я упростил проблему в своем размещении именно тем, что мне нужно. –

+0

Для меня трудно понять, что именно вы спрашиваете. Я бы рекомендовал перефразировать или добавить дополнительную информацию и детали к вопросу. –

ответ

2

Вы можете внедрить интерфейс IComparable для своего класса. Попробуйте метод CompareTo (T другой). Создайте случай, когда этот obj меньше, чем другой obj и возвращает -1. Если они совпадают, верните 0. Если этот obj больше, чем другой obj return 1.

Когда вы сортируете коллекцию с использованием метода .Sort(), она будет использовать ваши правила.

Вы хотите что-то ищите?

+0

Нет. Я добавил пример моей подсказки. Спасибо за ответ, хотя. –

Смежные вопросы