示例#1
0
        public static J48 ByARFF(string ARFF, string count)
        {
            java.io.StringReader  ArffReader = new java.io.StringReader(ARFF);
            ArffLoader.ArffReader ARFFData   = new ArffLoader.ArffReader(ArffReader, Convert.ToInt32(count), true);
            Instances             structure  = ARFFData.getStructure();

            structure.setClassIndex(structure.numAttributes() - 1);
            Instance inst;

            while ((inst = ARFFData.readInstance(structure)) != null)
            {
                structure.add(inst);
            }
            //Instances data = ARFFData.getData();
            //J48 cls = new J48();
            //cls.buildClassifier(data);
            //String[] options = new String[1];
            //options[0] = "-U"; // unpruned tree
            J48 tree = new J48(); // new instance of tree

            //tree.setOptions(options); // set the options
            tree.buildClassifier(structure); // build classifier

            return(tree);
        }
示例#2
0
        public static double resultPrepareWithCrossFold(string classifierFileName, int baseClasses, string clasifier)
        {
            double performance = 0.0;

            if (clasifier == "svm")
            {
                weka.classifiers.Classifier svm = new SMO();

                performance = Weka.classifyCrossFold_Train_Test(classifierFileName, baseClasses, svm);
            }
            else if (clasifier == "nb")
            {
                weka.classifiers.Classifier nb = new NaiveBayes();
                performance = Weka.classifyCrossFold_Train_Test(classifierFileName, baseClasses, nb);
            }
            else if (clasifier == "rf")
            {
                weka.classifiers.Classifier rf = new RandomForest();
                performance = Weka.classifyCrossFold_Train_Test(classifierFileName, baseClasses, rf);
            }
            else if (clasifier == "j48")
            {
                weka.classifiers.Classifier j48 = new J48();
                performance = Weka.classifyCrossFold_Train_Test(classifierFileName, baseClasses, j48);
            }
            return(performance);
        }
示例#3
0
        public static void classifierTwo(string classifierFileName, string predictionModel)
        {
            FileReader javaFileReader = new FileReader(classifierFileName);

            weka.core.Instances wekaInsts = new weka.core.Instances(javaFileReader);
            javaFileReader.close();

            wekaInsts.setClassIndex(wekaInsts.numAttributes() - 1);



            //Classifier nbTree = (Classifier)SerializationHelper.read(Model) as J48;

            Instances testDataSet = new Instances(new BufferedReader(new FileReader(classifierFileName)));

            testDataSet.setClassIndex(wekaInsts.numAttributes() - 1);
            //testDataSet.setClassIndex(10);
            Evaluation evaluation = new Evaluation(testDataSet);


            J48 model = new J48();

            //Classifier myClassifier = (Classifier)SerializationHelper.read(Model) as NaiveBayes;
            //Classifier myClassifier = new NaiveBayes();


            for (int i = 0; i < testDataSet.numInstances(); i++)
            {
                Instance instance = testDataSet.instance(i);
                //evaluation.evaluateModelOnceAndRecordPrediction(myClassifier, instance);
                //evaluation.evaluateModelOnce(myClassifier, instance);
            }

            foreach (object o in evaluation.predictions().toArray())
            {
                NominalPrediction prediction = o as NominalPrediction;
                if (prediction != null)
                {
                    double[] distribution = prediction.distribution();
                    double   predicted    = prediction.predicted();

                    for (int i = 0; i < distribution.Length; i++)
                    {
                        System.Console.WriteLine(distribution[i]);
                    }

                    System.Console.WriteLine(predicted);
                }
            }

            System.Console.WriteLine(evaluation);
            System.Console.ReadKey();
        }
示例#4
0
        public static J48 ByHeaderAndData(string header, string dataARFF)
        {
            java.io.StringReader  ArffReader = new java.io.StringReader(header);
            ArffLoader.ArffReader ARFFData   = new ArffLoader.ArffReader(ArffReader, 100, false);
            Instances             structure  = ARFFData.getStructure();

            structure.setClassIndex(structure.numAttributes() - 1);

            ArffReader = new java.io.StringReader(dataARFF);
            Instances data = ARFFData.getData();

            Instance inst;

            while ((inst = ARFFData.readInstance(data)) != null)
            {
                structure.add(inst);
            }
            J48 tree = new J48();            // new instance of tree

            tree.buildClassifier(structure); // build classifier

            return(tree);
        }
        public void LearnModel()
        {
            Init();
            foreach (Feature currFeature in DomPool.SelectorFeatures)
            {
                String             featureString = currFeature.ToString();
                HashSet <HtmlNode> resNodes      = DomPool.RunXpathQuery(featureString);
                foreach (HtmlNode nd in resNodes)
                {
                    if (!allNodes.Contains(nd))
                    {
                        continue;
                    }
                    nodeFeatures[nd].Add(featureString);
                }
            }

            FastVector fvWekaAttributes = GetDataSetAtts();
            Instances  trainingSet      = new Instances("TS", fvWekaAttributes, 100);

            trainingSet.setClassIndex(fvWekaAttributes.size() - 1);

            foreach (HtmlNode currNode in allNodes)
            {
                Instance item = new SparseInstance(fvWekaAttributes.size());

                for (int i = 0; i < fvWekaAttributes.size() - 1; i++)
                {
                    weka.core.Attribute currFeature = (weka.core.Attribute)fvWekaAttributes.elementAt(i);
                    if (nodeFeatures[currNode].Contains(currFeature.name()))
                    {
                        item.setValue(currFeature, 1);
                    }
                    else
                    {
                        item.setValue(currFeature, 0);
                    }
                }

                //set the class
                weka.core.Attribute classFeature = (weka.core.Attribute)fvWekaAttributes.elementAt(fvWekaAttributes.size() - 1);
                item.setValue(classFeature, (DomPool.TargetNodes.Contains(currNode)?"yes":"no"));
                item.setDataset(trainingSet);
                if (DomPool.TargetNodes.Contains(currNode))
                {
                    for (int t = 0; t < (DomPool.NonTargetNodes.Count() / DomPool.TargetNodes.Count()); t++)
                    {
                        trainingSet.add(new SparseInstance(item));
                    }
                }
                else
                {
                    trainingSet.add(item);
                }
            }

            String[] options = new String[2];
            options[0] = "-C";                 // unpruned tree
            options[1] = "0.1";
            J48 tree = new J48();              // new instance of tree

            tree.setOptions(options);          // set the options
            tree.buildClassifier(trainingSet); // build classifier
            //save the resulting classifier
            classifierTree = tree;

            Reader    treeDot   = new StringReader(tree.graph());
            TreeBuild treeBuild = new TreeBuild();
            Node      treeRoot  = treeBuild.create(treeDot);

            FeaturesUsed = getTreeFeatures(treeRoot);
        }
示例#6
0
 public static float getConfidenceFactor(J48 j48data)
 {
     return(j48data.getConfidenceFactor());
 }
示例#7
0
 public static string ReturnToSummaryString(J48 j48data)
 {
     return(j48data.toSummaryString());
 }
示例#8
0
 public static string ReturnIfThen(J48 j48data)
 {
     return(j48data.toSource("wekaIf"));
 }
示例#9
0
 public static string ReturnPrefix(J48 j48data)
 {
     return(j48data.prefix());
 }
示例#10
0
 public static string ReturnGlobalInfo(J48 j48data)
 {
     return(j48data.globalInfo());
 }
示例#11
0
 public static string ReturnGraph(J48 j48data)
 {
     return(j48data.graph());
 }