Example #1
0
from predictor import validate_buyers_for_products

(K, orderlim, saveto) = readArgs()

# Load orders
orders = data.cut_orders_by_repeated_buyers(data.load_orders(), orderlim)

buyers = set([order['buyer'] for order in orders])
all_c = len(buyers)

# Split orders into train and test sets
train, test = data.split_train_set(orders)

# Create test bipartite graph
B_test = graph.construct_bi_graph_buyer_product(test)
testBuyers, testProducts = nx.bipartite.sets(B_test)

timer = MeasureTimer()


def predict_random_buyers(testProducts, k):
    for product in testProducts:
        by = np.random.choice(list(buyers),
                              int(all_c * k / 100),
                              replace=False)
        yield (product, by)


results = {}
for k in map(int, np.linspace(100, 0, K)):
Example #2
0
from collections import defaultdict

import networkx as nx
import numpy as np

import helpers.data as data
import pymysql
import config
import helpers.graph as graph

orders = data.cut_orders_by_repeated_buyers(data.load_orders(), 13)

# Degree
B = graph.construct_bi_graph_buyer_product(orders)
buyers, products = nx.bipartite.sets(B)
print("Povprečna stopnja vozlišč kupcev",
      sum(B.degree(buyers).values()) / len(buyers))
print("Povprečna stopnja vozlišč izdelkov",
      sum(B.degree(products).values()) / len(products))


# Additional statistical information
def getAverageCategoryCountPerBuyer():
    tmp = defaultdict(set)
    for o in orders:
        tmp[o['buyer']].add(o['category'])
    return np.average([len(l) for p, l in tmp.items()])


def getAveragePerBuyerFor(s):
    tmp = defaultdict(list)