def getTopProducts(doc_set, feature, dep_feature, num_products): ai = AttrInfo.lookup(feature) if ai is None: raise Exception("unknown feature: {0}".format(feature)) mult = 1 if ai.name == "price": mult = -1 if not ai.is_discrete: buckets = bucketByPercentile(doc_set, feature, num_products) return filter(lambda x: x is not None, [ argmax(b, lambda x: x.normalized[dep_feature], mult) for b in buckets ]) else: bucketed = [ filter(lambda x: x.normalized[feature] == v, doc_set) for v in ai.values ] prods = [ argmax(b, lambda x: x.normalized[dep_feature], mult) for b in bucketed ] prods = filter(lambda x: x is not None, prods) return argmaxTake(prods, dep_feature, num_products, mult)
def getTopProducts(doc_set, feature, dep_feature, num_products): ai = AttrInfo.lookup(feature) if ai is None: raise Exception("unknown feature: {0}".format(feature)) mult = 1 if ai.name == "price": mult = -1 if not ai.is_discrete: buckets = bucketByPercentile(doc_set, feature, num_products) return filter(lambda x: x is not None, [argmax(b, lambda x: x.normalized[dep_feature], mult) for b in buckets]) else: bucketed = [filter(lambda x: x.normalized[feature] == v, doc_set) for v in ai.values] prods = [argmax(b, lambda x: x.normalized[dep_feature], mult) for b in bucketed] prods = filter(lambda x: x is not None, prods) return argmaxTake(prods, dep_feature, num_products, mult)
return "3d" in name def normalizeSizeClass(prod): size = fallbackNormalize(prod, ["screenSizeIn", "screenSizeClassIn"]) if size is None: return None return roundToListValues(size, range(0, 100, 2)) def roundToListValues(val, val_list): return argmax(val_list, lambda x: abs(val - x), -1) if __name__ == "__main__": size_class_ai = AttrInfo() size_class_ai.name = "size_class" size_class_ai.display_name = "Screen Size Class" size_class_ai.help_text = "Blah blah blah Screen Size Class" size_class_ai.is_discrete = False size_class_ai.is_independant = True size_class_ai.rank = 1 size_class_ai.units = "inches" size_ai = AttrInfo() size_ai.name = "size" size_ai.display_name = "Screen Size" size_ai.help_text = "Blah blah blah Screen Size" size_ai.is_discrete = False size_ai.is_independant = True size_ai.rank = -1
return "3d" in name def normalizeSizeClass(prod): size = fallbackNormalize(prod, ['screenSizeIn', 'screenSizeClassIn']) if size is None: return None return roundToListValues(size, range(0, 100, 2)) def roundToListValues(val, val_list): return argmax(val_list, lambda x: abs(val - x), -1) if __name__ == "__main__": size_class_ai = AttrInfo() size_class_ai.name = "size_class" size_class_ai.display_name = "Screen Size Class" size_class_ai.help_text = "Blah blah blah Screen Size Class" size_class_ai.is_discrete = False size_class_ai.is_independant = True size_class_ai.rank = 1 size_class_ai.units = "inches" size_ai = AttrInfo() size_ai.name = "size" size_ai.display_name = "Screen Size" size_ai.help_text = "Blah blah blah Screen Size" size_ai.is_discrete = False size_ai.is_independant = True size_ai.rank = -1