Beispiel #1
0
        public Core20Paired(string fileName, bool invertClasses)
        {
            core          = Core35.Deserialize(fileName);
            InvertClasses = invertClasses;

            if (invertClasses)
            {
                List <int> labels = core.SEProFiles.Select(a => a.ClassLabel).Distinct().ToList();
                if (labels.Count > 2)
                {
                    throw new Exception("Switch labels can only be used in dataset with two classes.");
                }


                int l1 = labels[0];
                int l2 = labels[1];

                //Invert in SEPro
                List <SEProFileInfo> sepF1 = core.SEProFiles.FindAll(a => a.ClassLabel == l1);
                List <SEProFileInfo> sepF2 = core.SEProFiles.FindAll(a => a.ClassLabel == l2);

                foreach (var s in sepF1)
                {
                    s.ClassLabel = l2;
                }

                foreach (var s in sepF2)
                {
                    s.ClassLabel = l1;
                }

                //Invert in Associations
                List <AssociationItem> a1 = core.MyAssociationItems.FindAll(a => a.Label == l1);
                List <AssociationItem> a2 = core.MyAssociationItems.FindAll(a => a.Label == l2);

                foreach (var a in a1)
                {
                    a.Label = l2;
                }

                foreach (var a in a2)
                {
                    a.Label = l1;
                }

                //Invert in Quant Packages
                List <QuantPackage2> q1 = core.myQuantPkgs.FindAll(a => a.ClassLabel == l1);
                List <QuantPackage2> q2 = core.myQuantPkgs.FindAll(a => a.ClassLabel == l2);

                foreach (var q in q1)
                {
                    q.ClassLabel = l2;
                }

                foreach (var q in q2)
                {
                    q.ClassLabel = l1;
                }
            }
        }