public void WriteFile(List <List <string> > numericDataset, string file, List <string> atrNames, List <string> targetValues, bool isTargetNumeric)
        {
            weka.core.FastVector targetVals = new weka.core.FastVector();

            weka.core.Instances dataRel;

            for (int i = 0; i < targetValues.Count; i++)
            {
                targetVals.addElement(targetValues[i]);
            }

            weka.core.Instances  data;
            weka.core.FastVector atts = new weka.core.FastVector();

            // fill and prepare the dataset for the arrf file
            for (int j = 0; j < insts.numAttributes(); j++)
            {
                if (j == insts.numAttributes() - 1 && isTargetNumeric == false) // target value can be nominal
                {
                    atts.addElement(new weka.core.Attribute(atrNames[j], targetVals));
                }
                else
                {
                    atts.addElement(new weka.core.Attribute(atrNames[j]));
                }
            }

            data = new weka.core.Instances("MyRelation", atts, 0);

            for (int i = 0; i < insts.numInstances(); i++)
            {
                double[] vals = new double[insts.numAttributes()];

                for (int j = 0; j < insts.numAttributes(); j++)
                {
                    if (j == insts.numAttributes() - 1 && isTargetNumeric == false) // target value can be nominal
                    {
                        vals[j] = targetVals.indexOf(numericDataset[j][i]);
                    }
                    else
                    {
                        vals[j] = Convert.ToDouble(numericDataset[j][i]);
                    }
                }

                data.add(new weka.core.DenseInstance(1.0, vals));
            }

            if (File.Exists(file))
            {
                File.Delete(file);
            }

            var saver = new weka.core.converters.ArffSaver();

            saver.setInstances(data);
            saver.setFile(new java.io.File(file));
            // files are saved into {AppFolder}/bin/Debug folder. You can find two files in this path.
            saver.writeBatch();
        }
Ejemplo n.º 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();
        }
    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");

        //  }
        //  }
    }