메뉴 건너뛰기

pds

expectation maximazation

박영식2008.09.20 11:59조회 수 8910댓글 0

  • 1
    • 글자 크기
#include <stdio.h>

char    input_data[5][100] =
{   "HTTTHHTHTH",
    "HHHHTHHHHH",
    "HTHHHHHTHH",
    "HTHTTTHHTT",
    "THHHTHHHTH"};



int func_E_STEP( float possi_A, float possi_B, float *new_posii_A, float *new_posii_B)
{

    float   curValue_A = 0;
    float   curValue_B = 0;
    float   curPercent_A = 0;
    float   curPercent_B = 0;
    float   countHead_A = 0;
    float   countTail_A = 0;
    float   countHead_B = 0;
    float   countTail_B = 0;
    int     i, j;

    float   real_Head, real_Tail;

    for( i = 0 ; i < 5 ; i++ )
    {
        curValue_A = curValue_B = 1;
        real_Head = real_Tail = 0;

        for( j = 0 ; j < 10 ; j++ )
        {
            if( input_data[i][j] == 'H' )
            {
                curValue_A *= possi_A;
            }
            else
            {
                curValue_A *= (1-possi_A);
            }
        }

        for( j = 0 ; j < 10 ; j++ )
        {
            if( input_data[i][j] == 'H' )
            {
                curValue_B *= possi_B;
            }
            else
            {
                curValue_B *= (1-possi_B);
            }
        }

        for( j = 0 ; j < 10 ; j++ )

        {
            if( input_data[i][j] == 'H' )
            {
                real_Head++;
            }
            else
            {
                real_Tail++;
            }
        }

        curPercent_A = curValue_A / (curValue_A + curValue_B);
        curPercent_B = curValue_B / (curValue_A + curValue_B);


        countHead_A += curPercent_A * 10 * real_Head / 10;
        countTail_A += curPercent_A * 10 * real_Tail / 10;

        countHead_B += curPercent_B * 10 * real_Head / 10;
        countTail_B += curPercent_B * 10 * real_Tail / 10;

    }


    *new_posii_A = countHead_A / ( countHead_A + countTail_A );
    *new_posii_B = countHead_B / ( countHead_B + countTail_B );

    return 0;
}


int func_em_select( float possi_A, float possi_B )
{

    float   curValue_A = 0;
    float   curValue_B = 0;
    float   curPercent_A = 0;
    float   curPercent_B = 0;
    int     i, j;


    for( i = 0 ; i < 5 ; i++ )
    {
        curValue_A = curValue_B = 1;

        for( j = 0 ; j < 10 ; j++ )
        {
            if( input_data[i][j] == 'H' )
            {
                curValue_A *= possi_A;
            }
            else
            {
                curValue_A *= (1-possi_A);
            }
        }

        for( j = 0 ; j < 10 ; j++ )
        {
            if( input_data[i][j] == 'H' )
            {
                curValue_B *= possi_B;
            }
            else
            {
                curValue_B *= (1-possi_B);
            }
        }

        curPercent_A = curValue_A / (curValue_A + curValue_B);
        curPercent_B = curValue_B / (curValue_A + curValue_B);


        if( curPercent_A > curPercent_B )
        {
            fprintf( stdout, "%d:%s is A(%lf)n", i, input_data[i], curPercent_A );
        }
        else
        {
            fprintf( stdout, "%d:%s is B(%lf)n", i, input_data[i], curPercent_B );
        }

    }

    return 0;
}



int main()
{


    float   possi_A = 0.60;
    float   possi_B = 0.50;
    float   new_possi_A = 0;
    float   new_possi_B = 0;

    int     i;


    for( i = 0 ; i < 10 ; i++ )
    {

        func_E_STEP( possi_A, possi_B, &new_possi_A, &new_possi_B );


        fprintf( stdout, "(%d) A : %lf, B : %lfn", i,  new_possi_A, new_possi_B );

        // M STEP
        possi_A = new_possi_A;
        possi_B = new_possi_B;

    }


    func_em_select( possi_A, possi_B );



    return 0;
}
박영식 (비회원)
  • 1
    • 글자 크기
음절빈도 계산 프로프램 소스 (by 박영식) 위치정보사업_및_기반서비스사업자_현황 (by 박영식)

댓글 달기

번호 제목 글쓴이 날짜 조회 수
54 [SW] 사용 중인 프로세서 죽이기 박영식 2009.06.20 8897
53 [fla] flash lite1.1 로 만든 SKY용 시계플래시(240X370) 2 박영식 2009.06.18 8768
52 [fla] flash lite1.1 로 만든 SKY용 시계플래시(240X370) 1 박영식 2009.06.18 9756
51 swf를 gif나 avi로 변환하는 프로그램 박영식 2009.06.18 9750
50 [ppt] MS PowerPoint2007 새 창으로 작업하기1 박영식 2009.06.18 12613
49 [프로그램] avi, jpg, gif를 gif, swf, avi 로 변환하는 프로그램 박영식 2009.06.18 16350
48 [논문] 온라인에서 웹캠을 통한 영상 전송 및 처리 시스템에 관한 연구 박영식 2009.06.11 12943
47 [문서] Clustering Algorithm - SOM, Grid-based, Location-based 박영식 2009.05.25 9730
46 [문서] Diskless Cluster System에서 snort를 이용한 Multi NIDS 구현에 관한 연구 박영식 2009.05.25 13867
45 [사진] 마라톤 사진 박영식 2009.05.15 9195
44 [PPT] 파워포인트 PPA - liveweb 박영식 2009.04.24 9210
43 [PPT] 파워포인트 PPA - 선택 슬라이드 저장, 목차화, 넘버링 박영식 2009.04.24 11754
42 Vertex algebras, Kac-Moody algebras, and the Monster 박영식 2008.12.06 9097
41 [플래시] download flash player9 박영식 2008.11.06 9105
40 [논문] 컴퓨터 모니터 발생 전자파 차단에 미치는 선인장의 효과 유무 박영식 2008.10.22 11692
39 어절빈도 계산 프로프램 소스 박영식 2008.09.22 11305
38 음절빈도 계산 프로프램 소스2 박영식 2008.09.22 12712
expectation maximazation 박영식 2008.09.20 8910
36 위치정보사업_및_기반서비스사업자_현황 박영식 2008.08.17 9195
35 Windows vista sidebar에 IBM DW RSS 넣기 박영식 2008.06.22 8771
첨부 (1)
20022191_yeongsik_pak.tar.gz
2.5KB / Download 40
위로