Beispiel #1
0
        public override void TrainningModel(TrainningData trainningData)
        {
            this.possiveValue = trainningData.PositiveValue;
            this.negativeValue = trainningData.NegativeValue;

            HuanLuyenBayes(trainningData.TrainningAttributes.GetLength(0));                        
        }
Beispiel #2
0
        //public SupportVectorMachine SVM
        //{
        //    get { return svm; }
        //    private set { svm = value; }
        //}

        public override void TrainningModel(TrainningData trainningData)
        {
            ContinuousDataTableAdapter continuousDataTableAdapter = new ContinuousDataTableAdapter();

            DataTable continuousDataTable = continuousDataTableAdapter.GetData();
            DataTable dataTable           = continuousDataTable.DefaultView.ToTable(false, TableMetaData.TestingAttributes);

            string[]   columnNames;
            double[][] inputs  = dataTable.ToArray(out columnNames);
            int[]      outputs = (int[])trainningData.ClassificationAttribute.Clone();

            // Create output for SVM (-1 or 1)
            for (int index = 0; index < outputs.Length; index++)
            {
                if (outputs[index] == 0)
                {
                    outputs[index] = -1;
                }
            }

            // Create a Support Vector Machine for the given inputs
            //this.svm = new SupportVectorMachine(inputs[0].Length);

            //// Create a Kernel Support Vector Machine for the given inputs
            this.svm = new KernelSupportVectorMachine(new Gaussian(0.1), inputs[0].Length);

            // Instantiate a new learning algorithm for SVMs
            SequentialMinimalOptimization smo = new SequentialMinimalOptimization(svm, inputs, outputs);

            // Set up the learning algorithm
            smo.Complexity = 1.0;

            // Run the learning algorithm
            double error = smo.Run();
        }
Beispiel #3
0
        public override void TrainningModel(TrainningData trainningData)
        {
            this.possiveValue  = trainningData.PositiveValue;
            this.negativeValue = trainningData.NegativeValue;

            HuanLuyenBayes(trainningData.TrainningAttributes.GetLength(0));
        }
Beispiel #4
0
        //public SupportVectorMachine SVM
        //{
        //    get { return svm; }
        //    private set { svm = value; }
        //}

        public override void TrainningModel(TrainningData trainningData)
        {
            ContinuousDataTableAdapter continuousDataTableAdapter = new ContinuousDataTableAdapter();

            DataTable continuousDataTable = continuousDataTableAdapter.GetData();
            DataTable dataTable = continuousDataTable.DefaultView.ToTable(false, TableMetaData.TestingAttributes);
            string[] columnNames;
            double[][] inputs = dataTable.ToArray(out columnNames);
            int[] outputs = (int[])trainningData.ClassificationAttribute.Clone();

            // Create output for SVM (-1 or 1)
            for (int index = 0; index < outputs.Length; index++)
            {
                if (outputs[index] == 0)
                {
                    outputs[index] = -1;
                }
            }

            // Create a Support Vector Machine for the given inputs
            //this.svm = new SupportVectorMachine(inputs[0].Length);

            //// Create a Kernel Support Vector Machine for the given inputs
            this.svm = new KernelSupportVectorMachine(new Gaussian(0.1), inputs[0].Length);

            // Instantiate a new learning algorithm for SVMs
            SequentialMinimalOptimization smo = new SequentialMinimalOptimization(svm, inputs, outputs);

            // Set up the learning algorithm
            smo.Complexity = 1.0;

            // Run the learning algorithm 
            double error = smo.Run();
        }
        public virtual List<ConfusionMatrix> TestModel(TrainningData trainningData)
        {
            int[] expected = trainningData.ClassificationAttribute;
            int[] predicted = ComputeModel(trainningData.TrainningAttributes);
            int positiveValue = trainningData.PositiveValue;
            int negativeValue = trainningData.NegativeValue;

            ConfusionMatrix confusionMatrix = new ConfusionMatrix(predicted, expected, positiveValue, negativeValue);
            return new List<ConfusionMatrix> { confusionMatrix };
        }
