コード例 #1
0
def fight_stats_model():

    x_train, y_train, x_test, y_test = get_train_test_data('Fight_Stats')

    x_train, y_train = random_data_shuffle(x_train, y_train)

    epochs = 1050
    hidden1 = 350
    dropout = 0.45
    l2_reg = l2(0.005)

    model = tf.keras.models.Sequential()
    model.add(Dropout(dropout))
    model.add(
        Dense(hidden1,
              input_dim=x_train.shape[1],
              activation='relu',
              kernel_initializer='normal',
              kernel_regularizer=l2_reg))

    model.add(Dense(y_train.shape[1], activation='linear'))

    model.compile(loss='mse',
                  optimizer=tf.keras.optimizers.Adam(0.0001),
                  metrics=[r2])

    history = model.fit(x_train,
                        y_train,
                        epochs=epochs,
                        batch_size=32,
                        validation_split=0.1,
                        shuffle=True)

    scores = model.evaluate(x_test, y_test)
    save(model, 'stats_model.h5')

    results = model.predict(x_test)

    predictor_cols = [
        'pass_stat_f1', 'pass_stat_f2', 'str_stat_f1', 'str_stat_f2',
        'sub_stat_f1', 'sub_stat_f2', 'td_stat_f1', 'td_stat_f2'
    ]

    for i in range(0, 20):
        rand_i = np.random.randint(0, 300)
        print('*' * 20)
        for prediction, actual, col in zip(results[rand_i], y_test[rand_i],
                                           predictor_cols):
            print(f'{col}: Prediction= {prediction} Actual = {actual}')
コード例 #2
0
def winner_model():
    """ Model for preidicting overall winner of a bout using static data and predicted bout stats"""

    x_train, y_train, x_test, y_test = get_train_test_data('Fight_Winner')

    x_train, y_train = random_data_shuffle(x_train, y_train)

    hidden_units = 80
    epochs = 170
    dropout = 0.65
    l2_reg = tf.keras.regularizers.l2(0.001)

    model = tf.keras.models.Sequential()
    model.add(
        Dense(hidden_units,
              input_dim=x_train.shape[1],
              activation='relu',
              kernel_initializer='normal',
              kernel_regularizer=l2_reg,
              name='layer1'))

    model.add(Dropout(dropout))

    model.add(
        Dense(hidden_units,
              activation='relu',
              kernel_initializer='normal',
              kernel_regularizer=l2_reg,
              name='layer2'))

    model.add(Dropout(dropout))

    model.add(Dense(1, activation='sigmoid'))

    model.compile(loss='binary_crossentropy',
                  optimizer=tf.keras.optimizers.Adam(0.0001),
                  metrics=['accuracy'])

    model.fit(x_train,
              y_train,
              epochs=epochs,
              batch_size=32,
              validation_split=0.05)

    scores = model.evaluate(x_test, y_test)
    save(model, 'winner_model.h5')

    print(model.summary())
コード例 #3
0
def main(arguments):

    X_train, X_test, y_train, y_test = get_train_test_data(task=arguments.task)

    if arguments.method == 'all':
        for model in MODELS:
            model_class = MODELS.get(model)
            print('=========== {0} ==========='.format(model_class.__name__))
            model = model_class(X_train,
                                X_test,
                                y_train,
                                y_test,
                                task=arguments.task)
            model.evaluate()

    elif arguments.method in MODELS.keys():
        model_class = MODELS.get(arguments.method)
        print('=========== {0} ==========='.format(model_class.__name__))
        model = model_class(X_train,
                            X_test,
                            y_train,
                            y_test,
                            task=arguments.task)
        model.evaluate()
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestRegressor
import utils
import constants

if __name__ == "__main__":
    data_array = utils.load_csv(constants.filename)
    X, y = utils.get_train_test_data(data_array)
    regressor = RandomForestRegressor(n_estimators=10, random_state=0)

    print(scores)
コード例 #5
0
print('Current Dir is' + current_dir)

#filepath = os.path.join(current_dir,'Saved_Models','Winner_Prediction_Models','bout_winner.h5')
filepath = os.path.join(current_dir, 'Saved_Models', 'Fight_Stats_Models',
                        'fighter_stats.h5')

#model = keras.models.load_model(filepath)
model = keras.models.load_model(filepath, custom_objects={'r2': r2})

with open('fight_stats_feature_names.txt', 'r', encoding='utf-8') as f:
    contents = f.readlines()

feature_names = [x.strip() for x in contents]

#x_train, y_train, x_test, y_test = get_train_test_data('winner_prediction_data')
x_train, y_train, x_test, y_test = get_train_test_data(
    'fighter_stats_prediction_data')

scaler = joblib.load(
    os.path.join(os.getcwd(), 'fight_predictor', 'my_scaler.pkl'))

upper_index = 100
explainer = shap.DeepExplainer(model, x_train)
shap_values = explainer.shap_values(x_train[:upper_index])

feature_values = x_train[:upper_index]
feature_values = scaler.inverse_transform(feature_values)

#shap.summary_plot(shap_values,feature_names=feature_names)
# plot = shap.force_plot(
#     explainer.expected_value[0],
#     shap_values[0][:],feature_values,
コード例 #6
0
import utils
import constants
import numpy as np


def load_csv_file():
    data_loaded = utils.load_csv(constants.filename)
    print(data_loaded)


if __name__ == "__main__":
    data_loaded = utils.load_csv(constants.filename)
    X, y = utils.get_train_test_data(data_loaded)
    print("yo")
コード例 #7
0
from utils import get_train_test_data
from models import multiclass_one_vs_rest
from features import compute_target_distribution
from plotting import plot_combined_roc_curve

x, y = get_train_test_data()
target_distribution = compute_target_distribution(y, plot=False, verbose=False)

plot_data = {}

for model_type in [
        "logistic", "tree", "forest", "nnet", "adaboost", "extra", "SVC"
]:
    # for model_type in ["logistic"] : #, "tree"] :
    plot_data[model_type] = multiclass_one_vs_rest(x,
                                                   y,
                                                   model_type,
                                                   plot=False,
                                                   verbose=True,
                                                   run_cv=False)

plot_combined_roc_curve(plot_data)