Example #1
0
        //Hàm dùng để huấn luyện dữ liệu dành cho thuật toán Naive Bayes
        public static void HuanLuyenBayes(int row)
        {
            BayesObjectTableAdapter dtBayesAdapter = new BayesObjectTableAdapter();
            DataSetTempTableAdapter dtSetTempTA    = new DataSetTempTableAdapter();

            int       rowCount        = row;
            DataTable dataForTraining = dtSetTempTA.GetDataByNumber(rowCount);

            DiabetesDataSet.BayesObjectDataTable dtBayes = dtBayesAdapter.GetData();
            foreach (DataRow dtRow in dtBayes.Rows)
            {
                String colName      = dtRow[1].ToString();
                String khoangRoiRac = dtRow[2].ToString();
                String tieuDuong    = dtRow[4].ToString();
                String iQuery       = "" + colName + "='" + khoangRoiRac + "' and TieuDuong='" + tieuDuong + "'";
                int    soLuong      = dataForTraining.Select(iQuery).Count();
                if (soLuong == 0)
                {
                    soLuong = 1;
                }

                dtRow[3] = soLuong;
                dtBayesAdapter.Update((dtBayes));
            }
        }
Example #2
0
        //Hàm dùng để tính kết quả của một bảng trong bộ thử nghiệm
        public static DataTable NaiveBayes(DataTable dtTestSet)
        {
            BayesObjectTableAdapter bayesTA       = new BayesObjectTableAdapter();
            DataSetTempTableAdapter dataSetTempTA = new DataSetTempTableAdapter();
            int       dataForTrainingRowsCount    = (int)dataSetTempTA.CountRows() - dtTestSet.Rows.Count;
            DataTable dtBayes         = bayesTA.GetData();
            DataTable dtdataSetTemp   = dataSetTempTA.GetDataByNumber(dataForTrainingRowsCount);
            int       possiveNumber   = dtdataSetTemp.Select("TieuDuong='True'").Count();
            int       negativeNumber  = dtdataSetTemp.Select("TieuDuong='False'").Count();
            int       allNumber       = possiveNumber + negativeNumber;
            int       indexLastColumn = dtTestSet.Columns.Count - 1;

            foreach (DataRow dtRow in dtTestSet.Rows)
            {
                Decimal pColTrue  = 1;
                Decimal pColFalse = 1;
                for (int i = 1; i < dtTestSet.Columns.Count - 2; i++)
                {
                    String  colName           = dtTestSet.Columns[i].ColumnName;
                    String  khoangRoiRac      = dtRow[i].ToString();
                    DataRow possiveRow        = dtBayes.Select("TenThuocTinh='" + colName + "' and KhoangRoiRac='" + khoangRoiRac + "' and TieuDuong='True'")[0];
                    DataRow negativeRow       = dtBayes.Select("TenThuocTinh='" + colName + "' and KhoangRoiRac='" + khoangRoiRac + "' and TieuDuong='False'")[0];
                    Decimal ColPossiveNumber  = Convert.ToDecimal(possiveRow[3]);
                    Decimal ColNegativeNumber = Convert.ToDecimal(negativeRow[3]);
                    pColTrue  = pColTrue * ColPossiveNumber / possiveNumber;
                    pColFalse = pColFalse * ColNegativeNumber / negativeNumber;
                }
                Decimal pRowTrue  = pColTrue * possiveNumber / allNumber;
                Decimal pRowFalse = pColFalse * negativeNumber / allNumber;
                if (pRowFalse == 0)
                {
                    dtRow["TieuDuong"] = "False";
                }
                else
                {
                    if (pRowTrue > pRowFalse)
                    {
                        dtRow["TieuDuong"] = "True";
                    }
                    else
                    {
                        dtRow["TieuDuong"] = "False";
                    }
                }
            }
            return(dtTestSet);
        }
