亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#實現協同過濾算法的實例代碼

2020-01-24 03:12:46
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

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<string, Rating>
    {
        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<string>(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<int> _Items = new HashSet<int>();  // Tracking how many items totally
        public void AddUserRatings(IDictionary<int, float> userRatings)
        {
            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(IList<IDictionary<int, float>> Ratings)
        {
            foreach(var userRatings in Ratings)
            {
                AddUserRatings(userRatings);
            }
        }
        public IDictionary<int, float> Predict(IDictionary<int, float> userRatings)
        {
            Dictionary<int, float> Predictions = new Dictionary<int, float>();
            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();
            Dictionary<int, float> userRating = new Dictionary<int, float>();
            userRating.Add(1, 5);
            userRating.Add(2, 4);
            userRating.Add(3, 4);
            test.AddUserRatings(userRating);
            userRating = new Dictionary<int, float>();
            userRating.Add(1, 4);
            userRating.Add(2, 5);
            userRating.Add(3, 3);
            userRating.Add(4, 5);
            test.AddUserRatings(userRating);
            userRating = new Dictionary<int, float>();
            userRating.Add(1, 4);
            userRating.Add(2, 4);
            userRating.Add(4, 5);
            test.AddUserRatings(userRating);
            userRating = new Dictionary<int, float>();
            userRating.Add(1, 5);
            userRating.Add(3, 4);
            IDictionary<int, float> Predictions = test.Predict(userRating);
            foreach (var rating in Predictions)
            {
                Console.WriteLine("Item " + rating.Key + " Rating: " + rating.Value);
            }
        }
    }
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产日韩xxxxx| 91麻豆国产语对白在线观看| 欧美日韩一区二区在线| 亚洲精品免费在线视频| 国内久久久精品| 国产日韩欧美在线播放| 亚洲激情在线观看| 亚洲а∨天堂久久精品喷水| 国产精品白丝jk喷水视频一区| 国产一区二区激情| 亚洲精选在线观看| 国产精品入口日韩视频大尺度| 久久国产天堂福利天堂| 一区二区三区四区视频| 在线视频日韩精品| 亚洲色图欧美制服丝袜另类第一页| 宅男66日本亚洲欧美视频| 91在线精品视频| 久久国产一区二区三区| 国产一区二区丝袜高跟鞋图片| 亚洲人午夜精品免费| 91久久在线播放| 亚洲精品一区二区在线| 九九久久综合网站| 日韩电影在线观看永久视频免费网站| 欧美有码在线观看视频| 国外日韩电影在线观看| 国产日韩亚洲欧美| 亚洲美女av网站| 亚洲欧美国内爽妇网| 欧美最猛性xxxxx亚洲精品| 国产成人精品亚洲精品| 久久久国产成人精品| 国产精品久久久久久久久久久久| 亚洲午夜性刺激影院| 国产精品69久久久久| 久久久久久美女| 亚洲国产精品人久久电影| 国产成人精品综合| 成人黄色影片在线| 国产欧美一区二区三区在线看| 国产aaa精品| 欧美精品在线播放| 全色精品综合影院| 亚洲欧洲日本专区| 亚洲国产欧美自拍| 亚洲视频在线观看免费| 日韩毛片在线看| 自拍视频国产精品| 亚洲国产欧美一区二区丝袜黑人| 欧美疯狂xxxx大交乱88av| 国产ts人妖一区二区三区| 亚洲成年人在线播放| 亚洲一区二区三区xxx视频| 欧美电影电视剧在线观看| 国产手机视频精品| 国产精品香蕉av| 国产成人亚洲精品| 青青草99啪国产免费| 亚洲乱码av中文一区二区| 人人做人人澡人人爽欧美| 久久男人的天堂| 91av网站在线播放| 亚洲自拍偷拍在线| 久久国产精品免费视频| 欧美视频在线视频| 久久人91精品久久久久久不卡| 久久久视频精品| 岛国av一区二区在线在线观看| 国产91ⅴ在线精品免费观看| 国产日韩欧美日韩| 4k岛国日韩精品**专区| 全亚洲最色的网站在线观看| 亚洲第一中文字幕| 国产中文字幕日韩| 亚洲欧美在线免费观看| 亚洲精品国产精品乱码不99按摩| 亚洲影视中文字幕| 中文字幕av一区二区三区谷原希美| 懂色aⅴ精品一区二区三区蜜月| 青青久久av北条麻妃黑人| 日韩精品免费观看| 日产精品久久久一区二区福利| www国产精品com| 亚洲午夜久久久久久久| 国产日韩欧美自拍| 亚洲高清不卡av| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲综合在线中文字幕| 亚洲人成电影网站色www| 欧美日韩亚洲一区二区| 欧美国产日韩一区| 国产乱肥老妇国产一区二| 日本午夜在线亚洲.国产| 91成人性视频| 中文字幕免费国产精品| 亚洲第一精品久久忘忧草社区| 精品欧美国产一区二区三区| 久久青草福利网站| 国产一区二区av| 久久久久亚洲精品成人网小说| 欧美午夜激情在线| 丝袜亚洲另类欧美重口| 国产日韩在线免费| 日韩欧美中文字幕在线观看| 中文字幕不卡在线视频极品| 78m国产成人精品视频| 日韩av网址在线观看| 久久精品成人一区二区三区| 在线精品国产欧美| 色偷偷9999www| 欧美激情亚洲自拍| 欧美日韩亚洲视频一区| 日韩欧美在线播放| 91亚洲精品在线观看| 性欧美激情精品| 欧美性猛交xxxx免费看久久久| 亚洲人成亚洲人成在线观看| 国产伦精品一区二区三区精品视频| 亚洲精品xxxx| 国产精品女主播视频| 亚洲美腿欧美激情另类| 亚洲欧美精品在线| 91最新在线免费观看| 日韩免费在线播放| 欧美极品少妇xxxxⅹ裸体艺术| 日本欧美在线视频| 国产精品久久97| 国产精品88a∨| 精品视频在线导航| 日本在线观看天堂男亚洲| 亚洲国产精品99久久| 欧美国产日韩在线| 欧美成人免费视频| 国产999精品视频| 欧美日韩国产成人| 国产91色在线免费| 国产丝袜精品视频| 国产精品一区二区三区久久| 久久亚洲综合国产精品99麻豆精品福利| 国产69精品久久久久久| 都市激情亚洲色图| 综合136福利视频在线| 综合网日日天干夜夜久久| 欧美巨猛xxxx猛交黑人97人| 综合网日日天干夜夜久久| 7m精品福利视频导航| 日韩av中文字幕在线| 日韩精品视频免费在线观看| 国产欧美一区二区三区久久| 日韩一区二区精品视频| 亚洲成人动漫在线播放| 精品久久久久久中文字幕大豆网| 狠狠操狠狠色综合网| 成人午夜一级二级三级| 日本中文字幕成人| 日本精品一区二区三区在线| 亚洲女人初尝黑人巨大| 久久综合国产精品台湾中文娱乐网| 精品国产一区二区三区在线观看| 全亚洲最色的网站在线观看| 91九色视频导航| 亚洲丁香婷深爱综合| 国产精品情侣自拍|