/*************************/ /* */ /* ko_label.c */ /* */ /* Alan Dix */ /* */ /* March 1993 */ /* */ /*************************/ #include "kohonen.h" char *use = "ko_label datafile codefile hi lo\n\ data - file containing training data\n\ code - file containing network (code book)\n\ hi - minimum proportion to label\n\ lo - maximum proportion for other labels"; void usage() { fprintf(stderr,"usage: %s\n",use); exit(1); } main(argc,argv) int argc; char **argv; { int ac, i; char **av; data_p data; label_p labs; code_p code, stats; double hi, lo; ac = argc-1; av = argv+1; if ( ac != 4 ) usage(); data = read_data_file("data file",av[0]); code = read_code_file("code book",av[1]); hi = atof(av[2]); lo = atof(av[3]); if ( data->wid != code->wid ) { fprintf(stderr,"incompatable data, widths do not agree\n"); exit(1); } fprintf(stderr,"label kohonen network\n"); fprintf(stderr," data = %s\n",av[0]); fprintf(stderr," code = %s\n",av[1]); fprintf(stderr," hi = %lf\n",hi); fprintf(stderr," lo = %lf\n",lo); fprintf(stderr,"----\n"); labs = gen_label_list(data); if ( ! labs ) { fprintf(stderr,"error whilst generating label list\n"); exit(1); } stats = label_code_stats(data,labs,code); if ( ! stats ) { fprintf(stderr,"error whilst labeling\n"); exit(1); } (void)label_code(stats,labs,code,hi,lo); write_code(stdout,code); fprintf(stderr,"---- labels ----\n"); fprintf(stderr," %2d %s\n",0,"**unclassified**"); for (i=1; inos; i++ ) { fprintf(stderr," %2d %s\n",i,labs->labels[i]); } fprintf(stderr,"---- labeling statistics ----\n"); write_code(stderr,stats); exit(0); }