private void cmbox_case_SelectedIndexChanged_2(object sender, EventArgs e) { if ((conn.State == ConnectionState.Closed) && (cmbox_case.SelectedValue.ToString() != "System.Data.DataRowView")) { DataTable mydt = Db.get_table_contetnt_condition("tbl_cases", "case_name", cmbox_case.Text); ArrayList myarr = Db.get_cases_as_arraylist(cmbox_case.SelectedValue.ToString(), cmbox_case.Text); mybestchoice = new BestChoice(myarr, mydt.Rows[0]["standrize_type"].ToString(), mydt.Rows[0]["kmeans_method"].ToString(), mydt.Rows[0]["clusters_num"].ToString()); mybestchoice.Cases = Db.get_cases_condition(mybestchoice.Tablename_Standardization, mybestchoice.CaseName); statistics = new Statistics(mybestchoice.TableName, mybestchoice.CaseName); lstBox_Notes.Items.Add("Fetching data from database"); dG_data.DataSource = Db.get_all_cases(cmbox_case.SelectedValue.ToString()); DataTable countcluster = Db.get_count_cluster(mybestchoice.TableName); dg_clusters.Rows.Clear(); dg_clusters.Columns.Clear(); dg_clusters.Columns.Add("cluster", "cluster"); dg_clusters.Columns.Add("count", "count"); dg_clusters.Rows.Add(countcluster.Rows.Count + 1); dg_clusters.Rows[0].Cells[0].Value = "عدد العناقيد الكلي"; dg_clusters.Rows[0].Cells[1].Value = countcluster.Rows.Count; for (int i = 0; i < countcluster.Rows.Count; i++) { dg_clusters.Rows[i + 1].Cells[0].Value = countcluster.Rows[i][1]; dg_clusters.Rows[i + 1].Cells[1].Value = countcluster.Rows[i][0]; } List <Case> centroids = Db.get_Centroids(mybestchoice.Tablename_Standardization, mybestchoice.CaseName); mybestchoice.Clusters = new KmeansPlus.PointClusters(); for (int i = 0; i < centroids.Count; i++) { mybestchoice.Clusters.PC.Add(centroids[i], Db.get_cases_condition_cluster(mybestchoice.TableName, mybestchoice.CaseName, "cluster", centroids[i].GetFeature("id").GetFeatureValue().ToString())); } } conn.Close(); }
private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) { ArrayList myarr = Db.get_cases_as_arraylist_condition(dataGridView1.SelectedRows[0].Cells["tbl_name"].Value.ToString(), dataGridView1.SelectedRows[0].Cells["case_name"].Value.ToString()); choice = new BestChoice(myarr, dataGridView1.SelectedRows[0].Cells["standrize_type"].Value.ToString(), dataGridView1.SelectedRows[0].Cells["kmeans_method"].Value.ToString(), dataGridView1.SelectedRows[0].Cells["clusters_num"].Value.ToString()); dataGridView_old.DataSource = Db.get_table_contetnt(dataGridView1.SelectedRows[0].Cells["tbl_name"].Value.ToString()); dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; }
//----------------------------------------------------------------------------------------- private void cmbox_case_SelectedIndexChanged(object sender, EventArgs e) { if (cmbox_case.SelectedValue.ToString() != "System.Data.DataRowView") { ArrayList myarr = Db.get_cases_as_arraylist(cmbox_case.SelectedValue.ToString(), cmbox_case.Text); DataTable mydt = Db.get_table_contetnt_condition("tbl_cases", "case_name", cmbox_case.Text); mybestchoice = new BestChoice(myarr, mydt.Rows[0]["standrize_type"].ToString(), mydt.Rows[0]["kmeans_method"].ToString(), mydt.Rows[0]["clusters_num"].ToString()); mybestchoice.Cases = Db.get_cases_condition(mybestchoice.Tablename_Standardization, mybestchoice.CaseName); statistics = new Statistics(mybestchoice.TableName, mybestchoice.CaseName); } }
private void radioButton2_Click_1(object sender, EventArgs e) { //cmbox_case.Items.Clear(); dG_data.DataSource = null; // Create an instance of the open file dialog box. OpenFileDialog openFileDialog1 = new OpenFileDialog(); // Set filter options and filter index. openFileDialog1.Filter = "Text Files (.txt)|*.txt|All Files (*.*)|*.*"; openFileDialog1.FilterIndex = 1; openFileDialog1.Multiselect = true; // Call the ShowDialog method to show the dialog box. DialogResult userClickedOK = openFileDialog1.ShowDialog(); // Process input if the user clicked OK. if (userClickedOK.Equals(DialogResult.OK)) { string url = openFileDialog1.FileName; // Open the selected file to read. System.IO.Stream fileStream = openFileDialog1.OpenFile(); // تحميل الى datagrid IOCBRFile myfile = OCBRFileFactory.newInstance(url, true); ArrayList ArrayCases = myfile.GetCases(); string CaseName = myfile.GetCaseName(); List <Case> ListCases = myfile.GetListCases(); mybestchoice = new BestChoice(ArrayCases, ListCases, "MN", "KPP"); if (ArrayCases.Count != 0) { for (int j = 0; j < ListCases[0].GetFeatures().Count; j++) { Feature feature = (Feature)ListCases[0].GetFeatures()[j]; dG_data.Columns.Add(feature.GetFeatureName().ToString(), feature.GetFeatureName().ToString()); } dG_data.Rows.Add(ArrayCases.Count); } for (int i = 0; i < ArrayCases.Count; i++) { Case c = (Case)ArrayCases[i]; for (int j = 0; j < c.GetFeatures().Count; j++) { Feature f = (Feature)c.GetFeatures()[j]; dG_data.Rows[i].Cells[j].Value = f.GetFeatureValue(); } } } }
public void GetRandomCases_File() { exp_random_cases.Clear(); exp_random_cases_nonstandrize.Clear(); Case Max_Mean = Db.get_Case_data(standrize_table, -2); Case Min_Sd = Db.get_Case_data(standrize_table, -3); List <Case> templist = new List <Case>(); templist = Db.read_file(); if (templist.Count != 0) { for (int i = 0; i < templist.Count; i++) { exp_random_cases_nonstandrize.Add(templist[i]); // i have to put general seetings for normalization a Case c = BestChoice.StandardizeCase(templist[i], Max_Mean, Min_Sd, standrize_type); exp_random_cases.Add(c); } } }
//========================================================================================= public void GenerateRandomCases() { exp_random_cases.Clear(); Case Max_Mean = Db.get_Case_data(standrize_table, -2); Case Min_Sd = Db.get_Case_data(standrize_table, -3); Random r = new Random(); List <Case> Cases = Db.get_cases_condition(tablename, casename); for (int i = 0; i < 100; i++) { double x = 0; Case c = new Case(0, Max_Mean.GetCaseName(), ""); for (int j = 0; j < Max_Mean.GetFeatures().Count; j++) { Feature max_f = (Feature)Max_Mean.GetFeatures()[j]; Feature min_f = (Feature)Min_Sd.GetFeatures()[j]; if (max_f.GetFeatureName() == "id") { x = (double)i; } else if (max_f.GetFeatureName() == "cluster") { x = -1; } else if (max_f.GetFeatureType() >= 5 && max_f.GetFeatureType() <= 9)// mstring, string, ordinal, categorical { int k = r.Next(0, Cases.Count); Feature f = (Feature)Cases[k].GetFeatures()[j]; c.AddFeature(max_f.GetFeatureName(), max_f.GetFeatureType(), f.GetFeatureValue(), max_f.GetWeight(), max_f.GetIsKey(), max_f.GetIsIndex(), max_f.GetFeatureUnit()); continue; } else if (max_f.GetFeatureType() == 1)// mstring, string, ordinal, categorical { int k = r.Next(0, 2); bool o = false; if (k == 1) { o = true; } c.AddFeature(max_f.GetFeatureName(), max_f.GetFeatureType(), o, max_f.GetWeight(), max_f.GetIsKey(), max_f.GetIsIndex(), max_f.GetFeatureUnit()); continue; } else if (max_f.GetFeatureType() == 2) { int max = Convert.ToInt32(max_f.GetFeatureValue()); int min = Convert.ToInt32(min_f.GetFeatureValue()); x = r.Next(min, max + 1); } else { double max = Convert.ToDouble(max_f.GetFeatureValue()); double min = Convert.ToDouble(min_f.GetFeatureValue()); x = r.NextDouble(min, max + 0.05); x = Math.Round(x, 1); } c.AddFeature(max_f.GetFeatureName(), max_f.GetFeatureType(), x, max_f.GetWeight(), max_f.GetIsKey(), max_f.GetIsIndex(), max_f.GetFeatureUnit()); } exp_random_cases_nonstandrize.Add(c); // i have to put general seetings for normalization exp_random_cases.Add(BestChoice.StandardizeCase(c, Max_Mean, Min_Sd, standrize_type)); } }
private void button5_Click_1(object sender, EventArgs e) { statistics = new Statistics(mybestchoice.TableName, mybestchoice.CaseName); Case Max_Mean = Db.get_Case_data(statistics.standrize_table, -2); Case Min_Sd = Db.get_Case_data(statistics.standrize_table, -3); string url = ""; System.IO.StreamReader reader = null; OpenFileDialog openFileDialog1 = new OpenFileDialog(); ArrayList inputs = new ArrayList(); // Set filter options and filter index. openFileDialog1.Filter = "Text Files (.key)|*.key|All Files (*.*)|*.*"; openFileDialog1.FilterIndex = 1; openFileDialog1.Multiselect = true; // Call the ShowDialog method to show the dialog box. DialogResult userClickedOK = openFileDialog1.ShowDialog(); // Process input if the user clicked OK. if (userClickedOK.Equals(DialogResult.OK)) { url = openFileDialog1.FileName; reader = File.OpenText(url); if (reader == null) { System.Console.WriteLine("file open failed " + url); return; } for (int i = 0; i < dataGV_CaseEntries.Rows.Count; i++) { string s = reader.ReadLine(); dataGV_CaseEntries.Rows[i].Cells["UserEntry"].Value = s; inputs.Add(s); } reader.Close(); } Case _problem = new Case(0, mybestchoice.CaseName, ""); _problem.AddFeature("id", FeatureType.TYPE_FEATURE_INT, 0, 1.0, false, false, "num"); for (int i = 0; i < dataGV_CaseEntries.Rows.Count - 1; i++) { if (dataGV_CaseEntries.Rows[i].Cells["UserEntry"].Value.ToString() != "".ToString()) { _problem.AddFeature( dataGV_CaseEntries.Rows[i].Cells["FeatureName"].Value.ToString().Trim(), Token.GetType(dataGV_CaseEntries.Rows[i].Cells["FeatureType"].Value.ToString().Trim()), dataGV_CaseEntries.Rows[i].Cells["UserEntry"].Value.ToString().Trim(), Convert.ToDouble(dataGV_CaseEntries.Rows[i].Cells["FeatureWeight"].Value.ToString().Trim()), Convert.ToBoolean(dataGV_CaseEntries.Rows[i].Cells["FeatureKey"].Value.ToString().Trim()), Convert.ToBoolean(dataGV_CaseEntries.Rows[i].Cells["FeatureIndex"].Value.ToString().Trim()), dataGV_CaseEntries.Rows[i].Cells["FeatureUnit"].Value.ToString().Trim()); } } _problem.AddFeature("cluster", FeatureType.TYPE_FEATURE_INT, 0, 1.0, false, false, "num"); statistics.exp_random_cases.Add(BestChoice.StandardizeCase(_problem, Max_Mean, Min_Sd, statistics.standrize_type)); statistics.exp_random_cases_nonstandrize.Add(_problem); mybestchoice.Problem = statistics.exp_random_cases_nonstandrize[0]; mybestchoice.StandrizeProblem = statistics.exp_random_cases[0]; }
private void button3_Click(object sender, EventArgs e) { var watch = System.Diagnostics.Stopwatch.StartNew(); string Standrize_Type = ""; if (rbtn_normalize.Checked) { Standrize_Type = "Q"; } else if (rbtn_minmax.Checked) { Standrize_Type = "MN"; } else { Standrize_Type = "none"; } string Kmeans_Method = ""; if (rbtn_kmeansPlus.Checked) { Kmeans_Method = "KPP"; } else if (rbtn_simpleKmean.Checked) { Kmeans_Method = "K"; } else { Kmeans_Method = "none"; } string Clusters_num = txt_cluster.Text; mybestchoice = new BestChoice(ArrayCases, Standrize_Type, Kmeans_Method, Clusters_num); standardize_current_cases = mybestchoice.StandardizeData(ArrayCases); if (rbtn_simpleKmean.Checked) { // Kmeans kmeans = new Kmeans(int.Parse(txt_cluster.Text), standardize_current_cases); // kmeans.run(); // Number of Attributes List <Cluster> AllClusters = new List <Cluster>(); AllClusters.Add(null); Cluster myc = new Cluster(); int Nd = standardize_current_cases[0].GetFeatures().Count - 2;//except id , cluster Kmeans kmeans = new Kmeans(1, standardize_current_cases); kmeans.run(); myc.clusters = kmeans.clusters; foreach (double sk in kmeans.distances) { myc.sk += sk; } myc.fk = 1; myc.k = 1; AllClusters.Add(myc); for (int ik = 2; ik <= 5; ik++)//19 { myc = new Cluster(); kmeans = new Kmeans(ik, standardize_current_cases); kmeans.run(); myc.k = ik; myc.clusters = kmeans.clusters; foreach (double sk in kmeans.distances) { myc.sk += sk; } if (AllClusters[ik - 1].sk == 0) { myc.fk = 1; } else { double ak = 1; if (Nd > 1) { ak = Convert.ToDouble(kmeans.Ak(ik, Nd)); } myc.fk = myc.sk / (ak * AllClusters[ik - 1].sk); } AllClusters.Add(myc); } double min = double.MaxValue; int kk = 0; for (int ik = 1; ik <= 19; ik++) { if (AllClusters[ik].fk < min) { kk = AllClusters[ik].k; kmeans.clusters = AllClusters[ik].clusters; min = AllClusters[ik].fk; } } watch.Stop(); textBox1.Text = min.ToString(); txt_cluster.Text = kk.ToString(); var elapsedMs = watch.ElapsedMilliseconds; label3.Text = "with clustring time " + elapsedMs.ToString(); int t = 0; int i = 0; dataGridView1.Rows.Clear(); dataGridView1.Columns.Clear(); for (int j = 0; j < ListCases[0].GetFeatures().Count; j++) { Feature feature = (Feature)ListCases[0].GetFeatures()[j]; dataGridView1.Columns.Add(feature.GetFeatureName().ToString(), feature.GetFeatureName().ToString()); } dataGridView2.Rows.Clear(); dataGridView2.Columns.Clear(); dataGridView1.Rows.Add(ArrayCases.Count); dataGridView2.Columns.Add("cluster", "cluster"); dataGridView2.Columns.Add("count", "count"); dataGridView2.Rows.Add(kmeans.clusters.Count); foreach (List <Case> list in kmeans.clusters) // for each cluster, define a new centroid { kmeans.centroids[t].GetFeature("id").SetFeatureValue(t); standardize_current_cases.Add(kmeans.centroids[t]); dataGridView2.Rows[t].Cells[0].Value = t.ToString(); dataGridView2.Rows[t].Cells[1].Value = list.Count; mybestchoice.Cost_Function += kmeans.distances[t]; foreach (Case c in list) // Determine the poit on clusters { Case realcase = ListCases.Find( delegate(Case ca) { return(ca.GetFeature("id").GetFeatureValue() == c.GetFeature("id").GetFeatureValue()); } ); realcase.GetFeature("cluster").SetFeatureValue(t); c.GetFeature("cluster").SetFeatureValue(t); for (int j = 0; j < c.GetFeatures().Count; j++) { Feature f = (Feature)realcase.GetFeatures()[j]; dataGridView1.Rows[i].Cells[j].Value = f.GetFeatureValue(); } i++; } t++; } } else if (rbtn_kmeansPlus.Checked) { KmeansPlus mykp = new KmeansPlus(); KmeansPlus.PointClusters myclusters; List <KmeansPlus.PointClusters> Allmyclusters = new List <KmeansPlus.PointClusters>(); // myclusters = mykp.GetKMeansPP(standardize_current_cases,int.Parse( Clusters_num)); double min_fk = Double.MaxValue; int min_i = 0; for (int j = 0; j < 100; j++) { myclusters = new KmeansPlus.PointClusters(); myclusters = mykp.GetKMeansPP_K(standardize_current_cases); Allmyclusters.Add(myclusters); if (myclusters.Fk < min_fk) { min_i = j; } } myclusters = Allmyclusters[min_i]; // KmeansPlus mykp = new KmeansPlus(); // KmeansPlus.PointClusters myclusters =new KmeansPlus.PointClusters();; // myclusters = mykp.GetKMeansPP_K(standardize_current_cases); textBox1.Text = myclusters.Fk.ToString(); txt_cluster.Text = myclusters.PC.Count.ToString(); watch.Stop(); var elapsedMs = watch.ElapsedMilliseconds; label3.Text = "with clustring time " + elapsedMs.ToString(); foreach (Case centroid in myclusters.PC.Keys) { standardize_current_cases.Add(centroid); } // intialize db grids int t = 0; int i = 0; int countcluster = myclusters.PC.Count; dataGridView1.Rows.Clear(); dataGridView1.Columns.Clear(); for (int j = 0; j < ListCases[0].GetFeatures().Count; j++) { Feature feature = (Feature)ListCases[0].GetFeatures()[j]; dataGridView1.Columns.Add(feature.GetFeatureName().ToString(), feature.GetFeatureName().ToString()); } dataGridView2.Rows.Clear(); dataGridView2.Columns.Clear(); dataGridView1.Rows.Add(ArrayCases.Count); dataGridView2.Columns.Add("cluster", "cluster"); dataGridView2.Columns.Add("count", "count"); dataGridView2.Rows.Add(countcluster); foreach (List <Case> cluster in myclusters.PC.Values) { dataGridView2.Rows[t].Cells[0].Value = t.ToString(); dataGridView2.Rows[t].Cells[1].Value = cluster.Count; foreach (Case c in cluster) { Case realcase = ListCases.Find( delegate(Case ca) { return(ca.GetFeature("id").GetFeatureValue() == c.GetFeature("id").GetFeatureValue()); } ); realcase.GetFeature("cluster").SetFeatureValue(t); c.GetFeature("cluster").SetFeatureValue(t); for (int j = 0; j < c.GetFeatures().Count; j++) { Feature f = (Feature)realcase.GetFeatures()[j]; dataGridView1.Rows[i].Cells[j].Value = f.GetFeatureValue(); } i++; } // end feautres t++; } // end clusters } // end if else if (rbtn_nonekmeans.Checked) { dataGridView1.DataSource = Db.get_table_contetnt(mybestchoice.TableName); } // for sorting comboBox1.Items.Clear(); for (int i = 0; i < dataGridView1.Columns.Count; i++) { comboBox1.Items.Add(dataGridView1.Columns[i].HeaderText); } comboBox1.Text = "id"; dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; }