Ejemplo n.º 1
0
def main():
    scrape.find_new_games()
    scrape.match_details()
    teams = process.process_totals()

    matches = scrape.upcoming_matches()
    mlp = pickle.load(open('model/mlp_model.pkl', 'rb'))
    X, y = db.get_training_csv()

    scaler = StandardScaler()
    X = scaler.fit_transform(X)

    for m in matches:
        try:
            a_ts, b_ts = trueskill.rate_1vs1(teams[m[0]]['stats']['ts'],
                                             teams[m[1]]['stats']['ts'])

            g = {
                'a_score': teams[m[0]]['stats']['score'],
                'b_score': teams[m[1]]['stats']['score'],
                'a_elo': teams[m[0]]['stats']['elo'],
                'b_elo': teams[m[1]]['stats']['elo'],
                'a_games': teams[m[0]]['stats']['games'],
                'b_games': teams[m[1]]['stats']['games'],
                'a_win': teams[m[0]]['stats']['wins'],
                'b_win': teams[m[1]]['stats']['wins'],
                'a_vs_record': teams[m[0]]['teams'][m[1]],
                'b_vs_record': teams[m[1]]['teams'][m[0]],
                'a_momentum': teams[m[0]]['stats']['momentum'],
                'b_momentum': teams[m[1]]['stats']['momentum'],
                'a_score_against': teams[m[0]]['stats']['score_against'],
                'b_score_against': teams[m[1]]['stats']['score_against'],
                'a_ts': process.win_probability(a_ts, b_ts),
                'b_ts': process.win_probability(b_ts, a_ts),
            }

            vs_games = g['a_vs_record'] + g['b_vs_record']

            match = [
                process.stat_avg_diff(g['a_win'], g['a_games'], g['b_win'],
                                      g['b_games']),
                round(g['a_elo'] - g['b_elo'], 2),
                process.stat_avg_diff(g['a_score'], g['a_games'], g['b_score'],
                                      g['b_games']),
                g['a_momentum'] - g['b_momentum'],
                process.stat_avg_diff(g['a_vs_record'], vs_games,
                                      g['b_vs_record'], vs_games),
                process.stat_avg_diff(g['a_score_against'], g['a_games'],
                                      g['b_score_against'], g['b_games']),
                g['a_ts'],
            ]

            match = scaler.transform([match])

            outcome = mlp.predict_proba(match)
            a_pred = round(outcome[0][1], 2) * 100
            b_pred = round(outcome[0][0], 2) * 100
            print(m[0], '(', a_pred, ')', ' vs ', m[1], '(', b_pred, ')')
        except Exception as e:
            print("### Error ### ", e)
Ejemplo n.º 2
0
def train_mlp():
    X,y = db.get_training_csv()

    scaler = StandardScaler()
    X = scaler.fit_transform(X)

    mlp = MLPClassifier(hidden_layer_sizes=(29,67), activation="relu", solver='adam',random_state=0,early_stopping=True,max_iter=500)
    scores = cross_val_score(mlp, X, y, cv=5)
    print(scores)
    print(scores.mean())
    
    mlp.fit(X,y)

    pickle_file = open('model/mlp_model.pkl', 'wb')
    pickle.dump(mlp,pickle_file)
    pickle_file.close()
Ejemplo n.º 3
0
def search_mlp():
    X,y = db.get_training_csv()s

    scaler = StandardScaler()
    X = scaler.fit_transform(X)

    params = { 
        'hidden_layer_sizes': [x for x in itertools.product(range(2,50),repeat=2)],
        'activation': ['tanh','relu'],
    }

    mlp = MLPClassifier(early_stopping=True,random_state=0,max_iter=100,solver='adam')
    CV_rfc = GridSearchCV(estimator=mlp,param_grid=params, cv=5, n_jobs=-1, verbose=1)
    CV_rfc.fit(X, y)
    print(round(CV_rfc.best_score_,4)*100)
    print(CV_rfc.best_params_)