关注
第一题,信息增益代码 #include <bits/stdc++.h>
#include <map>
#include <math.h>
using namespace std;
typedef struct data{
int clas[2];
}data;
int n;
map<int,data> mp;
int classify[2] = {0};
double cpt_entroy(int m[]){
int nu = m[0] + m[1];
double first = 0;
double second = 0;
if(m[0] != 0){
double tmp = 1.0 * m[0] / nu;
first = -1 * tmp * log(tmp) / log(2);
}
if(m[1] != 0){
double tmp = 1.0 * m[1] / nu;
second = -1 * tmp * log(tmp) / log(2);
}
double entroy = 1.0 * nu / n * (first + second);
return entroy;
}
int main() {
int a, b;
char indep;
cin >> n;
for(int i=0; i<n; ++i){
cin>>a>>indep>>b;
classify[b]++;
if(mp.find(a) == mp.end())
mp[a].clas[b] = 0;
mp[a].clas[b] += 1;
}
double gain_all = cpt_entroy(classify);
double ans = gain_all;
map<int, data>::iterator it;
for(it = mp.begin(); it != mp.end(); ++it) {
double pro = cpt_entroy(it->second.clas);
ans -= pro;
}
int dans = (ans + 0.005) * 100;
double res = double(dans) / 100;
printf("%.2f\n",res);
return 0;
}
查看原帖
点赞 2
相关推荐
牛客热帖
更多
正在热议
更多
# 你现在会用到哪些AI技能? #
6154次浏览 85人参与
# 蚂蚁求职进展汇总 #
123190次浏览 1163人参与
# 智慧芽求职进展汇总 #
1796次浏览 5人参与
# 秋招踩过的“雷”,希望你别再踩 #
85158次浏览 1088人参与
# 我对___祛魅了 #
132364次浏览 736人参与
# 大厂VS公务员你怎么选 #
27791次浏览 397人参与
# 未岚大陆求职进展汇总 #
7479次浏览 84人参与
# 你还有多少年退休? #
26820次浏览 192人参与
# 我的求职进度条 #
90846次浏览 1197人参与
# 实习在多还是在精 #
35062次浏览 243人参与
# 实习下班不想学习,正常吗? #
20165次浏览 174人参与
# 小马智行求职进展汇总 #
13640次浏览 50人参与
# 你的房租占工资的比例是多少? #
64883次浏览 798人参与
# 你见过哪些工贼行为 #
16702次浏览 91人参与
# 金蝶求职进展汇总 #
53981次浏览 263人参与
# 总结:哪家公司面试体验感最好 #
70236次浏览 416人参与
# 校招谈薪一定要知道的事 #
13400次浏览 115人参与
# 找工作中的小确幸 #
27233次浏览 280人参与
# 顺丰求职进展汇总 #
63467次浏览 314人参与
# 非技术岗投递进展 #
158010次浏览 1314人参与
# 反问环节如何提问 #
115462次浏览 2468人参与
# 你觉得材料多少算高薪 #
26204次浏览 159人参与