Exemple #1
0
        public void Classify()
        {
            // Train Dataset yolu
            ConverterUtils.DataSource source1 = new ConverterUtils.DataSource(TrainPath);
            Instances train = source1.getDataSet();

            if (train.classIndex() == -1)
            {
                train.setClassIndex(train.numAttributes() - 1);
            }

            //Tahmin edilecek data'nın yolu
            ConverterUtils.DataSource source2 = new ConverterUtils.DataSource(Application.StartupPath + "\\UrunPredict.arff");
            Instances test = source2.getDataSet();


            if (test.classIndex() == -1)
            {
                test.setClassIndex(train.numAttributes() - 1);
            }


            //Sınıflandırma algoritmasının belirlenmesi

            /* weka.classifiers.lazy.IBk ibk = new weka.classifiers.lazy.IBk();
             * //En yakın komşu 'k' değeri 3 olarak belirleniyor
             * ibk.setKNN(3);
             * ibk.buildClassifier(train);*/

            //NAIVE BAYES ALGORITMASI UYGULAMA
            NaiveBayes naiveBayes = new NaiveBayes();

            naiveBayes.buildClassifier(train);

            //Sınıflandırma işlemi uygulanıyor
            double label = naiveBayes.classifyInstance(test.instance(0));

            test.instance(0).setClassValue(label);


            //Yeni sınıflandısrılan verinin train veri setine eklenmesi
            string       AddClassifiedData = txtSicaklik.Text + "," + txtNem.Text + "," + txtYagis.Text + "," + cmbDeniz.Text + "," + test.instance(0).stringValue(4);
            StreamWriter Kayit             = File.AppendText(TrainPath);

            Kayit.WriteLine("\n" + AddClassifiedData);
            Kayit.Close();

            ShowImageAndInfo(test.instance(0).stringValue(4));
        }
Exemple #2
0
        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, 10);

            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 = new string[] { "-C", "0.05" };            // unpruned tree
            NaiveBayes cls = new NaiveBayes();         // new instance of tree

            //cls.setOptions(weka.core.Utils.splitOptions("-C 1.0 -L 0.0010 -P 1.0E-12 -N 0 -V -1 -W 1 -K \"weka.classifiers.functions.supportVector.PolyKernel -C 250007 -E 1.0\""));
            //cls.setOptions(options);     // set the options
            cls.buildClassifier(trainingSet);  // build classifier
            //save the resulting classifier
            classifier = cls;

            //  Reader treeDot = new StringReader(tree.graph());
            //  TreeBuild treeBuild = new TreeBuild();
            //  Node treeRoot = treeBuild.create(treeDot);
            FeaturesUsed = new HashSet <string>();

            foreach (Feature f in DomPool.SelectorFeatures)
            {
                FeaturesUsed.Add(f.ToString());
            }
        }