Exemplo n.º 1
0
 def cards_to_state(dealer_cards, player_cards, revealed_cards, only_one_dealer_card=True):
     dealer_cards_interested_in = [dealer_cards[0]] if only_one_dealer_card else dealer_cards
     player_value = Blackjack.get_card_value(player_cards)
     dealer_value = Blackjack.get_card_value(dealer_cards_interested_in)
     assert player_value >= 4
     assert dealer_value >= 2
     return player_value - 1, dealer_value - 1
Exemplo n.º 2
0
    def cards_to_state(dealer_cards, player_cards, revealed_cards, only_one_dealer_card=True):
        dealer_cards_interested_in = [dealer_cards[0]] if only_one_dealer_card else dealer_cards
        counts = count_cards(revealed_cards)

        s = np.zeros([1, 15])
        s[0, 0] = Blackjack.get_card_value(player_cards)
        s[0, 1] = Blackjack.get_card_value(dealer_cards_interested_in)
        for number in range(13):
            s[0, 2 + number] = counts[number]

        return s
Exemplo n.º 3
0
def datacoll(num_games):
        
    wins = 0
    pushes = 0
    loses = 0
    blackjack = Blackjack()
        
    Data_coll = []   #initialize the data set for my bayes method  
    for _ in range(num_games):
        finished, result, dealer_cards, player_cards = blackjack.play_game(Blackjack.ACTION["start"]) #I can name these output variables differently and create my output data differently
        hit_count = 0
        game_data = [Blackjack.get_card_value(player_cards),Blackjack.get_card_value([dealer_cards[0]]),result,hit_count,_+1]
        Data_coll.append(game_data)
        while not finished:
            action = random.choice([Blackjack.ACTION["hit"], Blackjack.ACTION["hold"]])
            finished, result, dealer_cards, player_cards = blackjack.play_game(action)
            if action == Blackjack.ACTION["hit"]:
                hit_count += 1
                Data_coll.append([Blackjack.get_card_value(player_cards),Blackjack.get_card_value([dealer_cards[0]]),result,hit_count,_+1])
            else:
                Data_coll.append([Blackjack.get_card_value(player_cards),Blackjack.get_card_value([dealer_cards[0]]),result,hit_count,_+1])
        
        wins += 1 if result == Blackjack.RESULT["win"] else 0
        pushes += 1 if result == Blackjack.RESULT["push"] else 0
        loses += 1 if result == Blackjack.RESULT["lose"] else 0
    return (Data_coll)
Exemplo n.º 4
0
    mnb = MultinomialNB()

    # Train our classifier
    model = mnb.fit(Data, outcome)
    
    # Playing With NB.Multinomial Classifier
    num_games_test = 1000
    wins = 0
    pushes = 0
    loses = 0
    blackjack = Blackjack()     
    
    for _ in range(num_games_test):
        finished, result, dealer_cards, player_cards = blackjack.play_game(Blackjack.ACTION["start"]) #I can name these output variables differently and create my output data differently
        while not finished:
            outc_W_hit =  [Blackjack.get_card_value(player_cards),Blackjack.get_card_value([dealer_cards[0]]),1]
            outc_Wout_hit =  [Blackjack.get_card_value(player_cards),Blackjack.get_card_value([dealer_cards[0]]),0]
            preds_W_hit = mnb.predict_proba([outc_W_hit])   #order of this output is [-1  0  1] thanks to mnb.classes_ attribute output
            preds_Wout_hit = mnb.predict_proba([outc_Wout_hit])
            if preds_W_hit[0][2] > preds_Wout_hit[0][2]:
                finished, result, dealer_cards, player_cards = blackjack.play_game(Blackjack.ACTION["hit"])
            else:
                finished, result, dealer_cards, player_cards = blackjack.play_game(Blackjack.ACTION["hold"])
        
        wins += 1 if result == Blackjack.RESULT["win"] else 0
        pushes += 1 if result == Blackjack.RESULT["push"] else 0
        loses += 1 if result == Blackjack.RESULT["lose"] else 0    

    # Machine Learning Winning Percentage
    Total  = wins + loses
    print (wins/Total)
Exemplo n.º 5
0
    clf_entropy.fit(X, Y)

    # Playing With an information gain Decision Tree Classifier
    num_games_test = 1000
    wins = 0
    pushes = 0
    loses = 0
    blackjack = Blackjack()

    for _ in range(num_games_test):
        finished, result, dealer_cards, player_cards = blackjack.play_game(
            Blackjack.ACTION["start"]
        )  #I can name these output variables differently and create my output data differently
        while not finished:
            outc_W_hit = [
                Blackjack.get_card_value(player_cards),
                Blackjack.get_card_value([dealer_cards[0]]), 1
            ]
            outc_Wout_hit = [
                Blackjack.get_card_value(player_cards),
                Blackjack.get_card_value([dealer_cards[0]]), 0
            ]
            preds_W_hit = clf_entropy.predict_proba(
                [outc_W_hit]
            )  #order of this output is [-1  0  1] thanks to mnb.classes_ attribute output
            preds_Wout_hit = clf_entropy.predict_proba([outc_Wout_hit])
            if preds_W_hit[0][2] > preds_Wout_hit[0][2]:
                finished, result, dealer_cards, player_cards = blackjack.play_game(
                    Blackjack.ACTION["hit"])
            else:
                finished, result, dealer_cards, player_cards = blackjack.play_game(