关注
第一题,信息增益代码 #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
相关推荐
11-10 08:05
河北师范大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习简历求拷打 #
6568次浏览 92人参与
# 担心入职之后被发现很菜怎么办 #
264891次浏览 1121人参与
# 秋招被挂春招仍然能投的公司 #
5216次浏览 87人参与
# mt对你说过最有启发的一句话 #
30618次浏览 375人参与
# 什么是优秀的实习经历 #
7013次浏览 193人参与
# 考研失败就一定是坏事吗? #
199172次浏览 1359人参与
# 摸鱼被leader发现了怎么办 #
97261次浏览 621人参与
# 为了找工作你花了哪些钱? #
74589次浏览 359人参与
# 秋招特别不鸣谢 #
13959次浏览 171人参与
# 选实习,你更看重哪方面? #
11973次浏览 204人参与
# 今年秋招你收到了多少封邮件? #
16859次浏览 217人参与
# 你今年的保底offer是哪家 #
154613次浏览 670人参与
# 携程求职进展汇总 #
838219次浏览 5504人参与
# 第一次面试 #
1035585次浏览 13682人参与
# 毕业论文进行时 #
20528次浏览 129人参与
# 工作中遇到的歹人 #
25094次浏览 298人参与
# 找工作有哪些冷知识 #
204817次浏览 2603人参与
# 机械/制造每日一题 #
80039次浏览 1409人参与
# 被上班搭子“传染”了哪些习惯 #
4786次浏览 94人参与
# 工作后,你落下了哪些病根 #
11528次浏览 175人参与

