?? sbg.c~.txt
字號:
/***************************************************************************** The algorithm implemented here can be found in the book titled ** FEATURE SELECTION FOR KNOWLEDGE DISCOVERY by Huan Liu & ** Hiroshi Motoda published by Kluwer in 1998, ISBN 0-7923-8198-X ** ** The program developed by: ** ** Md. Farhad Hussain ** DISCS, NUS ** Kent Ridge, S'pore 119260 ** email: farhad@iscs.nus.edu.sg ** liuh@iscs.nus.edu.sg ******************************************************************************/#include "header.h"/*----------------------------Global Definitions-----------------------------*/long *S, *F, *L;long indx;/*-------------------------External Definitions------------------------------*/extern void ReadData(char*);extern long COL, ROW;/*---------------------------------------------------------------------------*/void InitSBG(){long i; indx = 0; S = (long*)malloc(sizeof(long) * (COL - 1)); SUCCESS(S); F = (long*)malloc(sizeof(long) * (COL - 1)); SUCCESS(F); L = (long*)malloc(sizeof(long) * (COL - 1)); SUCCESS(L); for( i = 0; i < COL - 1; i++ ){ S[i] = i; F[i] = EMPTY; L[i] = EMPTY; }}/*---------------------------------------------------------------------------*/void ConsiderRemovingFeature(long feature, char *datafile){char command[256];long i; system("rm -f Expr.data"); sprintf(command,"cut -d, -f"); for(i = 0; i < COL - 1; i++ ){ if( S[i] != feature && S[i] != EMPTY ) sprintf(command,"%s%ld,", command, S[i]+1); } sprintf(command, "%s%ld %s > Expr.data", command, COL, datafile); system(command);}/*---------------------------------------------------------------------------*/float CalculateError(){FILE *fp;char buffer[256]; system("rm -f nbc.result"); system("echo Expr.data Expr.data | nbc > nbc.result"); fp = fopen("nbc.result","r"); fgets(buffer, 256, fp); while( strstr(buffer, "%") == NULL ) fgets(buffer, 256, fp); fclose(fp); buffer[strlen(buffer) - 1] = 0; return atof( strstr(buffer, "=") + 1);}/*---------------------------------------------------------------------------*/long RemoveNextFeature(){long i; for( i = 0; i < COL - 1; i++ ){ if( F[i] == EMPTY ){ F[i] = i; return i; } } return EMPTY; }/*---------------------------------------------------------------------------*/void RemoveFeature(long feature){long i; for( i = 0; S[i] != feature; i++ ); S[i] = EMPTY; printf("\n"); for( i = 0; i < COL - 1; i++ ){ if( S[i] == EMPTY ) F[i] = i; else{ printf("A%ld ", S[i]); F[i] = EMPTY; } } L[indx++] = feature;}/*---------------------------------------------------------------------------*/void RunSBG(char* datafile){long i, BestFeature, feature;float error, tempError; for( i = 0; i < COL - 2; i ++ ){ error = 0; while((feature = RemoveNextFeature()) != EMPTY){ ConsiderRemovingFeature( feature, datafile); if( (tempError = CalculateError()) > error ){ error = tempError; BestFeature = feature; } } RemoveFeature( BestFeature ); } printf("\n\n"); for( i = 0; i < COL - 2; i++ ) printf("A%ld ", L[i]); for( i = 0; S[i] == EMPTY; i++ ); printf("A%ld", i);}/*---------------------------------------------------------------------------*/main(int argc, char* argv[]){ ReadData(argv[1]); InitSBG(); RunSBG(argv[1]); printf("\n");}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -