Пример #1
0
def compute(start, stop):
	datadir = os.path.expanduser('~') + "/FSA/data/teamdatabyyear/"
	with open(os.path.expanduser('~') + '/FSA/1ia/features/teamHeaders.csv', 'r') as f:
		headers = f.readlines()
		headers = [h.strip() for h in headers]

	with open(os.path.expanduser('~') + '/FSA/1ia/features/headersForComputed.csv', 'r') as f:
		headersForComputed = f.readlines()
		headersForComputed = [h.strip() for h in headersForComputed]

	DVOA = load.getDVOA()
	DVOAheaders = DVOA.columns[3:].tolist()
	print headers + DVOAheaders
	# iterate over the years
	for year in range(start, stop+1):
		season = load.loadYear(year)
		print year
		yearDVOA = TFns.filter_table(DVOA, 'year', year)
		# iterate over the teams
		for t in season:
			teamDVOA = TFns.filter_table(yearDVOA, 'team', t)
			bye = [x for x in range(1,18) if x not in set(season[t]['week year'])]
			teamDVOA = teamDVOA[teamDVOA.week != bye]
			teamDVOA = teamDVOA.drop(['team','week','year'], axis=1)
			gen = team.team(season[t][headers], teamDVOA, season[t][headersForComputed])
			features = gen.computeFeatures(3)
			features = np.append(np.matrix(season[t]['week year'][3:]).transpose(), features, axis=1)

			computedHeaders = ['record_vs_spread', 'avg_closing_ability', 'comeback_record']
			computedFeatures = gen.computeComplexFeatures(3)

			features = np.concatenate((features, computedFeatures.transpose()), axis=1)
			features = features.tolist()


			featuresdir = os.path.expanduser('~') + "/FSA/data/teamfeaturesbyyear/features%d/" % year
			if not os.path.exists(featuresdir):
				os.makedirs(featuresdir)
			with open(featuresdir + t + '.csv', 'w') as g:
				g.write(','.join(['week'] + headers + DVOAheaders + computedHeaders) + '\n')
				for game in features:
					g.write(','.join([str(x) for x in game]) + '\n')
Пример #2
0
 def getDVOA(self, feature, home, n):
     ''' gets DVOA stats'''
     if home:
         team = self.home
     else:
         team = self.away
     DVOA_table = TFns.filter_table(self.DVOA, 'team', team)
     prev = []
     for idx, w in DVOA_table.iterrows():
         if np.mean(w['week']) < self.week:
             prev.append(w[feature])
         else:
             if len(prev) > n:
                 return np.mean(prev[-n:])
             else:
                 return None