메뉴 건너뛰기

pds

expectation maximazation

박영식2008.09.20 11:59조회 수 8617댓글 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 9499
51 swf를 gif나 avi로 변환하는 프로그램 박영식 2009.06.18 9432
50 [ppt] MS PowerPoint2007 새 창으로 작업하기1 박영식 2009.06.18 12287
49 [프로그램] avi, jpg, gif를 gif, swf, avi 로 변환하는 프로그램 박영식 2009.06.18 16036
48 [논문] 온라인에서 웹캠을 통한 영상 전송 및 처리 시스템에 관한 연구 박영식 2009.06.11 12648
47 [문서] Clustering Algorithm - SOM, Grid-based, Location-based 박영식 2009.05.25 9472
46 [문서] Diskless Cluster System에서 snort를 이용한 Multi NIDS 구현에 관한 연구 박영식 2009.05.25 13599
45 [사진] 마라톤 사진 박영식 2009.05.15 8918
44 [PPT] 파워포인트 PPA - liveweb 박영식 2009.04.24 8987
43 [PPT] 파워포인트 PPA - 선택 슬라이드 저장, 목차화, 넘버링 박영식 2009.04.24 11470
42 Vertex algebras, Kac-Moody algebras, and the Monster 박영식 2008.12.06 8839
41 [플래시] download flash player9 박영식 2008.11.06 8850
40 [논문] 컴퓨터 모니터 발생 전자파 차단에 미치는 선인장의 효과 유무 박영식 2008.10.22 11444
39 어절빈도 계산 프로프램 소스 박영식 2008.09.22 11081
38 음절빈도 계산 프로프램 소스2 박영식 2008.09.22 12384
expectation maximazation 박영식 2008.09.20 8617
36 위치정보사업_및_기반서비스사업자_현황 박영식 2008.08.17 8944
35 Windows vista sidebar에 IBM DW RSS 넣기 박영식 2008.06.22 8531
34 sothink swf decompiler 3.3 crack2 박영식 2008.06.06 16469
33 혈액관리법시행규칙개정_보도자료(최종) 박영식 2008.04.09 8616
첨부 (1)
20022191_yeongsik_pak.tar.gz
2.5KB / Download 21
위로