Gambling/XG
0
1import pandas as pd2from datetime import datetime3from sklearn.model_selection import train_test_split4 5from data.const import (6 COLUMNS_ENCODE,7 ENCODED_COLUMNS8)9 10class EventProcessor:11 def __init__(self, events_file, info_file):12 self.events = pd.read_csv(events_file, sep=",", header=0)13 self.info = pd.read_csv(info_file, sep=",", header=0)14 15 def process(self):16 self.events = self.events.merge(self.info[['id_odsp', 'country', 'date']], on='id_odsp', how='left')17 extract_year = lambda x: datetime.strptime(x, "%Y-%m-%d").year18 self.events['year'] = [extract_year(x) for key, x in enumerate(self.events['date'])]19 self.shots = self.events[self.events.event_type==1]20 self.shots['player'] = self.shots['player'].str.title()21 self.shots['player2'] = self.shots['player2'].str.title()22 self.shots['country'] = self.shots['country'].str.title()23 24class DataEncoder:25 def __init__(self, data):26 self.data = data27 28 def encode_categorical_variables(self):29 encoded_data = pd.get_dummies(self.data.iloc[:,-8:-3], columns=COLUMNS_ENCODE)30 encoded_data.columns = ENCODED_COLUMNS31 encoded_data['is_goal'] = self.data['is_goal']32 self.encoded_data = encoded_data33 34class DataSplitter:35 def __init__(self, data, target, test_size=0.35, random_state=1):36 self.data = data37 self.target = target38 self.test_size = test_size39 self.random_state = random_state40 41 def split(self):42 X_train, X_test, y_train, y_test = train_test_split(self.data, self.target, test_size=self.test_size, random_state=self.random_state)43 self.X_train = X_train44 self.X_test = X_test45 self.y_train = y_train46 self.y_test = y_test