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)); }
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()); } }