Beispiel #1
0
        public Product RecommendProductItemBased(Order order, ISimilarityCalculable calculable, int kNearest)
        {
            var itemData        = GetItemData();
            var currentPurchase = ConvertToPurchaseData(order);

            for (int i = 0; i < itemData.Count; i++)
            {
                var data1 = itemData[i];

                for (int j = 0; j < itemData.Count; j++)
                {
                    var similarity = new ItemSimilarity();
                    similarity.ProductId = itemData[j].ProductId;

                    var data2 = itemData[j];

                    if (j != i)
                    {
                        similarity.Similarity = calculable.CalculateSimilarity(data1.PurchasedByCustomer, data2.PurchasedByCustomer);
                    }
                    data1.SimilarityVector.Add(similarity);
                }
            }

            var result = FindRecommendationItemBased(itemData, currentPurchase, kNearest);

            if (result == -1)
            {
                return(null);
            }

            return(_products.ToList().SingleOrDefault(x => x.ProductId == result));
        }
Beispiel #2
0
        public Product RecommendProductUserBased(Order order, ISimilarityCalculable calculable, int kNearest)
        {
            var purchaseData = GetPurchaseData();

            var data1 = ConvertToPurchaseData(order);

            foreach (var data2 in purchaseData)
            {
                if (data1.OrderID != data2.OrderID)
                {
                    data2.Similarity = calculable.CalculateSimilarity(data1.Data, data2.Data);
                }
            }

            var result = FindRecommendationUserBased(purchaseData, data1, kNearest);

            if (result == -1)
            {
                return(null);
            }

            return(_products.ToList().SingleOrDefault(x => x.ProductId == result));
        }