关注
第一题,信息增益代码 #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
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 三月的小目标 #
25842次浏览 476人参与
# 27届求职交流 #
14632次浏览 286人参与
# 神州信息求职进展汇总 #
4376次浏览 73人参与
# 26届求职交流 #
7414次浏览 156人参与
# 交出你的校招焚诀 #
18843次浏览 303人参与
# HR问:你期望的薪资是多少?如何回答 #
79744次浏览 672人参与
# 面试___岗的必刷题单 #
20791次浏览 385人参与
# 面试中,你被问过哪些奇葩问题? #
88974次浏览 850人参与
# 哪些公司开暑期实习了? #
33490次浏览 275人参与
# 小米求职进展汇总 #
1028557次浏览 6518人参与
# 实习生至暗时刻 #
24230次浏览 476人参与
# 硬件人的简历怎么写 #
330590次浏览 3093人参与
# 实习想申请秋招offer,能不能argue薪资 #
226444次浏览 1214人参与
# 找AI工作应该卷什么? #
7794次浏览 115人参与
# 快手求职进展汇总 #
737365次浏览 7114人参与
# 你觉得mentor喜欢什么样的实习生 #
51560次浏览 1008人参与
# 字节开奖 #
132221次浏览 611人参与
# 运营面经 #
160753次浏览 1349人参与
# 米哈游求职进展汇总 #
591052次浏览 3031人参与
# 春招开局,你有保底offer吗? #
36530次浏览 286人参与
# AI面试问题分享 #
19251次浏览 365人参与
查看8道真题和解析