⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sbg.c~.txt

📁 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 + -