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
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