def cross_validate(params):
    global test_data_products, model_products

    _C, _epsilon = params

    data = test_data_products[1].dropna()
    X = data[[
        'amount_of_all_competitors', 'average_price_on_market',
        'distance_to_cheapest_competitor', 'price_rank', 'quality_rank'
    ]]
    y = data['sold'].copy()
    y[y > 1] = 1
    model = PassiveAggressiveRegressor(max_iter=1000, tol=0.0001)
    model.set_params(C=_C, epsilon=_epsilon)

    score = -np.mean(cross_val_score(model, X, y, cv=3, scoring='r2'))
    return score
Exemplo n.º 2
0
def train(params=[1.0, 0.001]):
    global data_products, model_products
    _C, _epsilon = params

    for product_id in data_products:
        data = data_products[product_id].dropna()
        if len(data.index) <= 0:
            return
        X = data[[
            'amount_of_all_competitors', 'average_price_on_market',
            'distance_to_cheapest_competitor', 'price_rank', 'quality_rank'
        ]]
        y = data['sold'].copy()
        y[y > 1] = 1

        model = PassiveAggressiveRegressor(n_iter=1000)
        model.set_params(C=_C, epsilon=_epsilon)

        model.fit(X, y)

        model_products[product_id] = model