示例#1
0
        public void start(Analysis parent, HttpResponse response, System.Web.SessionState.HttpSessionState session)
        {
            ParameterStream stream = ParameterStream.getStream(session);

            String[] features = (String[])stream.get("selectedFeatures");
            int      PCs      = (int)stream.get("numberOfPCs");

            Registry.Registry   registry = Registry.Registry.getRegistry(session);
            System.Data.DataSet ds       = (System.Data.DataSet)registry.GetDataset((string)stream.get("dataSetName"));

            //retrieve dataset table (assume one for now)
            System.Data.DataTable dt = ds.Tables[0];


            //raw data
            double[,] rawData = new double[dt.Rows.Count, features.Count()];
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                for (int j = 0; j < features.Count(); j++)
                {
                    rawData[i, j] = (double)dt.Rows[i].ItemArray.ElementAt(dt.Columns[features[j]].Ordinal);
                }
            }

            //Create matrix to hold data for PCA
            Matrix X = new Matrix(rawData);

            //Remove mean
            Vector columnVector;

            for (int i = 0; i < X.ColumnCount; i++)
            {
                columnVector = X.GetColumnVector(i);
                X.SetColumnVector(columnVector.Subtract(columnVector.Average()), i);
            }

            Matrix PCmatrix = new Matrix(X.ColumnCount, PCs, 0);
            Vector Weights  = new Vector(PCs);

            System.Diagnostics.Stopwatch watch = new Stopwatch();

            //Run algorithm and time it
            watch.Start();
            SingularValueDecomposition svd = SVD(X);

            watch.Stop();
            stream.set("algRunTime", watch.ElapsedMilliseconds);

            /*
             * response.Buffer = true;
             * response.Write(PCmatrix.ToString() + "\n");
             * response.Write(Weights.ToString() + "\n");
             * response.Flush();
             */
            Debug.WriteLine("Done with PCA");
            stream.set("PCmatrix", svd.RightSingularVectors);
            stream.set("Weights", svd.SingularValues);
            parent.next(response, session);
        }
示例#2
0
        public Stream GetStream()
        {
            if (_parameterStream == null)
            {
                _parameterStream = new ParameterStream(this);
            }

            _parameterStream.Init();
            return(_parameterStream);
        }
示例#3
0
        protected void FeatureList_Init(object sender, EventArgs e)
        {
            String          dataSetParameterName = "dataSetName";
            ParameterStream stream = ParameterStream.getStream(Session);

            if (stream.contains(dataSetParameterName))
            {
                Registry.Registry appRegistry = Registry.Registry.getRegistry(Session);
                DataSet           ds          = appRegistry.GetDataset((String)stream.get(dataSetParameterName));

                foreach (DataColumn dc in ds.Tables[0].Columns)
                {
                    FeatureList.Items.Add(dc.ColumnName);
                }
            }
        }
示例#4
0
        protected void Next_Click(object sender, EventArgs e)
        {
            if (int.Parse(PCs.Text) > FeatureList.GetSelectedIndices().Count() || PCs.Text.Equals("") || int.Parse(PCs.Text) < 1)
            {
                return;
            }
            Analysis        analysis = (Analysis)Session["analysis"];
            ParameterStream stream   = ParameterStream.getStream(Session);

            String[] features = new String[FeatureList.GetSelectedIndices().Count()];
            for (int i = 0; i < FeatureList.GetSelectedIndices().Count(); i++)
            {
                features[i] = FeatureList.Items[FeatureList.GetSelectedIndices()[i]].Text;
            }
            stream.set("selectedFeatures", features);
            stream.set("numberOfPCs", int.Parse(PCs.Text));

            analysis.next(Response, Session);
        }
 protected void Page_PreInit(object sender, EventArgs e)
 {
     stream = ParameterStream.getStream(Session);
 }
示例#6
0
 protected void Page_PreInit(object sender, EventArgs e)
 {
     stream = ParameterStream.getStream(Session);
 }