메뉴 건너뛰기

pds

expectation maximazation

박영식2008.09.20 11:59조회 수 8628댓글 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 박영식)

댓글 달기

번호 제목 글쓴이 날짜 조회 수
52 [fla] flash lite1.1 로 만든 SKY용 시계플래시(240X370) 1 박영식 2009.06.18 9519
51 swf를 gif나 avi로 변환하는 프로그램 박영식 2009.06.18 9450
50 [ppt] MS PowerPoint2007 새 창으로 작업하기1 박영식 2009.06.18 12304
49 [프로그램] avi, jpg, gif를 gif, swf, avi 로 변환하는 프로그램 박영식 2009.06.18 16044
48 [논문] 온라인에서 웹캠을 통한 영상 전송 및 처리 시스템에 관한 연구 박영식 2009.06.11 12662
47 [문서] Clustering Algorithm - SOM, Grid-based, Location-based 박영식 2009.05.25 9484
46 [문서] Diskless Cluster System에서 snort를 이용한 Multi NIDS 구현에 관한 연구 박영식 2009.05.25 13609
45 [사진] 마라톤 사진 박영식 2009.05.15 8930
44 [PPT] 파워포인트 PPA - liveweb 박영식 2009.04.24 8998
43 [PPT] 파워포인트 PPA - 선택 슬라이드 저장, 목차화, 넘버링 박영식 2009.04.24 11502
42 Vertex algebras, Kac-Moody algebras, and the Monster 박영식 2008.12.06 8857
41 [플래시] download flash player9 박영식 2008.11.06 8862
40 [논문] 컴퓨터 모니터 발생 전자파 차단에 미치는 선인장의 효과 유무 박영식 2008.10.22 11464
39 어절빈도 계산 프로프램 소스 박영식 2008.09.22 11095
38 음절빈도 계산 프로프램 소스2 박영식 2008.09.22 12399
expectation maximazation 박영식 2008.09.20 8628
36 위치정보사업_및_기반서비스사업자_현황 박영식 2008.08.17 8958
35 Windows vista sidebar에 IBM DW RSS 넣기 박영식 2008.06.22 8545
34 sothink swf decompiler 3.3 crack2 박영식 2008.06.06 16495
33 혈액관리법시행규칙개정_보도자료(최종) 박영식 2008.04.09 8626
첨부 (1)
20022191_yeongsik_pak.tar.gz
2.5KB / Download 27
위로