Beispiel #6
0
        public virtual List <ConfusionMatrix> TestModel(TrainningData trainningData)
        {
            int[] expected      = trainningData.ClassificationAttribute;
            int[] predicted     = ComputeModel(trainningData.TrainningAttributes);
            int   positiveValue = trainningData.PositiveValue;
            int   negativeValue = trainningData.NegativeValue;

            ConfusionMatrix confusionMatrix = new ConfusionMatrix(predicted, expected, positiveValue, negativeValue);

            return(new List <ConfusionMatrix> {
                confusionMatrix
            });
        }
        // buttonXCreateModel click event
        private void buttonXCreateModel_Click(object sender, EventArgs e)
        {
            DialogResult dialogResult;
            DataTable orginalTrainningTable = this.dataGridViewXTrainning.DataSource as DataTable;
            DataTable tableForTrainning;
            int numberOfTrainningRows = 0;

            // Get number of row form percent
            if (this.comboBoxExTrainningDataPercent.SelectedValue != null)
            {
                numberOfTrainningRows = Convert.ToInt32(Math.Truncate(
                    ((int)comboBoxExTrainningDataPercent.SelectedValue * 1.0 * orginalTrainningTable.Rows.Count) / 100));
            }

            // Set trainning data
            if (numberOfTrainningRows == 0)
            {
                tableForTrainning = orginalTrainningTable;
            }
            else
            {
                var query = orginalTrainningTable.AsEnumerable().Take(numberOfTrainningRows);
                tableForTrainning = query.CopyToDataTable<DataRow>();
            }

            TrainningData trainningData = new TrainningData(tableForTrainning, this.codification);

            Properties.Settings.Default.negativeValue = trainningData.NegativeValue;

            // Ask user what to do when selected model already exists
            if (this.HaveModel())
            {
                dialogResult = MessageBox.Show("Mô hình này đã có. Bạn có muốn tạo mô hình mới?", "Lỗi",
                    MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                if (dialogResult == DialogResult.No || dialogResult == DialogResult.Cancel)
                {
                    return;
                }
            }

            // Check dictionary already have active model. If not add new model
            if (!this.modelList.ContainsKey(this.activeLearningAlgorithm))
            {
                this.modelList.Add(this.activeLearningAlgorithm, ClassificationModel.CreateModel(this.activeLearningAlgorithm));
            }

            // Trainning model
            this.modelList[activeLearningAlgorithm].TrainningModel(trainningData);

        }
Beispiel #8
0
        public override List<ConfusionMatrix> TestModel(TrainningData trainningData)
        {
            ContinuousDataTableAdapter continuousDataTableAdapter = new ContinuousDataTableAdapter();

            DataTable continuousDataTable = continuousDataTableAdapter.GetData();
            DataTable dataTable = continuousDataTable.DefaultView.ToTable(false, TableMetaData.TestingAttributes);
            string[] columnNames;
            double[][] inputs = dataTable.ToArray(out columnNames);

            int[] expected = trainningData.ClassificationAttribute;
            int[] predicted = ComputeModel(inputs);
            int positiveValue = trainningData.PositiveValue;
            int negativeValue = trainningData.NegativeValue;

            ConfusionMatrix confusionMatrix = new ConfusionMatrix(predicted, expected, positiveValue, negativeValue);
            return new List<ConfusionMatrix> { confusionMatrix };
        }
Beispiel #9
0
        public override void TrainningModel(TrainningData trainningData)
        {
            Codification codification = trainningData.CodificationData;            
            int[][] inputs = trainningData.TrainningAttributes.ToInt32();
            int[] outputs = trainningData.ClassificationAttribute;

            int lastIndex = codification.Columns.Count - 1;            

            List<int> symbolCounts = new List<int>();

            for (int indexColumn = 0; indexColumn < lastIndex; indexColumn++)
            {
                symbolCounts.Add(codification[indexColumn].Symbols);
            }

            this.bayes = new NaiveBayes(2, symbolCounts.ToArray());
            this.bayes.Estimate(inputs, outputs); 
        }
Beispiel #10
0
        //public static C45Model CreateC45Model(Codification codification)
        //{
        //    int lastIndex = codification.Columns.Count - 1;

        //    List<DecisionVariable> attributes = new List<DecisionVariable>();

        //    for (int indexColumn = 0; indexColumn < lastIndex; indexColumn++)
        //    {
        //        attributes.Add(new DecisionVariable(codification.Columns[indexColumn].ColumnName,
        //            codification[indexColumn].Symbols));
        //    }

        //    C45Model model = new C45Model(new DecisionTree(attributes.ToArray(), 2));

        //    return model;
        //}

        //public C45Model(DecisionTree tree)
        //{
        //    this.Tree = tree;
        //}

        // Trainning decision tree with C4.5 algorithm
        public override void TrainningModel(TrainningData trainningData)
        {
            // Get data for trainning tree
            Codification codification = trainningData.CodificationData;
            double[][] inputs = trainningData.TrainningAttributes;
            int[] outputs = trainningData.ClassificationAttribute;

            // Create tree
            this.Tree = this.CreateDecisionTree(codification); 
            //var attributes = DecisionVariable.FromCodebook(codification, inputColumns);
            //DecisionTree tree = new DecisionTree(attributes, outputClasses: 5);

           
            // Creates a new instance of the C4.5 learning algorithm
            C45Learning c45 = new C45Learning(this.Tree);

            // Learn the decision tree
            double error = c45.Run(inputs, outputs);        
        }
Beispiel #11
0
        public override void TrainningModel(TrainningData trainningData)
        {
            Codification codification = trainningData.CodificationData;

            int[][] inputs  = trainningData.TrainningAttributes.ToInt32();
            int[]   outputs = trainningData.ClassificationAttribute;

            int lastIndex = codification.Columns.Count - 1;

            List <int> symbolCounts = new List <int>();

            for (int indexColumn = 0; indexColumn < lastIndex; indexColumn++)
            {
                symbolCounts.Add(codification[indexColumn].Symbols);
            }

            this.bayes = new NaiveBayes(2, symbolCounts.ToArray());
            this.bayes.Estimate(inputs, outputs);
        }
Beispiel #12
0
        //public static C45Model CreateC45Model(Codification codification)
        //{
        //    int lastIndex = codification.Columns.Count - 1;

        //    List<DecisionVariable> attributes = new List<DecisionVariable>();

        //    for (int indexColumn = 0; indexColumn < lastIndex; indexColumn++)
        //    {
        //        attributes.Add(new DecisionVariable(codification.Columns[indexColumn].ColumnName,
        //            codification[indexColumn].Symbols));
        //    }

        //    C45Model model = new C45Model(new DecisionTree(attributes.ToArray(), 2));

        //    return model;
        //}

        //public C45Model(DecisionTree tree)
        //{
        //    this.Tree = tree;
        //}

        // Trainning decision tree with C4.5 algorithm
        public override void TrainningModel(TrainningData trainningData)
        {
            // Get data for trainning tree
            Codification codification = trainningData.CodificationData;

            double[][] inputs  = trainningData.TrainningAttributes;
            int[]      outputs = trainningData.ClassificationAttribute;

            // Create tree
            this.Tree = this.CreateDecisionTree(codification);
            //var attributes = DecisionVariable.FromCodebook(codification, inputColumns);
            //DecisionTree tree = new DecisionTree(attributes, outputClasses: 5);


            // Creates a new instance of the C4.5 learning algorithm
            C45Learning c45 = new C45Learning(this.Tree);

            // Learn the decision tree
            double error = c45.Run(inputs, outputs);
        }
Beispiel #13
0
        public override List <ConfusionMatrix> TestModel(TrainningData trainningData)
        {
            ContinuousDataTableAdapter continuousDataTableAdapter = new ContinuousDataTableAdapter();

            DataTable continuousDataTable = continuousDataTableAdapter.GetData();
            DataTable dataTable           = continuousDataTable.DefaultView.ToTable(false, TableMetaData.TestingAttributes);

            string[]   columnNames;
            double[][] inputs = dataTable.ToArray(out columnNames);

            int[] expected      = trainningData.ClassificationAttribute;
            int[] predicted     = ComputeModel(inputs);
            int   positiveValue = trainningData.PositiveValue;
            int   negativeValue = trainningData.NegativeValue;

            ConfusionMatrix confusionMatrix = new ConfusionMatrix(predicted, expected, positiveValue, negativeValue);

            return(new List <ConfusionMatrix> {
                confusionMatrix
            });
        }
 public abstract void TrainningModel(TrainningData trainningData);       
        // buttonXTestModel click event
        private void buttonXTestModel_Click(object sender, EventArgs e)
        {
            int numberOfTrainningRows = 0;
            DataTable orginalTrainningTable = this.dataGridViewXTrainning.DataSource as DataTable;
            DataTable testTable;

            // Get number of row form percent
            if (this.comboBoxExTrainningDataPercent.SelectedValue != null)
            {
                numberOfTrainningRows = Convert.ToInt32(Math.Truncate(
                    ((int)comboBoxExTrainningDataPercent.SelectedValue * 1.0 * orginalTrainningTable.Rows.Count) / 100));
            }

            // Set test data
            var query = orginalTrainningTable.AsEnumerable().Skip(numberOfTrainningRows);
            testTable = query.CopyToDataTable<DataRow>();

            if (!HaveModel())
            {
                MessageBox.Show("Chưa có mô hình!", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            TrainningData data = new TrainningData(testTable, this.codification);
            // Show test result
            dataGridViewXTrainningResult.DataSource = this.modelList[activeLearningAlgorithm].TestModel(data);

            List<int> hideColumns = new List<int>(new int[] { 9, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 });

            for (int indexColum = 0; indexColum < this.dataGridViewXTrainningResult.Columns.Count; indexColum++)
            {
                if (hideColumns.Contains(indexColum))
                {
                    this.dataGridViewXTrainningResult.Columns[indexColum].Visible = false;
                }
            }
        }
Beispiel #16
0
 public abstract void TrainningModel(TrainningData trainningData);