예제 #1
0
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            DCN = await _context.DCNs.FirstOrDefaultAsync(m => m.Id == id);

            if (DCN == null)
            {
                return(NotFound());
            }
            return(Page());
        }
예제 #2
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            DCN = await _context.DCNs.FindAsync(id);

            if (DCN != null)
            {
                _context.DCNs.Remove(DCN);
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
예제 #3
0
        static void Main(string[] args)
        {
            var inputFile = "../data/insample_music.rpt";
                //读入数据,形成sequence类型的seq

            var seq = File.ReadAllLines(inputFile)
                .Select(dp =>
                {
                    var sp = dp.Split('\t');
                        return new SequenceEle()
                        {
                            uid = sp[0],
                            time = DateTime.Parse(sp[2]),
                            tid = sp[1],


                        };
                   
                }).Where(dp => dp != null)
               .OrderBy(dp => dp.time)
               .ToList();
                
            var inputFile1 = "../data/insample_movie.rpt";

            var seq1 = File.ReadAllLines(inputFile1)
                .Select(dp =>
                {
                    
                
                    var sp = dp.Split('\t');
                        return new SequenceEle()
                        {
                            uid = sp[0],
                            time = DateTime.Parse(sp[2]),
                            tid = sp[1],


                        };
                       }
                       catch (Exception e)
                       {
                           return null;
                       

                }).Where(dp => dp != null)
               .OrderBy(dp => dp.uid).ThenBy(dp => dp.time)
               .ToList();
               
                
                int index = 0;
                var tidIndexDic = seq.Select(dp => dp.tid).Distinct().ToDictionary(dp => dp, dp => index++);

                for (int i = 0; i < seq.Count; i++)
                {
                    seq[i].timeIndex = i;
                    seq[i].tIndex = tidIndexDic[seq[i].tid];



                }

                var selfMatrix = DCN.ComputeSelf(seq);

                int n = seq.Count();
                int m = tidIndexDic.Count();
                int K = 9;



               
             
                int index1 = 0;
                var tidIndexDic1 = seq1.Select(dp => dp.tid).Distinct().ToDictionary(dp => dp, dp => index1++);

                for (int i = 0; i < seq1.Count; i++)
                {
                    seq1[i].timeIndex = i;
                    seq1[i].tIndex = tidIndexDic1[seq1[i].tid];



                }
                var selfMatrix1 = DCN.ComputeSelf(seq1);

                int n1 = seq1.Count();
                int m1 = tidIndexDic1.Count();
                int k1 = 9;
               
                //此时是对此进行训练
              
                for (int kkk = 1; kkk <= 6; kkk++)
                    {
                        Console.WriteLine(kkk + "\t" + "kkkkk");

                        Inference.InitialParameter(m1, n1 - 1, k1);
                        Inference.GibbsSampling_0(seq1.Take(n1 - 1).ToList(), selfMatrix1, 10);

                        Inference.InitialParameter1(m, n, K);
                        Inference.GibbsSampling_0(seq.Take(n - 1).ToList(), selfMatrix, 10);
                       

                        var predicts = new List<Tuple<int, double>>();
                        for (int x = 0; x < m; x++)
                        {

                            double p = 0.0;
                            for (int k = 0; k < K; k++)
                            {
                                try
                                {
                                    p += Math.Pow(1000, 10) * Inference.theta.P[k] * Inference.phi[seq[n - 2].tIndex].P[x] *
                                        Math.Exp(
                                        (-1) * Math.Pow((k + 1 - selfMatrix[n - 2][x]
                                        // / ((double)matrix[i].Max()) * k
                                        ), 2)
                                        );
                                }
                                catch (Exception e)
                                {

                                }
                            }
                            predicts.Add(Tuple.Create(x, p));
                        }
                        predicts = predicts.OrderByDescending(dp => dp.Item2).ToList();


                        double mean = 0.0;
                        for (int k = 0; k < 9; k++)
                        {
                            mean += (k + 1) * Inference.theta.P[k];
                        }
                        int ns = (int)Math.Round(mean);
                        res.Add(seq[0].uid.ToString());
                        res.Add(ns.ToString());




                        var MAP = 0.0;
                        for (int i = 0; i < predicts.Count(); i++)
                        {
                            
                            if (tidIndexDic.Where(dp => dp.Value == predicts.ElementAt(i).Item1).First().Key == seq[n - 1].tid && n > 3)
                            {


                                MAP = i + 1;

                            }

                        }

                        res.Add(MAP.ToString());
                    }
                }