#

# Thompson Sampling

# import the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd


# load the data set
import os

# clean everything
# %reset -f

dataFile = os.path.normpath("~/Documents/Programming/TrainingDataResources/Thompson_Sampling/Ads_CTR_Optimisation.csv")
dataset = pd.read_csv(dataFile)

model_type = 'Thompson Sampling'

# Implementing Thompson Sampling
# Sampling from a Bernouli Dist

import random

N = 10000
d = 10 # the number of potential ads

numbers_of_rewards_0 = [0] * d
numbers_of_rewards_1 = [0] * d
ads_selected = []
total_reward = 0


for n in range(0,N):
    ad = 0
    max_random = 0
    for i in range(0, d):
        
        random_beta = random.betavariate(numbers_of_rewards_1[i] + 1, numbers_of_rewards_0[1] + 1)
        
        if random_beta > max_random:
            max_random = random_beta
            ad = i
    

    ads_selected.append(ad)

    reward = dataset.values[n,ad]
    
    if reward == 1:
        numbers_of_rewards_1[ad] = numbers_of_rewards_1[ad] + 1
        
    else:
        numbers_of_rewards_0[ad] = numbers_of_rewards_0[ad] + 1
    
    
    total_reward = total_reward + reward
    
    
    
 # visualize the results  - histogram
plt.hist(ads_selected)
plt.title('Histogram of ads selections')
plt.xlabel('Ads')
plt.ylabel('Number of times each ad was selected')
plt.show()   
    
    
    
    
    
    
    
    
