double calcScore(const vector<vector<int> >& label_group){
double ret=0;
int n=label_group.size();
int sumc=0,sumw=0;
int sum=0;
for(int i=0;i<n;i++){
sum+=label_group[i].size();
}
for(int i=0;i<n;i++){
int correct=0,wrong=0;
int m=label_group[i].size();
for(int j=0;j<m;j++){
if(label_group[i][j]==1)correct+=1;
else wrong+=1;
}
sumc+=correct,sumw+=wrong;
if(correct&&wrong){
double rc=1.0*correct/m,rw=1.0*wrong/m;
ret+=(1.0*m/sum)*(-(rc*log2(rc)+rw*log2(rw)));
}
}
double sumrc=1.0*sumc/sum,sumrw=1.0*sumw/sum;
double sumh=-(sumrc*log2(sumrc)+sumrw*log2(sumrw));
return sumh-ret;//
}
【人工智能】决策树—信息增益
于 2023-04-18 15:47:44 首次发布