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}')
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())
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)
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,
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")
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)