Changeset 84
- Timestamp:
- Jan 9, 2010, 6:45:20 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
proiecte/Parallel-DT/R8/Src/discr.c
r68 r84 48 48 } 49 49 50 EvalDiscreteAtt_Discr(Att, Fp, Lp, Items, Freq , ValFreq, UnknownRate)50 EvalDiscreteAtt_Discr(Att, Fp, Lp, Items, Freq_discr, ValFreq_discr, UnknownRate_discr) 51 51 /* --------------- */ 52 Attribute Att;ItemNo Fp, Lp;ItemCount Items; ItemCount** Freq ; ItemCount* ValFreq; float* UnknownRate; {52 Attribute Att;ItemNo Fp, Lp;ItemCount Items; ItemCount** Freq_discr; ItemCount* ValFreq_discr; float* UnknownRate_discr; { 53 53 ItemCount KnownItems; 54 54 float DiscrKnownBaseInfo_Discr(), ComputeGain_Discr(), TotalInfo(); 55 55 56 ComputeFrequencies_Discr(Att, Fp, Lp, Freq , ValFreq, UnknownRate);57 58 KnownItems = Items - ValFreq [0];56 ComputeFrequencies_Discr(Att, Fp, Lp, Freq_discr, ValFreq_discr, UnknownRate_discr); 57 58 KnownItems = Items - ValFreq_discr[0]; 59 59 60 60 /* Special case when no known values of the attribute */ 61 61 62 if (Items <= ValFreq [0]) {62 if (Items <= ValFreq_discr[0]) { 63 63 Verbosity(2) 64 64 printf("\tAtt %s: no known values\n", AttName[Att]); … … 69 69 } 70 70 71 Gain[Att] = ComputeGain_Discr(DiscrKnownBaseInfo_Discr(KnownItems, MaxAttVal[Att], Freq ),72 UnknownRate [Att], MaxAttVal[Att], KnownItems, Freq, ValFreq);73 Info[Att] = TotalInfo(ValFreq , 0, MaxAttVal[Att]) / Items;71 Gain[Att] = ComputeGain_Discr(DiscrKnownBaseInfo_Discr(KnownItems, MaxAttVal[Att], Freq_discr), 72 UnknownRate_discr[Att], MaxAttVal[Att], KnownItems, Freq_discr, ValFreq_discr); 73 Info[Att] = TotalInfo(ValFreq_discr, 0, MaxAttVal[Att]) / Items; 74 74 75 75 Verbosity(2) { 76 76 printf("\tAtt %s", AttName[Att]); 77 77 Verbosity(3) 78 PrintDistribution_Discr(Att, MaxAttVal[Att], true, Freq );78 PrintDistribution_Discr(Att, MaxAttVal[Att], true, Freq_discr); 79 79 printf("\tinf %.3f, gain %.3f\n", Info[Att], Gain[Att]); 80 80 } … … 124 124 } 125 125 126 ComputeFrequencies_Discr(Att, Fp, Lp, Freq , ValFreq, UnknownRate)126 ComputeFrequencies_Discr(Att, Fp, Lp, Freq_discr, ValFreq_discr, UnknownRate_discr) 127 127 /* ------------------ */ 128 Attribute Att;ItemNo Fp, Lp; ItemCount** Freq ; ItemCount* ValFreq; float* UnknownRate;{128 Attribute Att;ItemNo Fp, Lp; ItemCount** Freq_discr; ItemCount* ValFreq_discr; float* UnknownRate_discr;{ 129 129 Description Case; 130 130 ClassNo c; … … 133 133 ItemNo p; 134 134 135 ResetFreq (MaxAttVal[Att], Freq, ValFreq);135 ResetFreq_discr(MaxAttVal[Att], Freq_discr, ValFreq_discr); 136 136 137 137 /* Determine the frequency of each class amongst cases … … 140 140 ForEach(p, Fp, Lp) { 141 141 Case = Item[p]; 142 Freq [DVal(Case,Att)][Class(Case)] += Weight[p];142 Freq_discr[DVal(Case,Att)][Class(Case)] += Weight[p]; 143 143 } 144 144 … … 148 148 ForEach(v, 0, MaxAttVal[Att]) { 149 149 ForEach(c, 0, MaxClass) { 150 ValFreq [v] += Freq[v][c];150 ValFreq_discr[v] += Freq_discr[v][c]; 151 151 } 152 152 } … … 154 154 /* Set the rate of unknown values of the attribute */ 155 155 156 UnknownRate [Att] = ValFreq[0] / CountItems(Fp, Lp);156 UnknownRate_discr[Att] = ValFreq_discr[0] / CountItems(Fp, Lp); 157 157 } 158 158 /*************************************************************************/ … … 183 183 } 184 184 185 float DiscrKnownBaseInfo_Discr(KnownItems, MaxVal, Freq )185 float DiscrKnownBaseInfo_Discr(KnownItems, MaxVal, Freq_discr) 186 186 /* ------------------ */ 187 DiscrValue MaxVal;ItemCount KnownItems; ItemCount** Freq ;{187 DiscrValue MaxVal;ItemCount KnownItems; ItemCount** Freq_discr;{ 188 188 ClassNo c; 189 189 ItemCount ClassCount; … … 194 194 ClassCount = 0; 195 195 ForEach(v, 1, MaxVal) { 196 ClassCount += Freq [v][c];196 ClassCount += Freq_discr[v][c]; 197 197 } 198 198 Sum += ClassCount * Log(ClassCount);
Note: See TracChangeset
for help on using the changeset viewer.