private async Task loadFileAndMakeElements(string location)
 {
     if (location.EndsWith(".csv"))
     {
         weka.core.converters.CSVLoader csvLoader = new weka.core.converters.CSVLoader();
         csvLoader.setSource(new java.io.File(location));
         insts = csvLoader.getDataSet();
         insts.setClassIndex(insts.numAttributes() - 1);
     }
     else
     {
         insts = new weka.core.Instances(new java.io.FileReader(location));
         insts.setClassIndex(insts.numAttributes() - 1);
     }
     flowLayoutPanel1.Controls.Clear();
     for (int i = 0; i < insts.numAttributes() - 1; i++)
     {
         if (insts.attribute(i).isNominal() == true)
         {
             if (insts.attribute(i).numValues() > 0)
             {
                 Label lbl = new Label();
                 lbl.Text    = insts.attribute(i).name().Trim();
                 lbl.Enabled = true;
                 ComboBox cmbBox = new ComboBox();
                 cmbBox.Name = insts.attribute(i).name();
                 for (int m = 0; m < insts.attribute(i).numValues(); m++)
                 {
                     cmbBox.Items.Add(insts.attribute(i).value(m));
                 }
                 cmbBox.DropDownStyle = ComboBoxStyle.DropDownList;
                 cmbBox.Enabled       = true;
                 flowLayoutPanel1.Controls.Add(lbl);
                 flowLayoutPanel1.Controls.Add(cmbBox);
             }
             else
             {
             }
         }
         else if (insts.attribute(i).isNumeric() == true)
         {
             Label lbl = new Label();
             lbl.Text = insts.attribute(i).name().Trim();
             TextBox txtBox = new TextBox();
             txtBox.Name      = insts.attribute(i).name();
             txtBox.KeyPress += new KeyPressEventHandler(txtBox_Keypress);
             flowLayoutPanel1.Controls.Add(lbl);
             flowLayoutPanel1.Controls.Add(txtBox);
         }
     }
 }
示例#2
0
        public void CSV2Arff()
        {
            //load csv
            weka.core.converters.CSVLoader loader = new weka.core.converters.CSVLoader();
            //weka.core.converters.TextDirectoryLoader loader = new weka.core.converters.TextDirectoryLoader();
            // C:/ Users / DELL / source / repos / WekafromCtest / WekafromCtest /
            loader.setSource(new java.io.File("D:/final_version/Gesture-Gis-master/GestureGis2/ComparisonFeaturefile.txt"));
            weka.core.Instances data = loader.getDataSet();

            //save arff
            weka.core.converters.ArffSaver saver = new weka.core.converters.ArffSaver();
            saver.setInstances(data);
            //and save as arff file
            saver.setFile(new java.io.File("D:/final_version/Gesture-Gis-master/GestureGis2/ComparisonFeaturefile.arff"));
            saver.writeBatch();
        }
