verify-main.c

来自「Ripper 分类算法」· C语言 代码 · 共 106 行

C
106
字号
#include <stdio.h>#include "ripper.h"#include "protos.h"#include "mdb.h"/******************************************************************************/char *Program="verify";char *Help_str[] = {    "syntax: verify [options] [stem]",    "   do a consistency check on a dataset",    "",    "options are:",    "  -s:       read from stdinput",    "  -v#:      set verbosity",    NULL};main(argc,argv)int argc;char *argv[];{    vec_t *data;    char *stem;    int use_stdin;    int i,j,o;    ex_count_t p,n;    example_t *exi;    symbol_t *missing_sym;    BOOL *missing_count;    int minclass;    double old_info;        /* defaults */    use_stdin = FALSE;    set_trace_level(SUMM);    while ((o=getopt(argc,argv,"stv:h"))!=EOF) {	switch (o) {	  case 's':	    use_stdin = TRUE;	    break;	  case 'v':	    set_trace_level(atoi(optarg)); 	    break;	  case 'h':	  case '?':	  default: 	    give_help();	    if (o=='h') exit(0);	    else fatal("option not implemented");	}    }    if (optind<argc) {	stem = argv[optind++];	ld_names(add_ext(stem,".names"));	if (use_stdin) data = ld_data(NULL);	else data = ld_data(add_ext(stem,".data"));    } else {	data = ld_data(NULL);    }    if (optind<argc) {	warning("not all arguments were used: %s ...",argv[optind]);    }    if (!data || vmax(data)==0) fatal("no examples");    trace(SUMM) {	printf("= %d examples %d features %d values\n", 	       vmax(data),n_fields(),n_symbolic_values());	/* count class distribution */	printf("\n= num\t  pct\tclass\n");	for (i=0; i<vmax(Classes); i++) {	    count_class_freq(vref(atom_t,Classes,i)->nom,data,&p,&n);	    printf("%6.2f\t%6.2f\t",p,(p*100.0)/(p+n));	    print_atom(vref(atom_t,Classes,i));	    printf("\n");	}	fflush(stdout);    }    trace(LONG) {	missing_count = newmem(n_fields(),int); 	for (i=0; i<vmax(data); i++) {	    exi = vref(example_t,data,i);	    for (j=0; j<n_fields(); j++) {		if (vref(aval_t,exi->inst,j)->kind == MISSING_VALUE) {		    missing_count[j]++;		}	    }	}	printf("\n= attrib             type          #miss  #values\n");	for (i=0; i<n_fields(); i++) {	    printf("%-20.20s %6.6s\t",		   field_name(i),		   symbolic_field(i)? "symbol":(set_field(i)? "set" : "number"));	    if (missing_count[i]==0) printf("%6s","no");	    else printf("%6d",missing_count[i]);	    printf("%8d",n_different_field_values(i,data));	    printf("\n");	}/*for i*/    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?