Алгоритм поиска матрицы совпадений - PullRequest
0 голосов
/ 10 ноября 2011

В моем курсе теоретического анализа данных я должен найти матрицу совместного использования для курсов, которые были собраны студентами.Меня попросили сделать это вручную, так как это не курс программирования.Проблема в том, что у меня есть 20 курсов и 20 студентов!

Есть ли такой язык программирования, как Octave / Matlab или Python, в котором есть функции API для этого?

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

Пример данных, которые у меня есть:

IT  421 540 531 582 
IT  549 561 528 578
IT  571 532 563 543

IT  421 561 571 519
IT  540 563 578 411
IT  411 421 581 578

IT  421 540 561 411
IT  541 548 528 546
IT  411 422 540 571
........
........

Спасибо.

1 Ответ

1 голос
/ 10 ноября 2011

Простой подход заключается в использовании программного обеспечения для работы с электронными таблицами (например, oocalc).Составьте по одной строке на каждого учащегося и одну колонку на курс;поместите 1 (или другую непустую метку) в соответствующие ячейки и используйте функцию суммы (диапазона) для подсчета количества меток в каждом столбце.

Обновление : в приведенном выше подходе один вручнуювводит матрицу заболеваемости;что я ранее предполагал, что вы хотели создать.Тем не менее, вы можете подразумевать что-то еще под «матрицей совместного вхождения».В любом случае, программы на таких языках, как Python, Perl, Awk, Ruby, займут всего несколько строк для вывода матрицы инцидентности из данных в показанной форме.Например, длинная программа на Perl, приведенная ниже, может быть адаптирована для печати матрицы вместо таблицы:

  #!/usr/bin/perl
  for (<>) {             # Read all data lines
      ++$i;              # compute student #
      chomp $_;          # Remove newlines
      @s = split (/  */);
      foreach (@s) {     # Add student to each course
          $c{$_} .= " $i"
      }
  }
  foreach $course (sort keys %c) {
      print "Course $course : $c{$course}\n"
  }
  __END__ 

Как есть, из предоставленной вами выборки данных она выдает следующие данные:

  Course 411 :  6 7 9 11
  Course 421 :  1 5 7 9
  Course 422 :  11
  Course 519 :  5
  Course 528 :  2 10
  Course 531 :  1
  Course 532 :  3
  Course 540 :  1 6 9 11
  ...
  Course 582 :  1
  Course IT :  1 2 3 5 6 7 9 10 11

при передаче данных через стандартный ввод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...