📄 c4.5rules.c
字号:
/*************************************************************************/
/* */
/* Main routine for constructing sets of production rules from trees */
/* ----------------------------------------------------------------- */
/* */
/*************************************************************************/
#include "defns.i"
#include "types.i"
/* External data. Note: uncommented variables have the same meaning
as for decision trees */
short MaxAtt, MaxClass, MaxDiscrVal;
ItemNo MaxItem;
Description *Item;
DiscrValue *MaxAttVal;
char *SpecialStatus;
String *ClassName,
*AttName,
**AttValName,
FileName = "DF";
short VERBOSITY = 0,
TRIALS;
Boolean UNSEENS = false,
SIGTEST = false, /* use significance test in rule pruning */
SIMANNEAL = false; /* use simulated annealing */
float SIGTHRESH = 0.05,
CF = 0.25,
REDUNDANCY = 1.0; /* factor that guesstimates the
amount of redundancy and
irrelevance in the attributes */
PR *Rule; /* current rules */
RuleNo NRules = 0, /* number of current rules */
*RuleIndex; /* rule index */
short RuleSpace = 0; /* space allocated for rules */
ClassNo DefaultClass; /* current default class */
RuleSet *PRSet; /* sets of rulesets */
float AttTestBits, /* bits to encode tested att */
*BranchBits; /* ditto attribute value */
main(Argc, Argv)
/* ---- */
int Argc;
char *Argv[];
{
int o;
extern char *optarg;
extern int optind;
Boolean FirstTime=true;
PrintHeader("rule generator");
/* Process options */
while ( (o = getopt(Argc, Argv, "f:uv:c:r:F:a")) != EOF )
{
if ( FirstTime )
{
printf("\n Options:\n");
FirstTime = false;
}
switch (o)
{
case 'f': FileName = optarg;
printf("\tFile stem <%s>\n", FileName);
break;
case 'u': UNSEENS = true;
printf("\tRulesets evaluated on unseen cases\n");
break;
case 'v': VERBOSITY = atoi(optarg);
printf("\tVerbosity level %d\n", VERBOSITY);
break;
case 'c': CF = atof(optarg);
printf("\tPruning confidence level %g%%\n", CF);
Check(CF, 0, 100);
CF /= 100;
break;
case 'r': REDUNDANCY = atof(optarg);
printf("\tRedundancy factor %g\n", REDUNDANCY);
Check(REDUNDANCY, 0, 10000);
break;
case 'F': SIGTHRESH = atof(optarg);
printf("\tSignificance test in rule pruning, ");
printf("threshold %g%%\n", SIGTHRESH);
Check(SIGTHRESH, 0, 100);
SIGTHRESH /= 100;
SIGTEST = true;
break;
case 'a': SIMANNEAL = true;
printf("\tSimulated annealing for selecting rules\n");
break;
case '?': printf("unrecognised option\n");
exit(1);
}
}
/* Initialise */
GetNames();
GetData(".data");
printf("\nRead %d cases (%d attributes) from %s\n",
MaxItem+1, MaxAtt+1, FileName);
GenerateLogs();
/* Construct rules */
GenerateRules();
/* Evaluations */
printf("\n\nEvaluation on training data (%d items):\n", MaxItem+1);
EvaluateRulesets(true);
/* Save current ruleset */
SaveRules();
if ( UNSEENS )
{
GetData(".test");
printf("\nEvaluation on test data (%d items):\n", MaxItem+1);
EvaluateRulesets(false);
}
exit(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -