亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

C語(yǔ)言

C#實(shí)現(xiàn)協(xié)同過(guò)濾算法的實(shí)例代碼

時(shí)間:2024-06-19 03:47:09 C語(yǔ)言 我要投稿
  • 相關(guān)推薦

C#實(shí)現(xiàn)協(xié)同過(guò)濾算法的實(shí)例代碼

  還在找C#實(shí)現(xiàn)協(xié)同過(guò)濾算法的代碼嗎?下面小編為大家整理了C#實(shí)現(xiàn)協(xié)同過(guò)濾算法的實(shí)例代碼,希望能幫到大家!

  復(fù)制代碼 代碼如下:

  using System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Text;

  namespace SlopeOne

  {

  public class Rating

  {

  public float Value { get; set; }

  public int Freq { get; set; }

  public float AverageValue

  {

  get { return Value / Freq; }

  }

  }

  public class RatingDifferenceCollection : Dictionary

  {

  private string GetKey(int Item1Id, int Item2Id)

  {

  return (Item1Id < Item2Id) ? Item1Id + "/" + Item2Id : Item2Id + "/" + Item1Id ;

  }

  public bool Contains(int Item1Id, int Item2Id)

  {

  return this.Keys.Contains(GetKey(Item1Id, Item2Id));

  }

  public Rating this[int Item1Id, int Item2Id]

  {

  get {

  return this[this.GetKey(Item1Id, Item2Id)];

  }

  set { this[this.GetKey(Item1Id, Item2Id)] = value; }

  }

  }

  public class SlopeOne

  {

  public RatingDifferenceCollection _DiffMarix = new RatingDifferenceCollection(); // The dictionary to keep the diff matrix

  public HashSet_Items = new HashSet(); // Tracking how many items totally

  public void AddUserRatings(IDictionaryuserRatings)

  {

  foreach (var item1 in userRatings)

  {

  int item1Id = item1.Key;

  float item1Rating = item1.Value;

  _Items.Add(item1.Key);

  foreach (var item2 in userRatings)

  {

  if (item2.Key <= item1Id) continue; // Eliminate redundancy

  int item2Id = item2.Key;

  float item2Rating = item2.Value;

  Rating ratingDiff;

  if (_DiffMarix.Contains(item1Id, item2Id))

  {

  ratingDiff = _DiffMarix[item1Id, item2Id];

  }

  else

  {

  ratingDiff = new Rating();

  _DiffMarix[item1Id, item2Id] = ratingDiff;

  }

  ratingDiff.Value += item1Rating - item2Rating;

  ratingDiff.Freq += 1;

  }

  }

  }

  // Input ratings of all users

  public void AddUerRatings(IListRatings)

  {

  foreach(var userRatings in Ratings)

  {

  AddUserRatings(userRatings);

  }

  }

  public IDictionaryPredict(IDictionaryuserRatings)

  {

  DictionaryPredictions = new Dictionary();

  foreach (var itemId in this._Items)

  {

  if (userRatings.Keys.Contains(itemId)) continue; // User has rated this item, just skip it

  Rating itemRating = new Rating();

  foreach (var userRating in userRatings)

  {

  if (userRating.Key == itemId) continue;

  int inputItemId = userRating.Key;

  if (_DiffMarix.Contains(itemId, inputItemId))

  {

  Rating diff = _DiffMarix[itemId, inputItemId];

  itemRating.Value += diff.Freq * (userRating.Value + diff.AverageValue * ((itemId < inputItemId) ? 1 : -1));

  itemRating.Freq += diff.Freq;

  }

  }

  Predictions.Add(itemId, itemRating.AverageValue);

  }

  return Predictions;

  }

  public static void Test()

  {

  SlopeOne test = new SlopeOne();

  DictionaryuserRating = new Dictionary();

  userRating.Add(1, 5);

  userRating.Add(2, 4);

  userRating.Add(3, 4);

  test.AddUserRatings(userRating);

  userRating = new Dictionary();

  userRating.Add(1, 4);

  userRating.Add(2, 5);

  userRating.Add(3, 3);

  userRating.Add(4, 5);

  test.AddUserRatings(userRating);

  userRating = new Dictionary();

  userRating.Add(1, 4);

  userRating.Add(2, 4);

  userRating.Add(4, 5);

  test.AddUserRatings(userRating);

  userRating = new Dictionary();

  userRating.Add(1, 5);

  userRating.Add(3, 4);

  IDictionaryPredictions = test.Predict(userRating);

  foreach (var rating in Predictions)

  {

  Console.WriteLine("Item " + rating.Key + " Rating: " + rating.Value);

  }

  }

  }

  }

【C#實(shí)現(xiàn)協(xié)同過(guò)濾算法的實(shí)例代碼】相關(guān)文章:

C#數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表的實(shí)例代碼12-04

C語(yǔ)言插入排序算法及實(shí)例代碼12-05

C語(yǔ)言選擇排序算法及實(shí)例代碼11-25

C語(yǔ)言實(shí)現(xiàn)歸并排序算法實(shí)例04-01

Java實(shí)現(xiàn)在不同線(xiàn)程中運(yùn)行的代碼實(shí)例詳解11-20

C語(yǔ)言中實(shí)現(xiàn)“17進(jìn)制”轉(zhuǎn)“10進(jìn)制”代碼(實(shí)例)03-02

C語(yǔ)言快速排序?qū)嵗a06-04

讓網(wǎng)站變灰的css代碼實(shí)例12-02

java中通用的線(xiàn)程池實(shí)例代碼08-27