Example #3
0
        private void buttonXDataDiscretization_Click(object sender, EventArgs e)
        {
            int illegalInputCount = 0;
            BayesObjectTableAdapter bayesObjectTableAdapter = new BayesObjectTableAdapter();
            DataSetTempTableAdapter dataSetTempTableAdapter = new DataSetTempTableAdapter();
            DataSetTableAdapter     dataSetTableAdapter     = new DataSetTableAdapter();


            for (int i = listIntervalValue.Count - 1; i > 0; i--)
            {
                double currentValue  = listIntervalValue[i];
                double previousValue = listIntervalValue[i - 1];
                if (currentValue <= previousValue)
                {
                    illegalInputCount++;
                    break;
                }
            }
            if (illegalInputCount > 0)
            {
                MessageBox.Show("Giá trị của từng khoảng nhập vào không hợp lệ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                bayesObjectTableAdapter.DeleteByOne(this.ColName);
                DataTable dtDataSetForPreProcessing = dataSetTableAdapter.GetData();
                DiabetesDataSet.DataSetTempDataTable dtDataSetTemp = dataSetTempTableAdapter.GetData();

                int rowIndex = 0;
                foreach (DataRow dtRow in dtDataSetForPreProcessing.Rows)
                {
                    decimal colValue            = Convert.ToDecimal(dtRow[this.ColName]);
                    decimal maBn                = Convert.ToDecimal(dtRow["MaBn"]);
                    String  discretizationValue = DataDiscretization(colValue, this.listIntervalValue);

                    dtDataSetTemp.Rows[rowIndex][this.ColName] = discretizationValue;
                    rowIndex++;
                }
                dataSetTempTableAdapter.Update(dtDataSetTemp);
                CreateBayesObject(this.ColName, this.listIntervalValue);
            }
            this.Close();
        }
        private void buttonXDataDiscretization_Click(object sender, EventArgs e)
        {
            int illegalInputCount = 0;
            BayesObjectTableAdapter bayesObjectTableAdapter = new BayesObjectTableAdapter();
            DataSetTempTableAdapter dataSetTempTableAdapter = new DataSetTempTableAdapter();
            DataSetTableAdapter dataSetTableAdapter = new DataSetTableAdapter();


            for (int i = listIntervalValue.Count - 1; i > 0; i--)
            {
                double currentValue = listIntervalValue[i];
                double previousValue = listIntervalValue[i - 1];
                if (currentValue <= previousValue)
                {
                    illegalInputCount++;
                    break;
                }
                
            }
            if (illegalInputCount > 0)
                MessageBox.Show("Giá trị của từng khoảng nhập vào không hợp lệ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            else
            {
                bayesObjectTableAdapter.DeleteByOne(this.ColName);
                DataTable dtDataSetForPreProcessing = dataSetTableAdapter.GetData();
                DiabetesDataSet.DataSetTempDataTable dtDataSetTemp = dataSetTempTableAdapter.GetData();

                int rowIndex = 0;
                foreach (DataRow dtRow in dtDataSetForPreProcessing.Rows)
                {
                    decimal colValue = Convert.ToDecimal(dtRow[this.ColName]);
                    decimal maBn = Convert.ToDecimal(dtRow["MaBn"]);
                    String discretizationValue = DataDiscretization(colValue, this.listIntervalValue);

                    dtDataSetTemp.Rows[rowIndex][this.ColName] = discretizationValue;
                    rowIndex++;
                }
                dataSetTempTableAdapter.Update(dtDataSetTemp);
                CreateBayesObject(this.ColName, this.listIntervalValue);
            }
            this.Close();
        }
Example #5
0
        //Hàm dùng để tính kết quả của một bảng trong bộ thử nghiệm
        public static DataTable NaiveBayes(DataTable dtTestSet)
        {
            BayesObjectTableAdapter bayesTA = new BayesObjectTableAdapter();
            DataSetTempTableAdapter dataSetTempTA = new DataSetTempTableAdapter();
            int dataForTrainingRowsCount = (int)dataSetTempTA.CountRows() - dtTestSet.Rows.Count;
            DataTable dtBayes = bayesTA.GetData();
            DataTable dtdataSetTemp = dataSetTempTA.GetDataByNumber(dataForTrainingRowsCount);
            int possiveNumber = dtdataSetTemp.Select("TieuDuong='True'").Count();
            int negativeNumber = dtdataSetTemp.Select("TieuDuong='False'").Count();
            int allNumber = possiveNumber + negativeNumber;
            int indexLastColumn = dtTestSet.Columns.Count - 1;

            foreach (DataRow dtRow in dtTestSet.Rows)
            {
                Decimal pColTrue = 1;
                Decimal pColFalse = 1;
                for (int i = 1; i < dtTestSet.Columns.Count - 2; i++)
                {
                    String colName = dtTestSet.Columns[i].ColumnName;
                    String khoangRoiRac = dtRow[i].ToString();
                    DataRow possiveRow = dtBayes.Select("TenThuocTinh='" + colName + "' and KhoangRoiRac='" + khoangRoiRac + "' and TieuDuong='True'")[0];
                    DataRow negativeRow = dtBayes.Select("TenThuocTinh='" + colName + "' and KhoangRoiRac='" + khoangRoiRac + "' and TieuDuong='False'")[0];
                    Decimal ColPossiveNumber = Convert.ToDecimal(possiveRow[3]);
                    Decimal ColNegativeNumber = Convert.ToDecimal(negativeRow[3]);
                    pColTrue = pColTrue * ColPossiveNumber / possiveNumber;
                    pColFalse = pColFalse * ColNegativeNumber / negativeNumber;
                }
                Decimal pRowTrue = pColTrue * possiveNumber / allNumber;
                Decimal pRowFalse = pColFalse * negativeNumber / allNumber;
                if (pRowFalse == 0)
                    dtRow["TieuDuong"] = "False";
                else
                {
                    if (pRowTrue > pRowFalse)
                        dtRow["TieuDuong"] = "True";
                    else
                        dtRow["TieuDuong"] = "False";
                }
            }
            return dtTestSet;
        }
Example #6
0
        //Hàm dùng để huấn luyện dữ liệu dành cho thuật toán Naive Bayes
        public static void HuanLuyenBayes(int row)
        {
            BayesObjectTableAdapter dtBayesAdapter = new BayesObjectTableAdapter();
            DataSetTempTableAdapter dtSetTempTA = new DataSetTempTableAdapter();

            int rowCount = row;
            DataTable dataForTraining = dtSetTempTA.GetDataByNumber(rowCount);
            DiabetesDataSet.BayesObjectDataTable dtBayes = dtBayesAdapter.GetData();
            foreach (DataRow dtRow in dtBayes.Rows)
            {
                String colName = dtRow[1].ToString();
                String khoangRoiRac = dtRow[2].ToString();
                String tieuDuong = dtRow[4].ToString();
                String iQuery = "" + colName + "='" + khoangRoiRac + "' and TieuDuong='" + tieuDuong + "'";
                int soLuong = dataForTraining.Select(iQuery).Count();
                if (soLuong == 0)
                    soLuong = 1;

                dtRow[3] = soLuong;
                dtBayesAdapter.Update((dtBayes));
            }
        }
Example #7
0
 private void buttonXDiscretizationDataStatistics_Click(object sender, EventArgs e)
 {
     if (checkedListBoxColumnName.SelectedIndex == -1)
     {
         MessageBox.Show("Chưa chọn thuộc tính để xem thống kê", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
     else
     {
         String colName = checkedListBoxColumnName.SelectedItem.ToString();
         BayesObjectTableAdapter bayesObjectTableAdapter = new BayesObjectTableAdapter();
         DataSetTempTableAdapter dataSetTempTableAdapter = new DataSetTempTableAdapter();
         DataTable dtBayesForStatistics   = bayesObjectTableAdapter.GetData();
         DataTable dtSetTempForStatistics = dataSetTempTableAdapter.GetData();
         DataRow[] bayesRows = bayesObjectTableAdapter.GetData().Select("TenThuocTinh='" + colName + "'");
         dtBayesForStatistics.Clear();
         int iCount = 0;
         foreach (DataRow bayesRow in bayesRows)
         {
             String tenThuocTinh = bayesRow["TenThuocTinh"].ToString();
             String khoangRoiRac = bayesRow["KhoangRoiRac"].ToString();
             String tieuDuong    = bayesRow["TieuDuong"].ToString();
             int    tongSoLuong  = 0;
             String iQuery       = "" + tenThuocTinh + "='" + khoangRoiRac + "' and TieuDuong='" + tieuDuong + "'";
             tongSoLuong = dtSetTempForStatistics.Select(iQuery).Count();
             DataRow newRow = dtBayesForStatistics.NewRow();
             iCount++;
             newRow[0] = iCount;
             newRow[1] = tenThuocTinh;
             newRow[2] = khoangRoiRac;
             newRow[3] = tongSoLuong;
             newRow[4] = tieuDuong;
             dtBayesForStatistics.Rows.Add(newRow);
         }
         dataGridViewXDescriptiveData.DataSource            = dtBayesForStatistics;
         dataGridViewXDescriptiveData.Columns["ID"].Visible = true;
     }
 }
        private void buttonXDiscretizationDataStatistics_Click(object sender, EventArgs e)
        {
            if (checkedListBoxColumnName.SelectedIndex == -1)
                MessageBox.Show("Chưa chọn thuộc tính để xem thống kê", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            else
            {
                String colName = checkedListBoxColumnName.SelectedItem.ToString();
                BayesObjectTableAdapter bayesObjectTableAdapter = new BayesObjectTableAdapter();
                DataSetTempTableAdapter dataSetTempTableAdapter = new DataSetTempTableAdapter();
                DataTable dtBayesForStatistics = bayesObjectTableAdapter.GetData();
                DataTable dtSetTempForStatistics = dataSetTempTableAdapter.GetData();
                DataRow[] bayesRows = bayesObjectTableAdapter.GetData().Select("TenThuocTinh='" + colName + "'");
                dtBayesForStatistics.Clear();
                int iCount = 0;
                foreach (DataRow bayesRow in bayesRows)
                {

                    String tenThuocTinh = bayesRow["TenThuocTinh"].ToString();
                    String khoangRoiRac = bayesRow["KhoangRoiRac"].ToString();
                    String tieuDuong = bayesRow["TieuDuong"].ToString();
                    int tongSoLuong = 0;
                    String iQuery = "" + tenThuocTinh + "='" + khoangRoiRac + "' and TieuDuong='" + tieuDuong + "'";
                    tongSoLuong = dtSetTempForStatistics.Select(iQuery).Count();
                    DataRow newRow = dtBayesForStatistics.NewRow();
                    iCount++;
                    newRow[0] = iCount;
                    newRow[1] = tenThuocTinh;
                    newRow[2] = khoangRoiRac;
                    newRow[3] = tongSoLuong;
                    newRow[4] = tieuDuong;
                    dtBayesForStatistics.Rows.Add(newRow);
                }
                dataGridViewXDescriptiveData.DataSource = dtBayesForStatistics;
                dataGridViewXDescriptiveData.Columns["ID"].Visible = true;
            }
        }