메뉴 건너뛰기

pds

expectation maximazation

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

댓글 달기

번호 제목 글쓴이 날짜 조회 수
53 [fla] flash lite1.1 로 만든 SKY용 시계플래시(240X370) 2 박영식 2009.06.18 8676
52 [fla] flash lite1.1 로 만든 SKY용 시계플래시(240X370) 1 박영식 2009.06.18 9676
51 swf를 gif나 avi로 변환하는 프로그램 박영식 2009.06.18 9615
50 [ppt] MS PowerPoint2007 새 창으로 작업하기1 박영식 2009.06.18 12496
49 [프로그램] avi, jpg, gif를 gif, swf, avi 로 변환하는 프로그램 박영식 2009.06.18 16214
48 [논문] 온라인에서 웹캠을 통한 영상 전송 및 처리 시스템에 관한 연구 박영식 2009.06.11 12844
47 [문서] Clustering Algorithm - SOM, Grid-based, Location-based 박영식 2009.05.25 9629
46 [문서] Diskless Cluster System에서 snort를 이용한 Multi NIDS 구현에 관한 연구 박영식 2009.05.25 13775
45 [사진] 마라톤 사진 박영식 2009.05.15 9076
44 [PPT] 파워포인트 PPA - liveweb 박영식 2009.04.24 9134
43 [PPT] 파워포인트 PPA - 선택 슬라이드 저장, 목차화, 넘버링 박영식 2009.04.24 11635
42 Vertex algebras, Kac-Moody algebras, and the Monster 박영식 2008.12.06 9009
41 [플래시] download flash player9 박영식 2008.11.06 8992
40 [논문] 컴퓨터 모니터 발생 전자파 차단에 미치는 선인장의 효과 유무 박영식 2008.10.22 11605
39 어절빈도 계산 프로프램 소스 박영식 2008.09.22 11215
38 음절빈도 계산 프로프램 소스2 박영식 2008.09.22 12576
expectation maximazation 박영식 2008.09.20 8784
36 위치정보사업_및_기반서비스사업자_현황 박영식 2008.08.17 9094
35 Windows vista sidebar에 IBM DW RSS 넣기 박영식 2008.06.22 8677
34 sothink swf decompiler 3.3 crack2 박영식 2008.06.06 16670
첨부 (1)
20022191_yeongsik_pak.tar.gz
2.5KB / Download 31
위로