protected void Page_Load(object sender, EventArgs e) { string sql = "select height, weight, footsize from TblBodies"; SQLHelper sh = new SQLHelper(); DataTable dt = new DataTable(); DataSet ds = new DataSet(); try { sh.RunSQL(sql, ref ds); if (ds.Tables[0] != null) { dt = ds.Tables[0]; if (dt.Rows.Count > 0) { double[][] rawData = new double[dt.Rows.Count][]; int i = 0; int columns = dt.Columns.Count; foreach (DataRow dr in dt.Rows) { if (i < dt.Rows.Count) { List <double> ls = new List <double>(); for (int j = 0; j < columns; j++) { ls.Add(double.Parse(dr[j].ToString())); } rawData[i] = ls.ToArray(); i++; } } int numClusters = 2; int[] clustering = ClassKmeans.Cluster(rawData, numClusters); Response.Write("K=2时,分类如下:</br>"); ShowClustered(rawData, clustering, numClusters, 1); numClusters = 3; int[] clustering2 = ClassKmeans.Cluster(rawData, numClusters); Response.Write("K=3时,分类如下:</br>"); ShowClustered(rawData, clustering2, numClusters, 1); } } } catch (Exception ex) { Response.Write(ex.Message); } finally { sh.Close(); } }
protected void Page_Load(object sender, EventArgs e) { string sql = "select name, power, wisdom from TblGenerals"; SQLHelper sh = new SQLHelper(); DataTable dt = new DataTable(); DataSet ds = new DataSet(); try { sh.RunSQL(sql, ref ds); if (ds.Tables[0] != null) { dt = ds.Tables[0]; if (dt.Rows.Count > 0) { double[][] rawData = new double[dt.Rows.Count][]; string[] general = new string[dt.Rows.Count]; int i = 0; int columns = dt.Columns.Count; foreach (DataRow dr in dt.Rows) { if (i < dt.Rows.Count) { List <double> ls = new List <double>(); for (int j = 1; j < columns; j++) { ls.Add(double.Parse(dr[j].ToString())); } rawData[i] = ls.ToArray(); general[i] = dr[0].ToString(); i++; } } int numClusters = 2; int[] clustering = ClassKmeans.Cluster(rawData, numClusters); ShowClustered(general, clustering, numClusters, 1); string output = JsonConvert.SerializeObject(rawData); File.WriteAllText(@Server.MapPath("~/data/generalScatterJson.json"), output); } } } catch (Exception ex) { Response.Write(ex.Message); } finally { sh.Close(); } }
protected void Page_Load(object sender, EventArgs e) { Response.Write("\n开始 k-means 聚类(clustering)\n"); // real data likely to come from a text file or SQL // 需要聚类的数据是两个维度,具体指某个人的身高体重 //集合中每项描述了一个人的身高(Height: inches)和体重(Weight: kilograms) double[][] rawData = new double[20][]; rawData[0] = new double[] { 65.0, 220.0 }; rawData[1] = new double[] { 73.0, 160.0 }; rawData[2] = new double[] { 59.0, 110.0 }; rawData[3] = new double[] { 61.0, 120.0 }; rawData[4] = new double[] { 75.0, 150.0 }; rawData[5] = new double[] { 67.0, 240.0 }; rawData[6] = new double[] { 68.0, 230.0 }; rawData[7] = new double[] { 70.0, 220.0 }; rawData[8] = new double[] { 62.0, 130.0 }; rawData[9] = new double[] { 66.0, 210.0 }; rawData[10] = new double[] { 77.0, 190.0 }; rawData[11] = new double[] { 75.0, 180.0 }; rawData[12] = new double[] { 74.0, 170.0 }; rawData[13] = new double[] { 70.0, 210.0 }; rawData[14] = new double[] { 61.0, 110.0 }; rawData[15] = new double[] { 58.0, 100.0 }; rawData[16] = new double[] { 66.0, 230.0 }; rawData[17] = new double[] { 59.0, 120.0 }; rawData[18] = new double[] { 68.0, 210.0 }; rawData[19] = new double[] { 61.0, 130.0 }; Response.Write("需要聚类的数据如下:</br>"); Response.Write("    身高    体重</br>"); Response.Write("-------------------</br>"); ShowData(rawData, 2, true); //首先需要确定划分的簇的数量 int numClusters = 3; Response.Write("需要聚类的目标簇数: " + numClusters + "<br>"); int[] clustering = ClassKmeans.Cluster(rawData, numClusters); // this is it Response.Write("K-means 聚类结束e<br>"); //Response.Write("最终划分的结果:"+"<br>"); ///ShowVector(clustering, true); Response.Write("原始数据被聚类之后的结果:<br>"); ShowClustered(rawData, clustering, numClusters, 1); }
protected void BtnCluster_Click(object sender, EventArgs e) { int k = int.Parse(TxtK.Text); SQLHelper helper = new SQLHelper(); string strQuery = "SELECT id, name, military, power, wisdom, politics, charm FROM TblGenerals;"; string strCount = "SELECT COUNT(*) FROM TblGenerals;"; DataSet data = new DataSet(); ArrayList generals = new ArrayList(); try { helper.RunSQL(strCount, ref data); if (data.Tables[0] != null) { //Response.Write(data.Tables[0].Rows[0][0]); int count = int.Parse(data.Tables[0].Rows[0][0].ToString()); data = new DataSet(); double[][] generalProperties = new double[count][]; helper.RunSQL(strQuery, ref data); if (data.Tables[0] != null) { DataTable table = data.Tables[0]; int index = 0; foreach (DataRow row in table.Rows) { General general = new General( row["name"].ToString(), Convert.ToDouble(row["military"]), Convert.ToDouble(row["power"]), Convert.ToDouble(row["power"]), Convert.ToDouble(row["politics"])); generals.Add(general); generalProperties[index] = general.GetData; index++; } int[] clustering = ClassKmeans.Cluster(generalProperties, k); ShowClustered(generals, clustering, k, 1); } } } catch (Exception exception) { Response.Write(exception.Message); throw; } }