def dehydrate(self, bundle): """inject extra info""" event, data = bundle.obj, bundle.data category_resource = self.concrete_category.get_related_resource(bundle.obj.concrete_category) ctree = CachedCategoryTree() # concrete parent category concrete_parent_category = ctree.surface_parent(event.concrete_category_id) concrete_parent_category_uri = category_resource.get_resource_uri(concrete_parent_category) data.update(concrete_parent_category=concrete_parent_category_uri) # concrete breadcrumbs :) concrete_category_breadcrumb_uris = [] for category in ctree.parents(event.concrete_category_id): concrete_category_breadcrumb_uris.append(category_resource.get_resource_uri(category)) data.update(concrete_category_breadcrumbs=concrete_category_breadcrumb_uris) # detail image thumbnail try: image = event.image_chain(ctree) detail_thumb = get_thumbnail(image, **settings.IPHONE_THUMB_OPTIONS) except Exception: pass else: data.update(thumbnail_detail=detail_thumb.url) return super(EventResource, self).dehydrate(bundle)
def dehydrate(self, bundle): """inject extra info""" event, data = bundle.obj, bundle.data category_resource = self.concrete_category.get_related_resource( bundle.obj.concrete_category) ctree = CachedCategoryTree() # concrete parent category concrete_parent_category = ctree.surface_parent( event.concrete_category_id) concrete_parent_category_uri = category_resource.get_resource_uri( concrete_parent_category) data.update(concrete_parent_category=concrete_parent_category_uri) # concrete breadcrumbs :) concrete_category_breadcrumb_uris = [] for category in ctree.parents(event.concrete_category_id): concrete_category_breadcrumb_uris.append( category_resource.get_resource_uri(category)) data.update( concrete_category_breadcrumbs=concrete_category_breadcrumb_uris) # detail image thumbnail try: image = event.image_chain(ctree) detail_thumb = get_thumbnail(image, **settings.IPHONE_THUMB_OPTIONS) except Exception: pass else: data.update(thumbnail_detail=detail_thumb.url) return super(EventResource, self).dehydrate(bundle)
def test_convergence(self): categories = ml.recommend_categories(self.user) #print "Categories: ", categories picked_category = ml.sample_distribution(categories.items())[0] #print "picked category: ", picked_category picked_aggr = EventActionAggregate(user=self.user, category=picked_category) lst = [] ctree = CachedCategoryTree() parents = ctree.parents(picked_category) count = 0 while count < 100: count +=1 print "Round: %d\r"%count, sys.stdout.flush() # recommend a new set of categories recommendation_scores = ml.recommend_categories(self.user) cats = ml.sample_category_distribution(recommendation_scores.items(), settings.N) found_count = cats.count(picked_category) #print "Categories: ",cats #print "ID: ", picked_category.id cats = set(cats) cats.discard(picked_category.id) # # G(oto) picked category picked_aggr.g += found_count picked_aggr.save() # X all other categories for c in cats: if c in parents: continue try: eaa = EventActionAggregate.objects.get(user=self.user, category=c) except EventActionAggregate.DoesNotExist: eaa = EventActionAggregate(user=self.user, category=c) eaa.x += 1 eaa.save() lst.append(found_count*100.0/settings.N) plt.plot(lst,color="blue") plt.title("Rate of learning one category") plt.xlabel("Trials") plt.ylabel("% of all Recommendations") plt.savefig("learning/test_results/test.pdf") plt.cla() self.assertTrue(True)