示例#3
0
        public void EMAlgorithm(string Training, string Test)
        {
            weka.core.converters.CSVLoader cSVLoader = new weka.core.converters.CSVLoader();
            File file = new File(Training);

            cSVLoader.setSource(file);
            TrainingSet = cSVLoader.getDataSet();
            file        = new File(Test);
            cSVLoader.setSource(file);
            TestSet = cSVLoader.getDataSet();

            eM.setNumClusters(3);
            eM.setSeed(100);
            eM.setNumFolds(10);
            eM.setMaxIterations(100);
            eM.setMaximumNumberOfClusters(-1);
            eM.setNumExecutionSlots(1);
            eM.setNumKMeansRuns(10);
            System.Console.WriteLine("Building Cluster");
            eM.buildClusterer(TrainingSet);
            System.Console.WriteLine("Done Building Cluster");
        }
    protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            string path  = Server.MapPath(".") + "\\datasets\\" + dataset.Text + ".csv";
            string fname = path;
            File.Delete("d:\\train.arff");
            weka.core.converters.CSVLoader loader = new weka.core.converters.CSVLoader();
            loader.setSource(new java.io.File(fname));
            weka.core.Instances            inst2 = loader.getDataSet();
            weka.core.converters.ArffSaver saver = new weka.core.converters.ArffSaver();
            saver.setInstances(inst2);
            saver.setFile(new java.io.File("d:\\train.arff"));
            saver.writeBatch();
            // Response.Write("<html><script>alert('File Converted..');</script></html>");
        }
        catch (Exception ex)
        {
            /// Response.Write("<html><script>alert('" + ex.Message.ToString() + "');</script></html>");
        }


        // weka.core.Instances data = new weka.core.Instances(new java.io.FileReader("d:\\train.arff"));
        // data.setClassIndex(data.numAttributes() - 1);
        // weka.classifiers.Classifier cls = new weka.classifiers.bayes.NaiveBayes();
        //// weka.classifiers.functions.supportVector.SMOset();
        // int runs = 1;
        // int folds = 10;
        // //string sq = "delete from nbresults";
        // //dbc.execfn(sq);
        // // perform cross-validation
        // for (int i = 0; i < runs; i++)
        // {
        //     // randomize data
        //     int seed = i + 1;
        //     java.util.Random rand = new java.util.Random(seed);
        //     weka.core.Instances randData = new weka.core.Instances(data);
        //     randData.randomize(rand);
        //     if (randData.classAttribute().isNominal())
        //         randData.stratify(folds);
        //     weka.classifiers.Evaluation eval = new weka.classifiers.Evaluation(randData);
        //     for (int n = 0; n < folds; n++)
        //     {
        //         weka.core.Instances train = randData.trainCV(folds, n);
        //         weka.core.Instances test = randData.testCV(folds, n);
        //         // build and evaluate classifier
        //         weka.classifiers.Classifier clsCopy = weka.classifiers.Classifier.makeCopy(cls);
        //         clsCopy.buildClassifier(train);

        //         eval.evaluateModel(clsCopy, test);
        //     }

        //     preci_value.Text = eval.precision(0).ToString();
        //     recall_value.Text = eval.recall(0).ToString();
        //     acc_value.Text = eval.fMeasure(0).ToString();

        //     string s = "NB";
        //     string str = "insert into evaluation values('" + instid.Text + "','" + courid.Text.ToString() + "','" + preci_value.Text.ToString() + "','" + recall_value.Text.ToString() + "','" + acc_value.Text.ToString() + "','"+ s+ "' )";
        //     dbc.execfn(str);
        //     MessageBox.Show("saved");

        //  }
        //  }
    }
        public void trainSMOUsingWeka(string wekaFile, string modelName)
        {
            try
            {
                weka.core.converters.CSVLoader csvLoader = new weka.core.converters.CSVLoader();
                csvLoader.setSource(new java.io.File(wekaFile));
                weka.core.Instances insts = csvLoader.getDataSet();
                //weka.core.Instances insts = new weka.core.Instances(new java.io.FileReader(wekaFile));
                insts.setClassIndex(insts.numAttributes() - 1);

                cl = new weka.classifiers.functions.SMO();
                cl.setBatchSize("100");

                cl.setCalibrator(new weka.classifiers.functions.Logistic());
                cl.setKernel(new weka.classifiers.functions.supportVector.PolyKernel());
                cl.setEpsilon(1.02E-12);
                cl.setC(1.0);
                cl.setDebug(false);
                cl.setChecksTurnedOff(false);
                cl.setFilterType(new SelectedTag(weka.classifiers.functions.SMO.FILTER_NORMALIZE, weka.classifiers.functions.SMO.TAGS_FILTER));

                System.Console.WriteLine("Performing " + percentSplit + "% split evaluation.");

                //randomize the order of the instances in the dataset.
                // weka.filters.Filter myRandom = new weka.filters.unsupervised.instance.Randomize();
                //myRandom.setInputFormat(insts);
                // insts = weka.filters.Filter.useFilter(insts, myRandom);

                int trainSize             = insts.numInstances() * percentSplit / 100;
                int testSize              = insts.numInstances() - trainSize;
                weka.core.Instances train = new weka.core.Instances(insts, 0, trainSize);
                java.io.File        path  = new java.io.File("/models/");
                cl.buildClassifier(train);
                saveModel(cl, modelName, path);
                #region test whole set
                int numCorrect = 0;
                for (int i = 0; i < insts.numInstances(); i++)
                {
                    weka.core.Instance currentInst = insts.instance(i);
                    if (i == 12)
                    {
                        array = new List <float>();
                        foreach (float value in currentInst.toDoubleArray())
                        {
                            array.Add(value);
                        }
                    }

                    double predictedClass = cl.classifyInstance(currentInst);
                    if (predictedClass == insts.instance(i).classValue())
                    {
                        numCorrect++;
                    }
                }

                System.Console.WriteLine(numCorrect + " out of " + testSize + " correct (" +
                                         (double)((double)numCorrect / (double)testSize * 100.0) + "%)");
                #endregion
            }
            catch (java.lang.Exception ex)
            {
                ex.printStackTrace();
            }
        }