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();
            }
        }
Exemplo n.º 3
0
        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("&nbsp;&nbsp&nbsp&nbsp身高&nbsp;&nbsp&nbsp&nbsp体重</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);
        }
Exemplo n.º 4
0
        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;
            }
        }