Example #1
0
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)
Example #2
0
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