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 首次发布
该代码段定义了一个doublecalcScore函数,用于处理二维整数向量label_group。它计算每个子组的正确标签(correct)和错误标签(wrong),然后根据这些比例计算信息熵。最后,函数返回所有子组的平均准确度与总体信息熵之差。
摘要由CSDN通过智能技术生成