- #include < iostream > #include < vector > #define MAX_Class 2#define MAX_Character 3
- //类别:用户主用账号, 用户辅助账号(0, 1)
- //特征属性:1.发表博文数量/ID注册天数(<0.1, 0.1~0.2, >0.2)
- // 2.互加好友数量/ID注册天数(<0.1, 0.1~0.8, >0.8)
- // 3.是否上传真实头像(0.0否, 1.0是)
- double P_C[MAX_Class];
- //P_C[i] : i类别占训练样本总体的概率
- std: :vector < double > P[MAX_Class][MAX_Character];
- //P[i][j][k] : i类别条件下, j特征, k情况的概率
- double lap = (double) MAX_Character;
- struct Check {
- int p_kind[3] = {
- 0
- };
- Check(double a, double b, int c) {
- if (a < 0.1) p_kind[0] = 0;
- else if (a < 0.2) p_kind[0] = 1;
- else p_kind[0] = 2;
- if (b < 0.1) p_kind[1] = 0;
- else if (b < 0.8) p_kind[1] = 1;
- else p_kind[1] = 2;
- if (c == 0) p_kind[2] = 0;
- else p_kind[2] = 1;
- }
- };
- void Virtual_Learned() {
- P_C[0] = 0.89,
- P_C[1] = 0.11;
- P[0][0].push_back(0.3),
- P[0][0].push_back(0.5),
- P[0][0].push_back(0.2);
- P[1][0].push_back(0.75),
- P[1][0].push_back(0.15),
- P[1][0].push_back(0.1);
- P[0][1].push_back(0.1),
- P[0][1].push_back(0.7),
- P[0][1].push_back(0.2);
- P[1][1].push_back(0.7),
- P[1][1].push_back(0.2),
- P[1][1].push_back(0.1);
- P[0][2].push_back(0.2),
- P[0][2].push_back(0.8);
- P[1][2].push_back(0.9),
- P[1][2].push_back(0.1);
- }
- int main() {
- Virtual_Learned();
- double a,
- b;
- int c;
- //分别输入:发表博文数量/ID注册天数
- // 互加好友数量/ID注册天数
- // 是否上传真实头像(0否, 1是)
- while (std: :cin >> a >> b >> c) {
- Check test = Check(a, b, c);
- double test_ans[MAX_Class] = {
- 0.0
- };
- for (int i = 0; i < MAX_Class; i++) {
- test_ans[i] = P_C[i];
- for (int j = 0; j < MAX_Character; j++) {
- test_ans[i] *= P[i][j][test.p_kind[j]];
- }
- //test_ans[i] /= lap;
- }
- std: :cout << "该账号为主用账号的相对系数:";
- std: :cout << test_ans[0] << std: :endl;
- std: :cout << "该账号为辅助账号的相对系数:";
- std: :cout << test_ans[1] << std: :endl;
- if (test_ans[0] >= test_ans[1]) std: :cout << "故该账号为用户主用账号" << std: :endl;
- else std: :cout << "故该账号为用户辅助账号" << std: :endl;
- }
- return 0;
- }
来源: http://lib.csdn.net/snippet/machinelearning/42887