source: proiecte/Parallel-DT/R8/Src/types.i @ 24

Last change on this file since 24 was 24, checked in by (none), 14 years ago

blabla

File size: 3.0 KB
Line 
1/*************************************************************************/
2/*                                                                       */
3/*              Type definitions for C4.5                                */
4/*              -------------------------                                */
5/*                                                                       */
6/*************************************************************************/
7
8
9typedef  char   Boolean, *String, *Set;
10
11typedef  int    ItemNo;         /* data item number */
12typedef  float  ItemCount;      /* count of (partial) items */
13
14typedef  short  ClassNo,        /* class number, 0..MaxClass */
15                DiscrValue;     /* discrete attribute value (0 = ?) */
16typedef  short  Attribute;      /* attribute number, 0..MaxAtt */
17
18typedef  union  _attribute_value
19         {
20            DiscrValue  _discr_val;
21            float       _cont_val;
22         }
23                AttValue, *Description;
24
25#define  CVal(Case,Attribute)   Case[Attribute]._cont_val
26#define  DVal(Case,Attribute)   Case[Attribute]._discr_val
27#define  Class(Case)            Case[MaxAtt+1]._discr_val
28
29#define  Unknown  -999          /* unknown value for continuous attribute */
30
31
32#define  BrDiscr        1       /* node types:  branch */
33#define  ThreshContin   2       /*              threshold cut */
34#define  BrSubset       3       /*              subset test */
35
36typedef  struct _tree_record *Tree;
37typedef  struct _tree_record
38         {
39            short       NodeType;       /* 0=leaf 1=branch 2=cut 3=subset */
40            ClassNo     Leaf;           /* most frequent class at this node */
41            ItemCount   Items,          /* no of items at this node */
42                        *ClassDist,     /* class distribution of items */
43                        Errors;         /* no of errors at this node */
44            Attribute   Tested;         /* attribute referenced in test */
45            short       Forks;          /* number of branches at this node */
46            float       Cut,            /* threshold for continuous attribute */
47                        Lower,          /* lower limit of soft threshold */
48                        Upper;          /* upper limit ditto */
49            Set         *Subset;        /* subsets of discrete values  */
50            Tree        *Branch;        /* Branch[x] = (sub)tree for outcome x */
51         }
52                TreeRec;
53
54#define  IGNORE         1       /* special attribute status: do not use */
55#define  DISCRETE       2       /* ditto: collect values as data read */
56
57
58typedef short   RuleNo;                 /* rule number */
59
60
61typedef struct TestRec *Test;
62
63struct TestRec
64       {
65           short        NodeType;       /* test type (see tree nodes) */
66           Attribute    Tested;         /* attribute tested */
67           short        Forks;          /* possible branches */
68           float        Cut;            /* threshold (if relevant) */
69           Set          *Subset;        /* subset (if relevant) */
70       };
71
72
73typedef struct CondRec *Condition;
74
75struct CondRec
76       {
77           Test         CondTest;       /* test part of condition */
78           short        TestValue;      /* specified outcome of test */
79       };
80
81
82typedef struct ProdRuleRec PR;
83
84struct ProdRuleRec
85       {
86           short        Size;           /* number of conditions */
87           Condition    *Lhs;           /* conditions themselves */
88           ClassNo      Rhs;            /* class given by rule */
89           float        Error,          /* estimated error rate */
90                        Bits;           /* bits to encode rule */
91           ItemNo       Used,           /* times rule used */
92                        Incorrect;      /* times rule incorrect */
93       };
94
95
96typedef struct RuleSetRec RuleSet;
97
98struct RuleSetRec
99       {
100           PR           *SRule;         /* rules */
101           RuleNo       SNRules,        /* number of rules */
102                        *SRuleIndex;    /* ranking of rules */
103           ClassNo      SDefaultClass;  /* default class for this ruleset */
104    };
Note: See TracBrowser for help on using the repository browser.