Example #1
0
def getprob(self, item1, item2):
    import choix
    from web.util import nanguard
    a = self.getid(item1["hash"] if type(item1) == dict else item1)
    b = self.getid(item2["hash"] if type(item2) == dict else item2)
    a_new = False
    b_new = False
    if a >= len(self.model):
        a_new = True
    if b >= len(self.model):
        b_new = True
    #self.calculate_ranking()
    if not len(self.model) or a_new or b_new:
        return 0.5, 0.5
        #return f"no model yet. new: {a_new}", f"no model yet. new: {b_new}"
    ra, rb = choix.probabilities([a, b], self.model)
    return nanguard(ra, "ra"), nanguard(rb, "rb")
Example #2
0
def pick_next_comparison(data, n_items):
    params = choix.ilsr_pairwise(n_items, data, alpha=0.01)

    count = 10
    while count > 0:
        x = random.randint(0, n_items - 1)
        y = random.randint(0, n_items - 1)
        while y == x:
            y = random.randint(0, n_items - 1)
        prob_x_wins, prob_y_wins = choix.probabilities([x, y], params)
        if abs(
                0.5 - prob_x_wins
        ) < 0.1:  #if comparison has below 60% chance of being guessed correctly atm
            return x, y
        count -= 1

    #if search 10 times for good comparison and fail pick random one
    x = random.randint(0, n_items - 1)
    y = random.randint(0, n_items - 1)
    while y == x:
        y = random.randint(0, n_items - 1)
    return x, y
namps = amps.size  #number of amplitudes

BTdata = []

for i in range(len(data)):  #Go though each result file
    for ii in range(np.size(data[i], axis=0)):
        if data[i, ii, 3] == 1.0:
            BTdata.append((np.int(
                (data[i, ii, 2]) * 2), np.int((data[i, ii, 1]) * 2)))
        else:
            BTdata.append((np.int(
                (data[i, ii, 1]) * 2), np.int((data[i, ii, 2]) * 2)))

BT = choix.ilsr_pairwise(namps, BTdata, 0.1)
pi = choix.probabilities(list(range(namps)), BT)

pyplot.close('all')
dx = 0.02
textX = 0.6 + dx
textY = 0.13
ax = pyplot.axes()
tsize = 12

pyplot.plot(Xdata, pi, 'o-', color='black')

pyplot.axvline(0.63, linestyle='--', color='gray')
ax.text(
    textX,
    textY,
    'Human kinematic',
Example #4
0
import pandas as pd
import numpy as np
import choix

df = pd.read_csv("nba1617.csv")
teams = list(set(df.Home.unique()))
t = list(np.sort(teams))

data = []

for i in range(len(df.Visitor)):
    if df.PTSV[i] > df.PTSH[i]:
        el = (t.index(df.Visitor[i]), t.index(df.Home[i]))
    else:
        el = (t.index(df.Home[i]), t.index(df.Visitor[i]))
    data.append(el)

skills = choix.ilsr_pairwise(30, data)

for i in range(30):
    win_probs = []
    for j in range(30):
        win_probs.append(choix.probabilities([i, j], skills)[0])
    print win_probs