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()); }
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")); }
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()); } }