⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 基于决策树和贝叶斯的预测分析器
💻 CS
📖 第 1 页 / 共 5 页
字号:

            //计算"edu4_6"+"edu1_3, edu7_9, edu10_12, edu13_14, edu15_16"的gini
            D3.Clear();
            D4.Clear();
            D3.AddRange(d2);
            D4.AddRange(d1);
            D4.AddRange(d3);
            D4.AddRange(d4);
            D4.AddRange(d5);
            D4.AddRange(d6);

            gini = (double)D3.Count / d.Count * Gini(D3) + (double)D4.Count / d.Count * Gini(D4);
            if (gini < giniSplit.gini)
            {
                giniSplit.giniSplitCriterion.descriptionList.Clear();
                giniSplit.giniSplitCriterion.splitList.Clear();
                giniSplit.gini = gini;
                giniSplit.giniSplitCriterion.attribute = "education";
                giniSplit.giniSplitCriterion.descriptionList.Add("edu4_6");
                giniSplit.giniSplitCriterion.descriptionList.Add("edu1_3, edu7_9, edu10_12, edu13_14, edu15_16");
                giniSplit.giniSplitCriterion.splitList.Add(D3);
                giniSplit.giniSplitCriterion.splitList.Add(D4);
            }
            else
            {
                D3.Clear();
                D4.Clear();
            }

            //计算"edu7_9"+"edu1_3, edu4_6, edu10_12, edu13_14, edu15_16"的gini
            D5.Clear();
            D6.Clear();
            D5.AddRange(d3);
            D6.AddRange(d1);
            D6.AddRange(d2);
            D6.AddRange(d4);
            D6.AddRange(d5);
            D6.AddRange(d6);

            gini = (double)D5.Count / d.Count * Gini(D5) + (double)D6.Count / d.Count * Gini(D6);
            if (gini < giniSplit.gini)
            {
                giniSplit.giniSplitCriterion.descriptionList.Clear();
                giniSplit.giniSplitCriterion.splitList.Clear();
                giniSplit.gini = gini;
                giniSplit.giniSplitCriterion.attribute = "education";
                giniSplit.giniSplitCriterion.descriptionList.Add("edu7_9");
                giniSplit.giniSplitCriterion.descriptionList.Add("edu1_3, edu4_6, edu10_12, edu13_14, edu15_16");
                giniSplit.giniSplitCriterion.splitList.Add(D5);
                giniSplit.giniSplitCriterion.splitList.Add(D6);
            }
            else
            {
                D5.Clear();
                D6.Clear();
            }
            //计算"edu10_12"+"edu1_3, edu4_6, edu7_9, edu13_14, edu15_16"的gini
            D7.Clear();
            D8.Clear();
            D7.AddRange(d4);
            D8.AddRange(d1);
            D8.AddRange(d2);
            D8.AddRange(d3);
            D8.AddRange(d5);
            D8.AddRange(d6);

            gini = (double)D7.Count / d.Count * Gini(D7) + (double)D8.Count / d.Count * Gini(D8);
            if (gini < giniSplit.gini)
            {
                giniSplit.giniSplitCriterion.descriptionList.Clear();
                giniSplit.giniSplitCriterion.splitList.Clear();
                giniSplit.gini = gini;
                giniSplit.giniSplitCriterion.attribute = "education";
                giniSplit.giniSplitCriterion.descriptionList.Add("edu10_12");
                giniSplit.giniSplitCriterion.descriptionList.Add("edu1_3, edu4_6, edu7_9, edu13_14, edu15_16");
                giniSplit.giniSplitCriterion.splitList.Add(D7);
                giniSplit.giniSplitCriterion.splitList.Add(D8);
            }
            else
            {
                D7.Clear();
                D8.Clear();
            }
            //计算"edu13_14"+"edu1_3, edu4_6, edu7_9, edu10_12, edu15_16"的gini
            D9.Clear();
            D10.Clear();
            D9.AddRange(d5);
            D10.AddRange(d1);
            D10.AddRange(d2);
            D10.AddRange(d3);
            D10.AddRange(d4);
            D10.AddRange(d6);

            gini = (double)D9.Count / d.Count * Gini(D9) + (double)D10.Count / d.Count * Gini(D10);
            if (gini < giniSplit.gini)
            {
                giniSplit.giniSplitCriterion.descriptionList.Clear();
                giniSplit.giniSplitCriterion.splitList.Clear();
                giniSplit.gini = gini;
                giniSplit.giniSplitCriterion.attribute = "education";
                giniSplit.giniSplitCriterion.descriptionList.Add("edu13_14");
                giniSplit.giniSplitCriterion.descriptionList.Add("edu1_3, edu4_6, edu7_9, edu10_12, edu15_16");
                giniSplit.giniSplitCriterion.splitList.Add(D9);
                giniSplit.giniSplitCriterion.splitList.Add(D10);
            }
            else
            {
                D9.Clear();
                D10.Clear();
            }
            //计算"edu15_16"+"edu1_3, edu4_6, edu7_9, edu10_12, edu13_14"的gini
            D11.Clear();
            D12.Clear();
            D11.AddRange(d6);
            D12.AddRange(d1);
            D12.AddRange(d2);
            D12.AddRange(d3);
            D12.AddRange(d4);
            D12.AddRange(d5);

            gini = (double)D11.Count / d.Count * Gini(D11) + (double)D12.Count / d.Count * Gini(D12);
            if (gini < giniSplit.gini)
            {
                giniSplit.giniSplitCriterion.descriptionList.Clear();
                giniSplit.giniSplitCriterion.splitList.Clear();
                giniSplit.gini = gini;
                giniSplit.giniSplitCriterion.attribute = "education";
                giniSplit.giniSplitCriterion.descriptionList.Add("edu15_16");
                giniSplit.giniSplitCriterion.descriptionList.Add("edu1_3, edu4_6, edu7_9, edu10_12, edu13_14");
                giniSplit.giniSplitCriterion.splitList.Add(D11);
                giniSplit.giniSplitCriterion.splitList.Add(D12);
            }
            else
            {
                D11.Clear();
                D12.Clear();
            }
            return giniSplit;
        }

        //计算"occupation"属性的Ginioccupation
        //occupationType共14类:Tech_support, Craft_repair, Other_service, Sales, Exec_managerial, Prof_specialty,
        //            Handlers_cleaners, Machine_op_inspct, Adm_clerical, Farming_fishing, Transport_moving, 
        //           Priv_house_serv, Protective_serv, Armed_Forces
        //计算"occupation"属性的Gini
        //occupationType { Tech_support, Craft_repair, Other_service, Sales, Exec_managerial, Prof_specialty }
        private GiniSplit Ginioccupation(ArrayList d)
        {
            double gini;
            ArrayList d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14; 
            ArrayList D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12;
            ArrayList D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24, D25, D26, D27, D28;
            GiniSplit giniSplit = new GiniSplit();
            giniSplit.gini = 1;
 
            D1 = new ArrayList();
            D2 = new ArrayList();
            D3 = new ArrayList();
            D4 = new ArrayList();
            D5 = new ArrayList();
            D6 = new ArrayList();
            D7 = new ArrayList();
            D8 = new ArrayList();
            D9 = new ArrayList();
            D10 = new ArrayList();
            D11 = new ArrayList();
            D12 = new ArrayList();
            D13 = new ArrayList();
            D14 = new ArrayList();
            D15 = new ArrayList();
            D16 = new ArrayList();
            D17 = new ArrayList();
            D18 = new ArrayList();
            D19 = new ArrayList();
            D20 = new ArrayList();
            D21 = new ArrayList();
            D22 = new ArrayList();
            D23 = new ArrayList();
            D24 = new ArrayList();
            D25 = new ArrayList();
            D26 = new ArrayList();
            D27 = new ArrayList();
            D28 = new ArrayList();

            d1 = CopySmallCollection(d, "occupation", occupationType.Tech_support);
            d2 = CopySmallCollection(d, "occupation", occupationType.Craft_repair);
            d3 = CopySmallCollection(d, "occupation", occupationType.Other_service);
            d4 = CopySmallCollection(d, "occupation", occupationType.Sales);
            d5 = CopySmallCollection(d, "occupation", occupationType.Exec_managerial);
            d6 = CopySmallCollection(d, "occupation", occupationType.Prof_specialty);
            d7 = CopySmallCollection(d, "occupation", occupationType.Handlers_cleaners);
            d8 = CopySmallCollection(d, "occupation", occupationType.Machine_op_inspct);
            d9 = CopySmallCollection(d, "occupation", occupationType.Adm_clerical);
            d10 = CopySmallCollection(d, "occupation", occupationType.Farming_fishing);
            d11 = CopySmallCollection(d, "occupation", occupationType.Transport_moving);
            d12 = CopySmallCollection(d, "occupation", occupationType.Priv_house_serv);
            d13 = CopySmallCollection(d, "occupation", occupationType.Protective_serv);
            d14 = CopySmallCollection(d, "occupation", occupationType.Armed_Forces);

            //计算"Tech_support"+"其它职业"的gini
            D1.Clear();
            D2.Clear();
            D1.AddRange(d1);
            D2.AddRange(d2);
            D2.AddRange(d3);
            D2.AddRange(d4);
            D2.AddRange(d5);
            D2.AddRange(d6);
            D2.AddRange(d7);
            D2.AddRange(d8);
            D2.AddRange(d9);
            D2.AddRange(d10);
            D2.AddRange(d11);
            D2.AddRange(d12);
            D2.AddRange(d13);
            D2.AddRange(d14);

            gini = (double)D1.Count / d.Count * Gini(D1) + (double)D2.Count / d.Count * Gini(D2);
            if (gini < giniSplit.gini)
            {
                giniSplit.giniSplitCriterion.descriptionList.Clear();
                giniSplit.giniSplitCriterion.splitList.Clear();
                giniSplit.gini = gini;
                giniSplit.giniSplitCriterion.attribute = "occupation";
                giniSplit.giniSplitCriterion.descriptionList.Add("Tech_support");
                giniSplit.giniSplitCriterion.descriptionList.Add("其它职业");
                giniSplit.giniSplitCriterion.splitList.Add(D1);
                giniSplit.giniSplitCriterion.splitList.Add(D2);
            }
            else
            {
                D1.Clear();
                D2.Clear();
            }


            //计算"Craft_repair"+"其它职业"的gini
            D3.Clear();
            D4.Clear();
            D3.AddRange(d2);
            D4.AddRange(d1);
            D4.AddRange(d3);
            D4.AddRange(d4);
            D4.AddRange(d5);
            D4.AddRange(d6);
            D4.AddRange(d7);
            D4.AddRange(d8);
            D4.AddRange(d9);
            D4.AddRange(d10);
            D4.AddRange(d11);
            D4.AddRange(d12);
            D4.AddRange(d13);
            D4.AddRange(d14);
 

            gini = (double)D3.Count / d.Count * Gini(D3) + (double)D4.Count / d.Count * Gini(D4);
            if (gini < giniSplit.gini)
            {
                giniSplit.giniSplitCriterion.descriptionList.Clear();
                giniSplit.giniSplitCriterion.splitList.Clear();
                giniSplit.gini = gini;
                giniSplit.giniSplitCriterion.attribute = "occupation";
                giniSplit.giniSplitCriterion.descriptionList.Add("Craft_repair");
                giniSplit.giniSplitCriterion.descriptionList.Add("其它职业");
                giniSplit.giniSplitCriterion.splitList.Add(D3);
                giniSplit.giniSplitCriterion.splitList.Add(D4);
            }
            else
            {
                D3.Clear();
                D4.Clear();
            }

            //计算"Other_service"+"其它职业"的gini
            D5.Clear();
            D6.Clear();
            D5.AddRange(d3);
            D6.AddRange(d1);
            D6.AddRange(d2);
            D6.AddRange(d4);
            D6.AddRange(d5);
            D6.AddRange(d6);
            D6.AddRange(d7);
            D6.AddRange(d8);
            D6.AddRange(d9);
            D6.AddRange(d10);
            D6.AddRange(d11);
            D6.AddRange(d12);
            D6.AddRange(d13);
            D6.AddRange(d14);

            gini = (double)D5.Count / d.Count * Gini(D5) + (double)D6.Count / d.Count * Gini(D6);
            if (gini < giniSplit.gini)
            {
                giniSplit.giniSplitCriterion.descriptionList.Clear();
                giniSplit.giniSplitCriterion.splitList.Clear();
                giniSplit.gini = gini;
                giniSplit.giniSplitCriterion.attribute = "occupation";
                giniSplit.giniSplitCriterion.de

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -