2011-11-10 5 views
0

나의 이론적 인 데이터 분석 과정에서 나는 학생들이 함께 모은 과목들을위한 동시 발생 행렬을 찾아야 만한다. 프로그래밍 과정이 아니기 때문에 수동으로 요청되었습니다. 문제는 내가 갖고있는 문제가 20 과목 20 명입니다!동시 발생 행렬을 찾는 알고리즘

Octave/Matlab이나 Python과 같은 프로그래밍 언어에 API 기능이 있나요?

공존 행렬을 찾는 알고리즘은 어디에서 찾을 수 있습니까? 나는 알고리즘으로 코드를 변환 할 수있다. 인터넷 검색은 나를 알고리즘으로 유도하지 못했습니다.

내가 가지고있는 데이터의 예 :

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 
........ 
........ 

감사합니다.

+0

공존 행렬이 나타내는 것으로 분명하지 않습니다. [내가 들었던] 동시 발생 매트릭스 (http://en.wikipedia.org/wiki/Co-occurrence_matrix)에서 문제에 대한 거리 매개 변수를 명확하게 정의해야합니다. –

답변

1

간단한 접근법은 스프레드 시트 소프트웨어 (예 : oocalc)를 사용하는 것입니다. 한 학생당 한 줄을 만들고 코스 당 한 줄을 만듭니다. 적절한 셀에 1 (또는 다른 비어 있지 않은 표식)을 넣고 각 열의 표시 수를 계산하려면 합계 (범위) 함수를 사용하십시오.

업데이트 : 위 방법에서는 수동으로 입력 매트릭스를 입력합니다. 이전에 제가 생각한 것은 당신이 만들고 싶었던 것입니다. 그러나, 당신은 "co-occurence matrix"에 의해 다른 것을 의미 할 수도 있습니다. 아무튼, Python, Perl, Awk, Ruby와 같은 언어로 작성된 프로그램은 표시된 양식의 데이터로부터 발생 행렬을 출력하는 소수의 행을 넘지 않습니다. 예를 들어, 아래 긴 펄 프로그램 테이블 대신 매트릭스 인쇄하도록 구성 될 수있다 : 만약 준 데이터 샘플로부터 그대로

#!/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 

주어지면 표준 입력을 통한 데이터.

+0

나는 당신의 방법에 따라 수동으로 발생률 매트릭스를 형성하고 그것을 옥타브에 공급하여 A '* A & co- 발생 매트릭스를 얻었다. perl 코드는 발생 매트릭스를 만드는 과정을 자동화합니까? 나는 그것을 시도 할 것이다. 감사합니다. – Bharat

관련 문제