public List <CandidateClassifier> GetBestClassifierInfo(ParameterdCandidateStrategy parent) { double[] sum = new double[Parameters.AllDealTypes.Length]; double[] oscsum = new double[Parameters.AllDealTypes.Length]; for (int k = 0; k < Parameters.AllDealTypes.Length; ++k) { sum[k] = 0; oscsum[k] = 0; } parent.IterateClassifierInfos2((cc) => { sum[WekaUtils.GetDealTypeIdx(cc.DealType)] += cc.Deals.NowScore; }); int oscCnt = 0; parent.IterateClassifierInfos((k, i, j, h) => { if (TestParameters.EnablePerhourTrain) { if (h != parent.CurrentTestHour) { return(true); } } if (k > 0) { return(true); } if (parent.m_classifierInfoIdxs[0, i, j, h].Deals.NowScore <= 0 && parent.m_classifierInfoIdxs[1, i, j, h].Deals.NowScore <= 0) { oscsum[0] += parent.m_classifierInfoIdxs[0, i, j, h].Deals.NowScore; oscsum[1] += parent.m_classifierInfoIdxs[1, i, j, h].Deals.NowScore; oscCnt++; } return(true); }); //for (int k = 0; k < Parameters.AllDealTypes.Length; ++k) //{ // sum[k] -= oscsum[k]; //} //double oscsums = oscsum[0] + oscsum[1]; int selectedDeal = -1; if (sum[0] < sum[1] && sum[0] < 0) { selectedDeal = 0; } else if (sum[1] < sum[0] && sum[1] < 0) { selectedDeal = 1; } if (selectedDeal == -1) { return(null); } if (oscCnt > 400) { return(null); } //selectedDeal = 1 - selectedDeal; List <CandidateClassifier> ret = new List <CandidateClassifier>(); parent.IterateClassifierInfos((k, i, j, h) => { if (k != selectedDeal) { return; } if (TestParameters.EnablePerhourTrain) { if (h != parent.CurrentTestHour) { return; } } switch (m_choiceType) { case 0: //if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore < 0)// && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) { ret.Add(parent.m_classifierInfoIdxs[k, i, j, h]); } break; //case 1: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore > 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) // { // ret.Add(parent.m_classifierInfoIdxs[k, i, j, h]); // } // break; //case 2: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore < 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) // { // ret.Add(parent.m_classifierInfoIdxs[k, i, j, h]); // } // break; //case 3: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore > 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore < 0) // { // ret.Add(parent.m_classifierInfoIdxs[k, i, j, h]); // } // break; case 4: if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore < 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) { ret.Add(parent.m_classifierInfoIdxs[1 - k, i, j, h]); } break; //case 5: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore > 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) // { // ret.Add(parent.m_classifierInfoIdxs[1 - k, i, j, h]); // } // break; //case 6: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore < 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) // { // ret.Add(parent.m_classifierInfoIdxs[1 - k, i, j, h]); // } // break; //case 7: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore > 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore < 0) // { // ret.Add(parent.m_classifierInfoIdxs[1 - k, i, j, h]); // } // break; } }); return(ret); }