zjpiazza commited on
Commit
cf2059c
·
1 Parent(s): 851013c

Updated file structure and added predictor.py

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitignore +3 -0
  2. config.json +1 -1
  3. config.py +19 -0
  4. data/model/df_model.csv +0 -0
  5. tf_model.h5 → data/model/model.h5 +0 -0
  6. data/model/model2.h5 +3 -0
  7. data/model/model3.h5 +3 -0
  8. data/model/model3.ipynb +0 -0
  9. data/model/my_model_weights.h5 +3 -0
  10. data/model/my_model_weights2.h5 +3 -0
  11. data/model/my_model_weights3.h5 +3 -0
  12. data/preprocessing/UFC_data.ipynb +0 -0
  13. data/preprocessing/archiv/df_mode_old.csv +0 -0
  14. data/preprocessing/archiv/df_odds.csv +166 -0
  15. data/preprocessing/archiv/df_skills.csv +0 -0
  16. data/preprocessing/archiv/fight_result.csv +0 -0
  17. data/preprocessing/archiv/fight_with_stats.csv +0 -0
  18. data/preprocessing/archiv/fight_with_stats_precomp.csv +0 -0
  19. data/preprocessing/archiv/fighter_details.csv +0 -0
  20. data/preprocessing/archiv/fighter_total_stats.csv +0 -0
  21. data/preprocessing/archov/df_model.csv +0 -0
  22. data/preprocessing/archov/df_skills.csv +0 -0
  23. data/preprocessing/archov/fight_result.csv +0 -0
  24. data/preprocessing/archov/fight_with_stats.csv +0 -0
  25. data/preprocessing/archov/fight_with_stats_precomp1.csv +0 -0
  26. data/preprocessing/archov/fighter_details.csv +0 -0
  27. data/preprocessing/archov/fighter_total_stats.csv +0 -0
  28. data/preprocessing/df_odds.csv +166 -0
  29. data/preprocessing/df_skills.csv +0 -0
  30. data/preprocessing/fight_result.csv +0 -0
  31. data/preprocessing/fight_with_stats.csv +0 -0
  32. data/preprocessing/fight_with_stats_precomp.csv +0 -0
  33. data/preprocessing/fighter_details.csv +0 -0
  34. data/preprocessing/fighter_total_stats.csv +0 -0
  35. handler.py +36 -15
  36. predictor.py +148 -0
  37. preprocessing/UFC_data.ipynb +0 -0
  38. preprocessing/archiv/df_mode_old.csv +0 -0
  39. preprocessing/archiv/df_odds.csv +166 -0
  40. preprocessing/archiv/df_skills.csv +0 -0
  41. preprocessing/archiv/fight_result.csv +0 -0
  42. preprocessing/archiv/fight_with_stats.csv +0 -0
  43. preprocessing/archiv/fight_with_stats_precomp.csv +0 -0
  44. preprocessing/archiv/fighter_details.csv +0 -0
  45. preprocessing/archiv/fighter_total_stats.csv +0 -0
  46. preprocessing/archov/df_model.csv +0 -0
  47. preprocessing/archov/df_skills.csv +0 -0
  48. preprocessing/archov/fight_result.csv +0 -0
  49. preprocessing/archov/fight_with_stats.csv +0 -0
  50. preprocessing/archov/fight_with_stats_precomp1.csv +0 -0
.gitignore ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ .venv/
2
+
3
+ __pycache__/
config.json CHANGED
@@ -1,5 +1,5 @@
1
  {
2
- "model_type": "custom",
3
  "input_shape": [null, 200, 89],
4
  "output_shape": [null, 1],
5
  "num_layers": 3,
 
1
  {
2
+ "model_type": "sequential",
3
  "input_shape": [null, 200, 89],
4
  "output_shape": [null, 1],
5
  "num_layers": 3,
config.py ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pathlib import Path
2
+
3
+ # Base paths
4
+ ROOT_DIR = Path(__file__).parent
5
+ DATA_DIR = ROOT_DIR / "data"
6
+
7
+ # Model paths
8
+ MODEL_PATH = DATA_DIR / "model" / "model.h5"
9
+
10
+ # Data paths
11
+ FIGHT_STATS_PATH = DATA_DIR / "preprocessing" / "fight_with_stats_precomp.csv"
12
+ FIGHTER_STATS_PATH = DATA_DIR / "preprocessing" / "fighter_total_stats.csv"
13
+ FIGHTER_DETAILS_PATH = DATA_DIR / "preprocessing" / "fighter_details.csv"
14
+ MODEL_DATA_PATH = DATA_DIR / "model" / "df_model.csv"
15
+
16
+ # TensorFlow config
17
+ import os
18
+ os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
19
+ os.environ['TF_ENABLE_ONEDNN_OPTS'] = '0'
data/model/df_model.csv ADDED
The diff for this file is too large to render. See raw diff
 
tf_model.h5 → data/model/model.h5 RENAMED
File without changes
data/model/model2.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ed7a99bb0c820ddac4c8be9c437f957ae097e61f3a3e56f1da2ec4570beb289b
3
+ size 943608
data/model/model3.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fffe0f1c51af44cf3926b69034fa59c15aef95fdedce9cdb4689459e15bbb7b4
3
+ size 942576
data/model/model3.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
data/model/my_model_weights.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:afeaa7a14b17871a666ba03faaafdc4ecaa159ba6ef688eca103331f463032bc
3
+ size 319128
data/model/my_model_weights2.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:713b36a829644311933b17cb448d85f52e64fccd1471254e4043af375101f4e0
3
+ size 319128
data/model/my_model_weights3.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:146657604b67644b262ea38cd0c6dcdbe5802a6881af384612ef9145a4c38c6c
3
+ size 319128
data/preprocessing/UFC_data.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/archiv/df_mode_old.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/archiv/df_odds.csv ADDED
@@ -0,0 +1,166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ fighter1,fighter2,odds_f1,odds_f2,bookmaker
2
+ Jesus Santos Aguilar,Tatsuro Taira,7.75,1.1,SuperBook
3
+ Jesus Santos Aguilar,Tatsuro Taira,7.5,1.1,Unibet
4
+ Jesus Santos Aguilar,Tatsuro Taira,7.5,1.1,Barstool Sportsbook
5
+ Jesus Santos Aguilar,Tatsuro Taira,9.0,1.08,LowVig.ag
6
+ Jesus Santos Aguilar,Tatsuro Taira,8.5,1.07,Bovada
7
+ Jesus Santos Aguilar,Tatsuro Taira,8.0,1.09,William Hill (US)
8
+ Jesus Santos Aguilar,Tatsuro Taira,7.5,1.1,SugarHouse
9
+ Jesus Santos Aguilar,Tatsuro Taira,7.5,1.1,BetRivers
10
+ Jesus Santos Aguilar,Tatsuro Taira,7.5,1.1,TwinSpires
11
+ Anshul Jubli,Jeka Saragih,1.83,1.97,Barstool Sportsbook
12
+ Anshul Jubli,Jeka Saragih,1.83,1.97,SugarHouse
13
+ Anshul Jubli,Jeka Saragih,1.83,2.0,William Hill (US)
14
+ Anshul Jubli,Jeka Saragih,1.9,1.92,LowVig.ag
15
+ Anshul Jubli,Jeka Saragih,1.83,1.97,BetRivers
16
+ Anshul Jubli,Jeka Saragih,1.83,2.0,SuperBook
17
+ Anshul Jubli,Jeka Saragih,1.83,1.97,Unibet
18
+ Anshul Jubli,Jeka Saragih,1.83,1.97,TwinSpires
19
+ Anshul Jubli,Jeka Saragih,1.87,1.95,DraftKings
20
+ Anshul Jubli,Jeka Saragih,1.87,1.95,Bovada
21
+ Denis Tiuliulin,Jun Yong Park,2.8,1.48,LowVig.ag
22
+ Denis Tiuliulin,Jun Yong Park,2.65,1.51,William Hill (US)
23
+ Denis Tiuliulin,Jun Yong Park,2.75,1.49,DraftKings
24
+ Denis Tiuliulin,Jun Yong Park,2.75,1.5,SuperBook
25
+ Denis Tiuliulin,Jun Yong Park,2.7,1.48,Bovada
26
+ Denis Tiuliulin,Jun Yong Park,2.63,1.49,BetRivers
27
+ Denis Tiuliulin,Jun Yong Park,2.63,1.49,SugarHouse
28
+ Denis Tiuliulin,Jun Yong Park,2.63,1.49,TwinSpires
29
+ Denis Tiuliulin,Jun Yong Park,2.63,1.49,Unibet
30
+ Denis Tiuliulin,Jun Yong Park,2.63,1.49,Barstool Sportsbook
31
+ Hyun Sung Park,Seung Guk Choi,1.51,2.55,Barstool Sportsbook
32
+ Hyun Sung Park,Seung Guk Choi,1.51,2.55,SugarHouse
33
+ Hyun Sung Park,Seung Guk Choi,1.5,2.7,William Hill (US)
34
+ Hyun Sung Park,Seung Guk Choi,1.51,2.55,TwinSpires
35
+ Hyun Sung Park,Seung Guk Choi,1.51,2.55,BetRivers
36
+ Hyun Sung Park,Seung Guk Choi,1.51,2.55,Unibet
37
+ Hyun Sung Park,Seung Guk Choi,1.5,2.55,Bovada
38
+ Hyun Sung Park,Seung Guk Choi,1.55,2.57,LowVig.ag
39
+ Hyun Sung Park,Seung Guk Choi,1.53,2.6,DraftKings
40
+ Jeongyoung Lee,Yi Zha,1.42,3.0,William Hill (US)
41
+ Jeongyoung Lee,Yi Zha,1.4,3.0,SugarHouse
42
+ Jeongyoung Lee,Yi Zha,1.4,3.0,TwinSpires
43
+ Jeongyoung Lee,Yi Zha,1.4,3.0,BetRivers
44
+ Jeongyoung Lee,Yi Zha,1.4,3.0,Barstool Sportsbook
45
+ Jeongyoung Lee,Yi Zha,1.4,3.0,Unibet
46
+ Jeongyoung Lee,Yi Zha,1.4,3.11,LowVig.ag
47
+ Ji Yeon Kim,Mandy Böhm,1.38,3.25,SuperBook
48
+ Ji Yeon Kim,Mandy Böhm,1.35,3.2,Unibet
49
+ Ji Yeon Kim,Mandy Böhm,1.35,3.2,Barstool Sportsbook
50
+ Ji Yeon Kim,Mandy Böhm,1.39,3.15,LowVig.ag
51
+ Ji Yeon Kim,Mandy Böhm,1.39,3.15,DraftKings
52
+ Ji Yeon Kim,Mandy Böhm,1.36,3.12,Bovada
53
+ Ji Yeon Kim,Mandy Böhm,1.38,3.1,William Hill (US)
54
+ Ji Yeon Kim,Mandy Böhm,1.35,3.2,SugarHouse
55
+ Ji Yeon Kim,Mandy Böhm,1.35,3.2,BetRivers
56
+ Ji Yeon Kim,Mandy Böhm,1.35,3.2,TwinSpires
57
+ Adam Fugitt,Yusaku Kinoshita,3.4,1.32,Bovada
58
+ Adam Fugitt,Yusaku Kinoshita,3.2,1.35,SugarHouse
59
+ Adam Fugitt,Yusaku Kinoshita,3.2,1.35,TwinSpires
60
+ Adam Fugitt,Yusaku Kinoshita,3.7,1.31,LowVig.ag
61
+ Adam Fugitt,Yusaku Kinoshita,3.2,1.35,Barstool Sportsbook
62
+ Adam Fugitt,Yusaku Kinoshita,3.2,1.35,BetRivers
63
+ Adam Fugitt,Yusaku Kinoshita,3.3,1.37,SuperBook
64
+ Adam Fugitt,Yusaku Kinoshita,3.2,1.35,Unibet
65
+ Adam Fugitt,Yusaku Kinoshita,3.5,1.33,DraftKings
66
+ Blagoy Ivanov,Marcin Tybura,2.3,1.67,SuperBook
67
+ Blagoy Ivanov,Marcin Tybura,2.26,1.69,LowVig.ag
68
+ Blagoy Ivanov,Marcin Tybura,2.25,1.67,Bovada
69
+ Blagoy Ivanov,Marcin Tybura,2.25,1.64,BetRivers
70
+ Blagoy Ivanov,Marcin Tybura,2.25,1.64,SugarHouse
71
+ Blagoy Ivanov,Marcin Tybura,2.25,1.64,TwinSpires
72
+ Blagoy Ivanov,Marcin Tybura,2.25,1.64,Unibet
73
+ Blagoy Ivanov,Marcin Tybura,2.25,1.64,Barstool Sportsbook
74
+ Da Un Jung,Devin Clark,1.42,3.0,SuperBook
75
+ Da Un Jung,Devin Clark,1.52,2.68,LowVig.ag
76
+ Da Un Jung,Devin Clark,1.47,2.85,DraftKings
77
+ Da Un Jung,Devin Clark,1.45,2.78,Bovada
78
+ Da Un Jung,Devin Clark,1.42,2.88,BetRivers
79
+ Da Un Jung,Devin Clark,1.42,2.88,SugarHouse
80
+ Da Un Jung,Devin Clark,1.42,2.88,TwinSpires
81
+ Da Un Jung,Devin Clark,1.42,2.88,Unibet
82
+ Da Un Jung,Devin Clark,1.42,2.88,Barstool Sportsbook
83
+ Derrick Lewis,Sergey Spivak,2.9,1.45,SuperBook
84
+ Derrick Lewis,Sergey Spivak,2.95,1.43,DraftKings
85
+ Derrick Lewis,Sergey Spivak,2.9,1.38,Bovada
86
+ Derrick Lewis,Sergey Spivak,2.85,1.43,BetRivers
87
+ Derrick Lewis,Sergey Spivak,2.85,1.43,SugarHouse
88
+ Derrick Lewis,Sergey Spivak,2.85,1.43,TwinSpires
89
+ Derrick Lewis,Sergey Spivak,2.85,1.43,Unibet
90
+ Derrick Lewis,Sergey Spivak,2.85,1.43,Barstool Sportsbook
91
+ Dooho Choi,Kyle Nelson,1.54,2.65,SuperBook
92
+ Dooho Choi,Kyle Nelson,1.55,2.57,LowVig.ag
93
+ Dooho Choi,Kyle Nelson,1.53,2.6,DraftKings
94
+ Dooho Choi,Kyle Nelson,1.53,2.55,Bovada
95
+ Dooho Choi,Kyle Nelson,1.55,2.48,BetRivers
96
+ Dooho Choi,Kyle Nelson,1.55,2.48,SugarHouse
97
+ Dooho Choi,Kyle Nelson,1.55,2.48,TwinSpires
98
+ Dooho Choi,Kyle Nelson,1.55,2.48,Unibet
99
+ Dooho Choi,Kyle Nelson,1.55,2.48,Barstool Sportsbook
100
+ Blake Bilder,Shane Young,2.0,1.83,DraftKings
101
+ Blake Bilder,Shane Young,1.97,1.81,MyBookie.ag
102
+ Blake Bilder,Shane Young,2.0,1.83,SuperBook
103
+ Blake Bilder,Shane Young,2.05,1.8,LowVig.ag
104
+ Blake Bilder,Shane Young,1.97,1.82,Barstool Sportsbook
105
+ Blake Bilder,Shane Young,1.97,1.82,TwinSpires
106
+ Blake Bilder,Shane Young,1.97,1.82,SugarHouse
107
+ Blake Bilder,Shane Young,1.97,1.82,BetRivers
108
+ Blake Bilder,Shane Young,1.97,1.82,Unibet
109
+ Justin Tafa,Parker Porter,1.69,2.25,LowVig.ag
110
+ Justin Tafa,Parker Porter,1.71,2.2,DraftKings
111
+ Justin Tafa,Parker Porter,1.66,2.19,MyBookie.ag
112
+ Justin Tafa,Parker Porter,1.69,2.25,SuperBook
113
+ Justin Tafa,Parker Porter,1.67,2.2,Barstool Sportsbook
114
+ Justin Tafa,Parker Porter,1.67,2.2,SugarHouse
115
+ Justin Tafa,Parker Porter,1.67,2.2,TwinSpires
116
+ Justin Tafa,Parker Porter,1.67,2.2,BetRivers
117
+ Justin Tafa,Parker Porter,1.67,2.2,Unibet
118
+ Jack Della Maddalena,Randy Brown,1.33,3.45,LowVig.ag
119
+ Jack Della Maddalena,Randy Brown,1.33,3.55,DraftKings
120
+ Jack Della Maddalena,Randy Brown,1.3,3.41,MyBookie.ag
121
+ Jack Della Maddalena,Randy Brown,1.32,3.6,SuperBook
122
+ Jack Della Maddalena,Randy Brown,1.29,3.65,Barstool Sportsbook
123
+ Jack Della Maddalena,Randy Brown,1.29,3.65,SugarHouse
124
+ Jack Della Maddalena,Randy Brown,1.29,3.65,TwinSpires
125
+ Jack Della Maddalena,Randy Brown,1.29,3.65,BetRivers
126
+ Jack Della Maddalena,Randy Brown,1.29,3.65,Unibet
127
+ Josh Emmett,Yair Rodriguez,2.35,1.65,LowVig.ag
128
+ Josh Emmett,Yair Rodriguez,2.35,1.65,DraftKings
129
+ Josh Emmett,Yair Rodriguez,2.26,1.62,MyBookie.ag
130
+ Josh Emmett,Yair Rodriguez,2.35,1.65,SuperBook
131
+ Josh Emmett,Yair Rodriguez,2.32,1.61,TwinSpires
132
+ Josh Emmett,Yair Rodriguez,2.32,1.61,Barstool Sportsbook
133
+ Josh Emmett,Yair Rodriguez,2.32,1.61,BetRivers
134
+ Josh Emmett,Yair Rodriguez,2.32,1.61,Unibet
135
+ Josh Emmett,Yair Rodriguez,2.32,1.61,SugarHouse
136
+ Alex Volkanovski,Islam Makhachev,3.95,1.28,LowVig.ag
137
+ Alex Volkanovski,Islam Makhachev,3.75,1.28,Barstool Sportsbook
138
+ Alex Volkanovski,Islam Makhachev,3.75,1.28,BetRivers
139
+ Alex Volkanovski,Islam Makhachev,3.75,1.28,Unibet
140
+ Alex Volkanovski,Islam Makhachev,3.75,1.28,TwinSpires
141
+ Alex Volkanovski,Islam Makhachev,3.75,1.28,SugarHouse
142
+ Alex Volkanovski,Islam Makhachev,4.0,1.27,DraftKings
143
+ Alex Volkanovski,Islam Makhachev,3.62,1.28,MyBookie.ag
144
+ Alex Volkanovski,Islam Makhachev,3.9,1.29,SuperBook
145
+ Alexa Grasso,Valentina Shevchenko,5.1,1.17,Barstool Sportsbook
146
+ Alexa Grasso,Valentina Shevchenko,5.1,1.17,TwinSpires
147
+ Alexa Grasso,Valentina Shevchenko,5.25,1.17,LowVig.ag
148
+ Alexa Grasso,Valentina Shevchenko,5.1,1.17,SugarHouse
149
+ Alexa Grasso,Valentina Shevchenko,5.1,1.17,BetRivers
150
+ Ciryl Gane,Jon Jones,2.15,1.74,LowVig.ag
151
+ Ciryl Gane,Jon Jones,2.05,1.8,DraftKings
152
+ Ciryl Gane,Jon Jones,2.1,1.73,Barstool Sportsbook
153
+ Ciryl Gane,Jon Jones,2.1,1.73,BetRivers
154
+ Ciryl Gane,Jon Jones,2.1,1.73,SugarHouse
155
+ Ciryl Gane,Jon Jones,2.1,1.73,TwinSpires
156
+ Kamaru Usman,Leon Edwards,1.41,2.85,Barstool Sportsbook
157
+ Kamaru Usman,Leon Edwards,1.41,2.85,BetRivers
158
+ Kamaru Usman,Leon Edwards,1.41,2.85,SugarHouse
159
+ Kamaru Usman,Leon Edwards,1.41,2.85,TwinSpires
160
+ Kamaru Usman,Leon Edwards,1.41,3.05,DraftKings
161
+ Alex Pereira,Israel Adesanya,2.14,1.71,Barstool Sportsbook
162
+ Alex Pereira,Israel Adesanya,2.14,1.71,BetRivers
163
+ Alex Pereira,Israel Adesanya,2.14,1.71,TwinSpires
164
+ Alex Pereira,Israel Adesanya,2.14,1.71,SugarHouse
165
+ Alex Pereira,Israel Adesanya,2.35,1.65,DraftKings
166
+ Alex Pereira,Israel Adesanya,2.35,1.65,LowVig.ag
data/preprocessing/archiv/df_skills.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/archiv/fight_result.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/archiv/fight_with_stats.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/archiv/fight_with_stats_precomp.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/archiv/fighter_details.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/archiv/fighter_total_stats.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/archov/df_model.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/archov/df_skills.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/archov/fight_result.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/archov/fight_with_stats.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/archov/fight_with_stats_precomp1.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/archov/fighter_details.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/archov/fighter_total_stats.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/df_odds.csv ADDED
@@ -0,0 +1,166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ fighter1,fighter2,odds_f1,odds_f2,bookmaker
2
+ Jesus Santos Aguilar,Tatsuro Taira,7.75,1.1,SuperBook
3
+ Jesus Santos Aguilar,Tatsuro Taira,7.5,1.1,Unibet
4
+ Jesus Santos Aguilar,Tatsuro Taira,7.5,1.1,Barstool Sportsbook
5
+ Jesus Santos Aguilar,Tatsuro Taira,9.0,1.08,LowVig.ag
6
+ Jesus Santos Aguilar,Tatsuro Taira,8.5,1.07,Bovada
7
+ Jesus Santos Aguilar,Tatsuro Taira,8.0,1.09,William Hill (US)
8
+ Jesus Santos Aguilar,Tatsuro Taira,7.5,1.1,SugarHouse
9
+ Jesus Santos Aguilar,Tatsuro Taira,7.5,1.1,BetRivers
10
+ Jesus Santos Aguilar,Tatsuro Taira,7.5,1.1,TwinSpires
11
+ Anshul Jubli,Jeka Saragih,1.83,1.97,Barstool Sportsbook
12
+ Anshul Jubli,Jeka Saragih,1.83,1.97,SugarHouse
13
+ Anshul Jubli,Jeka Saragih,1.83,2.0,William Hill (US)
14
+ Anshul Jubli,Jeka Saragih,1.9,1.92,LowVig.ag
15
+ Anshul Jubli,Jeka Saragih,1.83,1.97,BetRivers
16
+ Anshul Jubli,Jeka Saragih,1.83,2.0,SuperBook
17
+ Anshul Jubli,Jeka Saragih,1.83,1.97,Unibet
18
+ Anshul Jubli,Jeka Saragih,1.83,1.97,TwinSpires
19
+ Anshul Jubli,Jeka Saragih,1.87,1.95,DraftKings
20
+ Anshul Jubli,Jeka Saragih,1.87,1.95,Bovada
21
+ Denis Tiuliulin,Jun Yong Park,2.8,1.48,LowVig.ag
22
+ Denis Tiuliulin,Jun Yong Park,2.65,1.51,William Hill (US)
23
+ Denis Tiuliulin,Jun Yong Park,2.75,1.49,DraftKings
24
+ Denis Tiuliulin,Jun Yong Park,2.75,1.5,SuperBook
25
+ Denis Tiuliulin,Jun Yong Park,2.7,1.48,Bovada
26
+ Denis Tiuliulin,Jun Yong Park,2.63,1.49,BetRivers
27
+ Denis Tiuliulin,Jun Yong Park,2.63,1.49,SugarHouse
28
+ Denis Tiuliulin,Jun Yong Park,2.63,1.49,TwinSpires
29
+ Denis Tiuliulin,Jun Yong Park,2.63,1.49,Unibet
30
+ Denis Tiuliulin,Jun Yong Park,2.63,1.49,Barstool Sportsbook
31
+ Hyun Sung Park,Seung Guk Choi,1.51,2.55,Barstool Sportsbook
32
+ Hyun Sung Park,Seung Guk Choi,1.51,2.55,SugarHouse
33
+ Hyun Sung Park,Seung Guk Choi,1.5,2.7,William Hill (US)
34
+ Hyun Sung Park,Seung Guk Choi,1.51,2.55,TwinSpires
35
+ Hyun Sung Park,Seung Guk Choi,1.51,2.55,BetRivers
36
+ Hyun Sung Park,Seung Guk Choi,1.51,2.55,Unibet
37
+ Hyun Sung Park,Seung Guk Choi,1.5,2.55,Bovada
38
+ Hyun Sung Park,Seung Guk Choi,1.55,2.57,LowVig.ag
39
+ Hyun Sung Park,Seung Guk Choi,1.53,2.6,DraftKings
40
+ Jeongyoung Lee,Yi Zha,1.42,3.0,William Hill (US)
41
+ Jeongyoung Lee,Yi Zha,1.4,3.0,SugarHouse
42
+ Jeongyoung Lee,Yi Zha,1.4,3.0,TwinSpires
43
+ Jeongyoung Lee,Yi Zha,1.4,3.0,BetRivers
44
+ Jeongyoung Lee,Yi Zha,1.4,3.0,Barstool Sportsbook
45
+ Jeongyoung Lee,Yi Zha,1.4,3.0,Unibet
46
+ Jeongyoung Lee,Yi Zha,1.4,3.11,LowVig.ag
47
+ Ji Yeon Kim,Mandy Böhm,1.38,3.25,SuperBook
48
+ Ji Yeon Kim,Mandy Böhm,1.35,3.2,Unibet
49
+ Ji Yeon Kim,Mandy Böhm,1.35,3.2,Barstool Sportsbook
50
+ Ji Yeon Kim,Mandy Böhm,1.39,3.15,LowVig.ag
51
+ Ji Yeon Kim,Mandy Böhm,1.39,3.15,DraftKings
52
+ Ji Yeon Kim,Mandy Böhm,1.36,3.12,Bovada
53
+ Ji Yeon Kim,Mandy Böhm,1.38,3.1,William Hill (US)
54
+ Ji Yeon Kim,Mandy Böhm,1.35,3.2,SugarHouse
55
+ Ji Yeon Kim,Mandy Böhm,1.35,3.2,BetRivers
56
+ Ji Yeon Kim,Mandy Böhm,1.35,3.2,TwinSpires
57
+ Adam Fugitt,Yusaku Kinoshita,3.4,1.32,Bovada
58
+ Adam Fugitt,Yusaku Kinoshita,3.2,1.35,SugarHouse
59
+ Adam Fugitt,Yusaku Kinoshita,3.2,1.35,TwinSpires
60
+ Adam Fugitt,Yusaku Kinoshita,3.7,1.31,LowVig.ag
61
+ Adam Fugitt,Yusaku Kinoshita,3.2,1.35,Barstool Sportsbook
62
+ Adam Fugitt,Yusaku Kinoshita,3.2,1.35,BetRivers
63
+ Adam Fugitt,Yusaku Kinoshita,3.3,1.37,SuperBook
64
+ Adam Fugitt,Yusaku Kinoshita,3.2,1.35,Unibet
65
+ Adam Fugitt,Yusaku Kinoshita,3.5,1.33,DraftKings
66
+ Blagoy Ivanov,Marcin Tybura,2.3,1.67,SuperBook
67
+ Blagoy Ivanov,Marcin Tybura,2.26,1.69,LowVig.ag
68
+ Blagoy Ivanov,Marcin Tybura,2.25,1.67,Bovada
69
+ Blagoy Ivanov,Marcin Tybura,2.25,1.64,BetRivers
70
+ Blagoy Ivanov,Marcin Tybura,2.25,1.64,SugarHouse
71
+ Blagoy Ivanov,Marcin Tybura,2.25,1.64,TwinSpires
72
+ Blagoy Ivanov,Marcin Tybura,2.25,1.64,Unibet
73
+ Blagoy Ivanov,Marcin Tybura,2.25,1.64,Barstool Sportsbook
74
+ Da Un Jung,Devin Clark,1.42,3.0,SuperBook
75
+ Da Un Jung,Devin Clark,1.52,2.68,LowVig.ag
76
+ Da Un Jung,Devin Clark,1.47,2.85,DraftKings
77
+ Da Un Jung,Devin Clark,1.45,2.78,Bovada
78
+ Da Un Jung,Devin Clark,1.42,2.88,BetRivers
79
+ Da Un Jung,Devin Clark,1.42,2.88,SugarHouse
80
+ Da Un Jung,Devin Clark,1.42,2.88,TwinSpires
81
+ Da Un Jung,Devin Clark,1.42,2.88,Unibet
82
+ Da Un Jung,Devin Clark,1.42,2.88,Barstool Sportsbook
83
+ Derrick Lewis,Sergey Spivak,2.9,1.45,SuperBook
84
+ Derrick Lewis,Sergey Spivak,2.95,1.43,DraftKings
85
+ Derrick Lewis,Sergey Spivak,2.9,1.38,Bovada
86
+ Derrick Lewis,Sergey Spivak,2.85,1.43,BetRivers
87
+ Derrick Lewis,Sergey Spivak,2.85,1.43,SugarHouse
88
+ Derrick Lewis,Sergey Spivak,2.85,1.43,TwinSpires
89
+ Derrick Lewis,Sergey Spivak,2.85,1.43,Unibet
90
+ Derrick Lewis,Sergey Spivak,2.85,1.43,Barstool Sportsbook
91
+ Dooho Choi,Kyle Nelson,1.54,2.65,SuperBook
92
+ Dooho Choi,Kyle Nelson,1.55,2.57,LowVig.ag
93
+ Dooho Choi,Kyle Nelson,1.53,2.6,DraftKings
94
+ Dooho Choi,Kyle Nelson,1.53,2.55,Bovada
95
+ Dooho Choi,Kyle Nelson,1.55,2.48,BetRivers
96
+ Dooho Choi,Kyle Nelson,1.55,2.48,SugarHouse
97
+ Dooho Choi,Kyle Nelson,1.55,2.48,TwinSpires
98
+ Dooho Choi,Kyle Nelson,1.55,2.48,Unibet
99
+ Dooho Choi,Kyle Nelson,1.55,2.48,Barstool Sportsbook
100
+ Blake Bilder,Shane Young,2.0,1.83,DraftKings
101
+ Blake Bilder,Shane Young,1.97,1.81,MyBookie.ag
102
+ Blake Bilder,Shane Young,2.0,1.83,SuperBook
103
+ Blake Bilder,Shane Young,2.05,1.8,LowVig.ag
104
+ Blake Bilder,Shane Young,1.97,1.82,Barstool Sportsbook
105
+ Blake Bilder,Shane Young,1.97,1.82,TwinSpires
106
+ Blake Bilder,Shane Young,1.97,1.82,SugarHouse
107
+ Blake Bilder,Shane Young,1.97,1.82,BetRivers
108
+ Blake Bilder,Shane Young,1.97,1.82,Unibet
109
+ Justin Tafa,Parker Porter,1.69,2.25,LowVig.ag
110
+ Justin Tafa,Parker Porter,1.71,2.2,DraftKings
111
+ Justin Tafa,Parker Porter,1.66,2.19,MyBookie.ag
112
+ Justin Tafa,Parker Porter,1.69,2.25,SuperBook
113
+ Justin Tafa,Parker Porter,1.67,2.2,Barstool Sportsbook
114
+ Justin Tafa,Parker Porter,1.67,2.2,SugarHouse
115
+ Justin Tafa,Parker Porter,1.67,2.2,TwinSpires
116
+ Justin Tafa,Parker Porter,1.67,2.2,BetRivers
117
+ Justin Tafa,Parker Porter,1.67,2.2,Unibet
118
+ Jack Della Maddalena,Randy Brown,1.33,3.45,LowVig.ag
119
+ Jack Della Maddalena,Randy Brown,1.33,3.55,DraftKings
120
+ Jack Della Maddalena,Randy Brown,1.3,3.41,MyBookie.ag
121
+ Jack Della Maddalena,Randy Brown,1.32,3.6,SuperBook
122
+ Jack Della Maddalena,Randy Brown,1.29,3.65,Barstool Sportsbook
123
+ Jack Della Maddalena,Randy Brown,1.29,3.65,SugarHouse
124
+ Jack Della Maddalena,Randy Brown,1.29,3.65,TwinSpires
125
+ Jack Della Maddalena,Randy Brown,1.29,3.65,BetRivers
126
+ Jack Della Maddalena,Randy Brown,1.29,3.65,Unibet
127
+ Josh Emmett,Yair Rodriguez,2.35,1.65,LowVig.ag
128
+ Josh Emmett,Yair Rodriguez,2.35,1.65,DraftKings
129
+ Josh Emmett,Yair Rodriguez,2.26,1.62,MyBookie.ag
130
+ Josh Emmett,Yair Rodriguez,2.35,1.65,SuperBook
131
+ Josh Emmett,Yair Rodriguez,2.32,1.61,TwinSpires
132
+ Josh Emmett,Yair Rodriguez,2.32,1.61,Barstool Sportsbook
133
+ Josh Emmett,Yair Rodriguez,2.32,1.61,BetRivers
134
+ Josh Emmett,Yair Rodriguez,2.32,1.61,Unibet
135
+ Josh Emmett,Yair Rodriguez,2.32,1.61,SugarHouse
136
+ Alex Volkanovski,Islam Makhachev,3.95,1.28,LowVig.ag
137
+ Alex Volkanovski,Islam Makhachev,3.75,1.28,Barstool Sportsbook
138
+ Alex Volkanovski,Islam Makhachev,3.75,1.28,BetRivers
139
+ Alex Volkanovski,Islam Makhachev,3.75,1.28,Unibet
140
+ Alex Volkanovski,Islam Makhachev,3.75,1.28,TwinSpires
141
+ Alex Volkanovski,Islam Makhachev,3.75,1.28,SugarHouse
142
+ Alex Volkanovski,Islam Makhachev,4.0,1.27,DraftKings
143
+ Alex Volkanovski,Islam Makhachev,3.62,1.28,MyBookie.ag
144
+ Alex Volkanovski,Islam Makhachev,3.9,1.29,SuperBook
145
+ Alexa Grasso,Valentina Shevchenko,5.1,1.17,Barstool Sportsbook
146
+ Alexa Grasso,Valentina Shevchenko,5.1,1.17,TwinSpires
147
+ Alexa Grasso,Valentina Shevchenko,5.25,1.17,LowVig.ag
148
+ Alexa Grasso,Valentina Shevchenko,5.1,1.17,SugarHouse
149
+ Alexa Grasso,Valentina Shevchenko,5.1,1.17,BetRivers
150
+ Ciryl Gane,Jon Jones,2.15,1.74,LowVig.ag
151
+ Ciryl Gane,Jon Jones,2.05,1.8,DraftKings
152
+ Ciryl Gane,Jon Jones,2.1,1.73,Barstool Sportsbook
153
+ Ciryl Gane,Jon Jones,2.1,1.73,BetRivers
154
+ Ciryl Gane,Jon Jones,2.1,1.73,SugarHouse
155
+ Ciryl Gane,Jon Jones,2.1,1.73,TwinSpires
156
+ Kamaru Usman,Leon Edwards,1.41,2.85,Barstool Sportsbook
157
+ Kamaru Usman,Leon Edwards,1.41,2.85,BetRivers
158
+ Kamaru Usman,Leon Edwards,1.41,2.85,SugarHouse
159
+ Kamaru Usman,Leon Edwards,1.41,2.85,TwinSpires
160
+ Kamaru Usman,Leon Edwards,1.41,3.05,DraftKings
161
+ Alex Pereira,Israel Adesanya,2.14,1.71,Barstool Sportsbook
162
+ Alex Pereira,Israel Adesanya,2.14,1.71,BetRivers
163
+ Alex Pereira,Israel Adesanya,2.14,1.71,TwinSpires
164
+ Alex Pereira,Israel Adesanya,2.14,1.71,SugarHouse
165
+ Alex Pereira,Israel Adesanya,2.35,1.65,DraftKings
166
+ Alex Pereira,Israel Adesanya,2.35,1.65,LowVig.ag
data/preprocessing/df_skills.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/fight_result.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/fight_with_stats.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/fight_with_stats_precomp.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/fighter_details.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/preprocessing/fighter_total_stats.csv ADDED
The diff for this file is too large to render. See raw diff
 
handler.py CHANGED
@@ -1,19 +1,28 @@
1
  import tensorflow as tf
2
- import numpy as np
3
  from typing import Dict, Any
 
 
4
 
5
 
6
  class CustomLSTM(tf.keras.layers.LSTM):
7
- def __init__(self, *args, **kwargs):
8
- kwargs.pop('time_major', None)
9
- super().__init__(*args, **kwargs)
 
 
 
10
 
11
 
12
  class EndpointHandler:
13
- def __init__(self, path=""):
14
- # Load your Keras model
15
  tf.keras.utils.get_custom_objects()['LSTM'] = CustomLSTM
16
- self.model = tf.keras.models.load_model(f"{path}/tf_model.h5")
 
 
 
 
 
17
 
18
  def __call__(self, data: Dict[str, Any]) -> Dict[str, Any]:
19
  """
@@ -33,12 +42,24 @@ class EndpointHandler:
33
  if not fighter1 or not fighter2:
34
  return {"error": "Both 'fighter1' and 'fighter2' must be provided."}
35
 
36
- # Prepare input for the model (replace with your logic)
37
- input_data = np.random.rand(1, 200, 89) # Replace with real pre-processing logic
 
 
 
 
 
 
 
 
38
 
39
- # Get predictions
40
- prediction = self.model.predict(input_data)
41
- return {
42
- "fighter1_win_probability": float(prediction[0][0]),
43
- "fighter2_win_probability": float(1 - prediction[0][0]),
44
- }
 
 
 
 
 
1
  import tensorflow as tf
 
2
  from typing import Dict, Any
3
+ from predictor import FightPredictor
4
+ from config import MODEL_PATH
5
 
6
 
7
  class CustomLSTM(tf.keras.layers.LSTM):
8
+ """Custom LSTM layer that removes time_major from kwargs"""
9
+ @classmethod
10
+ def from_config(cls, config):
11
+ # Remove time_major if present in config
12
+ config.pop('time_major', None)
13
+ return super().from_config(config)
14
 
15
 
16
  class EndpointHandler:
17
+ def __init__(self):
18
+ # Register the custom layer
19
  tf.keras.utils.get_custom_objects()['LSTM'] = CustomLSTM
20
+
21
+ # Load model using path from config
22
+ self.model = tf.keras.models.load_model(str(MODEL_PATH))
23
+
24
+ # Initialize predictor
25
+ self.predictor = FightPredictor(self.model)
26
 
27
  def __call__(self, data: Dict[str, Any]) -> Dict[str, Any]:
28
  """
 
42
  if not fighter1 or not fighter2:
43
  return {"error": "Both 'fighter1' and 'fighter2' must be provided."}
44
 
45
+ try:
46
+ # Get prediction using FightPredictor
47
+ f1_prob, f2_prob, details = self.predictor.get_prediction(
48
+ fighter1,
49
+ fighter2,
50
+ verbose=True
51
+ )
52
+
53
+ if f1_prob is None:
54
+ return {"error": "Prediction failed"}
55
 
56
+ return {
57
+ "fighter1": fighter1,
58
+ "fighter2": fighter2,
59
+ "fighter1_win_probability": f1_prob,
60
+ "fighter2_win_probability": f2_prob,
61
+ "details": details
62
+ }
63
+
64
+ except Exception as e:
65
+ return {"error": str(e)}
predictor.py ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import pandas as pd
3
+ from sklearn.preprocessing import MinMaxScaler
4
+ from typing import Tuple, Dict, Optional
5
+ import pandas as pd
6
+
7
+ from config import (
8
+ FIGHT_STATS_PATH,
9
+ FIGHTER_STATS_PATH,
10
+ FIGHTER_DETAILS_PATH,
11
+ MODEL_DATA_PATH
12
+ )
13
+
14
+ class FightPredictor:
15
+ def __init__(self, model):
16
+ self.model = model
17
+ self._load_data()
18
+
19
+ def _load_data(self):
20
+ """Load required datasets"""
21
+ self.df = pd.read_csv(FIGHT_STATS_PATH)
22
+ self.df_fighters = pd.read_csv(FIGHTER_STATS_PATH)
23
+ self.df_fighters_details = pd.read_csv(FIGHTER_DETAILS_PATH, parse_dates=['DOB'])
24
+ self.df_model = pd.read_csv(MODEL_DATA_PATH, parse_dates=True)
25
+
26
+ # Calculate ages
27
+ today = pd.Timestamp.today()
28
+ self.df_fighters_details['AGE'] = self.df_fighters_details['DOB'].apply(
29
+ lambda x: (today - pd.Timestamp(x)).days / 365.25
30
+ ).round(1)
31
+
32
+ def _validate_fighters(self, f1: str, f2: str):
33
+ """Validate that both fighters exist in dataset"""
34
+ for fighter in [f1, f2]:
35
+ if fighter not in self.df_fighters['FIGHTER'].values:
36
+ raise ValueError(f"Fighter '{fighter}' not found in database")
37
+
38
+ def _get_fighter_stats(self, f1: str, f2: str, verbose: bool) -> Tuple[np.ndarray, Dict]:
39
+ """Get fighter statistics and compute input features"""
40
+ f1_df = self.df_fighters.loc[self.df_fighters['FIGHTER'] == f1]
41
+ f2_df = self.df_fighters.loc[self.df_fighters['FIGHTER'] == f2]
42
+
43
+ # Compute age difference
44
+ agediff = (
45
+ self.df_fighters_details[self.df_fighters_details['FIGHTER'] == f1]['AGE'].values[0] -
46
+ self.df_fighters_details[self.df_fighters_details['FIGHTER'] == f2]['AGE'].values[0]
47
+ )
48
+
49
+ # Collect form scores and fight stats
50
+ form_scores = [f1_df['form_skore_fighter'].values[0], f2_df['form_skore_fighter'].values[0]]
51
+ no_of_fights = [f1_df['Fights'].values[0], f2_df['Fights'].values[0]]
52
+ W_D_NC = (
53
+ f1_df[['Win', 'DRAW', 'No_contest']].values.tolist()[0] +
54
+ f2_df[['Win', 'DRAW', 'No_contest']].values.tolist()[0]
55
+ )
56
+
57
+ # Process stats
58
+ stats_f1, stats_f2 = [], []
59
+ for col in self.df_fighters.columns[10:]:
60
+ splited = col.split('_')
61
+ if 'CTRL' in splited:
62
+ stats_f1.append((f1_df[col] / f1_df['TotalTime']).values[0])
63
+ stats_f2.append((f2_df[col] / f2_df['TotalTime']).values[0])
64
+ if 'attemps' in splited:
65
+ stats_f1.append((f1_df[col.replace('attemps', 'landed')] / f1_df[col]).values[0])
66
+ stats_f1.append((f1_df[col.replace('attemps', 'landed')] / f1_df['TotalTime']).values[0] * 300)
67
+ stats_f2.append((f2_df[col.replace('attemps', 'landed')] / f2_df[col]).values[0])
68
+ stats_f2.append((f2_df[col.replace('attemps', 'landed')] / f2_df['TotalTime']).values[0] * 300)
69
+
70
+ stats_list = stats_f1 + stats_f2
71
+
72
+ # Prepare input array
73
+ vstup = np.array([1] +
74
+ [f1_df.iloc[0][col] - f2_df.iloc[0][col] for col in ['HEIGHT_fighter', 'REACH_fighter']] +
75
+ [agediff] + form_scores + no_of_fights + W_D_NC + stats_list
76
+ )
77
+
78
+ # Prepare details dict if verbose
79
+ details = {}
80
+ if verbose:
81
+ details = {
82
+ "age_difference": f"{agediff:.1f}",
83
+ f"{f1}_form_score": f"{form_scores[0]:.2f}",
84
+ f"{f2}_form_score": f"{form_scores[1]:.2f}",
85
+ f"{f1}_total_fights": int(no_of_fights[0]),
86
+ f"{f2}_total_fights": int(no_of_fights[1])
87
+ }
88
+
89
+ return vstup, details
90
+
91
+ def _scale_input(self, vstup: np.ndarray) -> np.ndarray:
92
+ """Scale input features"""
93
+ scaler = MinMaxScaler(feature_range=(0, 1))
94
+ combined_df = pd.concat(
95
+ [self.df_model, pd.DataFrame([vstup], columns=self.df_model.columns)],
96
+ ignore_index=True
97
+ )
98
+ vstup_scaled = scaler.fit_transform(combined_df.iloc[:, 1:])[-200:, :]
99
+ return np.nan_to_num(vstup_scaled)
100
+
101
+ def get_prediction(self, f1: str, f2: str, verbose: bool = False) -> Optional[Tuple[float, float, Dict]]:
102
+ """
103
+ Generate fight prediction between two fighters
104
+
105
+ Args:
106
+ f1: Name of first fighter
107
+ f2: Name of second fighter
108
+ verbose: Whether to return additional details
109
+
110
+ Returns:
111
+ Tuple of (fighter1_win_probability, fighter2_win_probability, details_dict)
112
+ Returns None if prediction fails
113
+ """
114
+ try:
115
+ # Validate fighters exist
116
+ self._validate_fighters(f1, f2)
117
+
118
+ # Get fighter stats and scale input
119
+ vstup, details = self._get_fighter_stats(f1, f2, verbose)
120
+ vstup_scaled = self._scale_input(vstup)
121
+
122
+ # Reshape for prediction
123
+ new_data = np.reshape(vstup_scaled, (1, 200, vstup_scaled.shape[1]))
124
+
125
+ # Make predictions both ways and average
126
+ pred_1 = self.model.predict(new_data, verbose=0)
127
+
128
+ # Get reverse prediction
129
+ vstup_rev, _ = self._get_fighter_stats(f2, f1, False)
130
+ vstup_rev_scaled = self._scale_input(vstup_rev)
131
+ new_data_rev = np.reshape(vstup_rev_scaled, (1, 200, vstup_rev_scaled.shape[1]))
132
+ pred_2 = self.model.predict(new_data_rev, verbose=0)
133
+
134
+ # Calculate final probability (as decimal between 0 and 1)
135
+ f1_prob = float(((1 - pred_1) + pred_2) / 2)
136
+ f2_prob = round(1 - f1_prob, 4)
137
+ f1_prob = round(f1_prob, 4)
138
+
139
+ # Add probability percentages to details if verbose
140
+ if verbose:
141
+ details["fighter1_win_percentage"] = f"{f1_prob * 100:.2f}%"
142
+ details["fighter2_win_percentage"] = f"{f2_prob * 100:.2f}%"
143
+
144
+ return f1_prob, f2_prob, details
145
+
146
+ except Exception as e:
147
+ print(f"Prediction failed: {str(e)}")
148
+ return None
preprocessing/UFC_data.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
preprocessing/archiv/df_mode_old.csv ADDED
The diff for this file is too large to render. See raw diff
 
preprocessing/archiv/df_odds.csv ADDED
@@ -0,0 +1,166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ fighter1,fighter2,odds_f1,odds_f2,bookmaker
2
+ Jesus Santos Aguilar,Tatsuro Taira,7.75,1.1,SuperBook
3
+ Jesus Santos Aguilar,Tatsuro Taira,7.5,1.1,Unibet
4
+ Jesus Santos Aguilar,Tatsuro Taira,7.5,1.1,Barstool Sportsbook
5
+ Jesus Santos Aguilar,Tatsuro Taira,9.0,1.08,LowVig.ag
6
+ Jesus Santos Aguilar,Tatsuro Taira,8.5,1.07,Bovada
7
+ Jesus Santos Aguilar,Tatsuro Taira,8.0,1.09,William Hill (US)
8
+ Jesus Santos Aguilar,Tatsuro Taira,7.5,1.1,SugarHouse
9
+ Jesus Santos Aguilar,Tatsuro Taira,7.5,1.1,BetRivers
10
+ Jesus Santos Aguilar,Tatsuro Taira,7.5,1.1,TwinSpires
11
+ Anshul Jubli,Jeka Saragih,1.83,1.97,Barstool Sportsbook
12
+ Anshul Jubli,Jeka Saragih,1.83,1.97,SugarHouse
13
+ Anshul Jubli,Jeka Saragih,1.83,2.0,William Hill (US)
14
+ Anshul Jubli,Jeka Saragih,1.9,1.92,LowVig.ag
15
+ Anshul Jubli,Jeka Saragih,1.83,1.97,BetRivers
16
+ Anshul Jubli,Jeka Saragih,1.83,2.0,SuperBook
17
+ Anshul Jubli,Jeka Saragih,1.83,1.97,Unibet
18
+ Anshul Jubli,Jeka Saragih,1.83,1.97,TwinSpires
19
+ Anshul Jubli,Jeka Saragih,1.87,1.95,DraftKings
20
+ Anshul Jubli,Jeka Saragih,1.87,1.95,Bovada
21
+ Denis Tiuliulin,Jun Yong Park,2.8,1.48,LowVig.ag
22
+ Denis Tiuliulin,Jun Yong Park,2.65,1.51,William Hill (US)
23
+ Denis Tiuliulin,Jun Yong Park,2.75,1.49,DraftKings
24
+ Denis Tiuliulin,Jun Yong Park,2.75,1.5,SuperBook
25
+ Denis Tiuliulin,Jun Yong Park,2.7,1.48,Bovada
26
+ Denis Tiuliulin,Jun Yong Park,2.63,1.49,BetRivers
27
+ Denis Tiuliulin,Jun Yong Park,2.63,1.49,SugarHouse
28
+ Denis Tiuliulin,Jun Yong Park,2.63,1.49,TwinSpires
29
+ Denis Tiuliulin,Jun Yong Park,2.63,1.49,Unibet
30
+ Denis Tiuliulin,Jun Yong Park,2.63,1.49,Barstool Sportsbook
31
+ Hyun Sung Park,Seung Guk Choi,1.51,2.55,Barstool Sportsbook
32
+ Hyun Sung Park,Seung Guk Choi,1.51,2.55,SugarHouse
33
+ Hyun Sung Park,Seung Guk Choi,1.5,2.7,William Hill (US)
34
+ Hyun Sung Park,Seung Guk Choi,1.51,2.55,TwinSpires
35
+ Hyun Sung Park,Seung Guk Choi,1.51,2.55,BetRivers
36
+ Hyun Sung Park,Seung Guk Choi,1.51,2.55,Unibet
37
+ Hyun Sung Park,Seung Guk Choi,1.5,2.55,Bovada
38
+ Hyun Sung Park,Seung Guk Choi,1.55,2.57,LowVig.ag
39
+ Hyun Sung Park,Seung Guk Choi,1.53,2.6,DraftKings
40
+ Jeongyoung Lee,Yi Zha,1.42,3.0,William Hill (US)
41
+ Jeongyoung Lee,Yi Zha,1.4,3.0,SugarHouse
42
+ Jeongyoung Lee,Yi Zha,1.4,3.0,TwinSpires
43
+ Jeongyoung Lee,Yi Zha,1.4,3.0,BetRivers
44
+ Jeongyoung Lee,Yi Zha,1.4,3.0,Barstool Sportsbook
45
+ Jeongyoung Lee,Yi Zha,1.4,3.0,Unibet
46
+ Jeongyoung Lee,Yi Zha,1.4,3.11,LowVig.ag
47
+ Ji Yeon Kim,Mandy Böhm,1.38,3.25,SuperBook
48
+ Ji Yeon Kim,Mandy Böhm,1.35,3.2,Unibet
49
+ Ji Yeon Kim,Mandy Böhm,1.35,3.2,Barstool Sportsbook
50
+ Ji Yeon Kim,Mandy Böhm,1.39,3.15,LowVig.ag
51
+ Ji Yeon Kim,Mandy Böhm,1.39,3.15,DraftKings
52
+ Ji Yeon Kim,Mandy Böhm,1.36,3.12,Bovada
53
+ Ji Yeon Kim,Mandy Böhm,1.38,3.1,William Hill (US)
54
+ Ji Yeon Kim,Mandy Böhm,1.35,3.2,SugarHouse
55
+ Ji Yeon Kim,Mandy Böhm,1.35,3.2,BetRivers
56
+ Ji Yeon Kim,Mandy Böhm,1.35,3.2,TwinSpires
57
+ Adam Fugitt,Yusaku Kinoshita,3.4,1.32,Bovada
58
+ Adam Fugitt,Yusaku Kinoshita,3.2,1.35,SugarHouse
59
+ Adam Fugitt,Yusaku Kinoshita,3.2,1.35,TwinSpires
60
+ Adam Fugitt,Yusaku Kinoshita,3.7,1.31,LowVig.ag
61
+ Adam Fugitt,Yusaku Kinoshita,3.2,1.35,Barstool Sportsbook
62
+ Adam Fugitt,Yusaku Kinoshita,3.2,1.35,BetRivers
63
+ Adam Fugitt,Yusaku Kinoshita,3.3,1.37,SuperBook
64
+ Adam Fugitt,Yusaku Kinoshita,3.2,1.35,Unibet
65
+ Adam Fugitt,Yusaku Kinoshita,3.5,1.33,DraftKings
66
+ Blagoy Ivanov,Marcin Tybura,2.3,1.67,SuperBook
67
+ Blagoy Ivanov,Marcin Tybura,2.26,1.69,LowVig.ag
68
+ Blagoy Ivanov,Marcin Tybura,2.25,1.67,Bovada
69
+ Blagoy Ivanov,Marcin Tybura,2.25,1.64,BetRivers
70
+ Blagoy Ivanov,Marcin Tybura,2.25,1.64,SugarHouse
71
+ Blagoy Ivanov,Marcin Tybura,2.25,1.64,TwinSpires
72
+ Blagoy Ivanov,Marcin Tybura,2.25,1.64,Unibet
73
+ Blagoy Ivanov,Marcin Tybura,2.25,1.64,Barstool Sportsbook
74
+ Da Un Jung,Devin Clark,1.42,3.0,SuperBook
75
+ Da Un Jung,Devin Clark,1.52,2.68,LowVig.ag
76
+ Da Un Jung,Devin Clark,1.47,2.85,DraftKings
77
+ Da Un Jung,Devin Clark,1.45,2.78,Bovada
78
+ Da Un Jung,Devin Clark,1.42,2.88,BetRivers
79
+ Da Un Jung,Devin Clark,1.42,2.88,SugarHouse
80
+ Da Un Jung,Devin Clark,1.42,2.88,TwinSpires
81
+ Da Un Jung,Devin Clark,1.42,2.88,Unibet
82
+ Da Un Jung,Devin Clark,1.42,2.88,Barstool Sportsbook
83
+ Derrick Lewis,Sergey Spivak,2.9,1.45,SuperBook
84
+ Derrick Lewis,Sergey Spivak,2.95,1.43,DraftKings
85
+ Derrick Lewis,Sergey Spivak,2.9,1.38,Bovada
86
+ Derrick Lewis,Sergey Spivak,2.85,1.43,BetRivers
87
+ Derrick Lewis,Sergey Spivak,2.85,1.43,SugarHouse
88
+ Derrick Lewis,Sergey Spivak,2.85,1.43,TwinSpires
89
+ Derrick Lewis,Sergey Spivak,2.85,1.43,Unibet
90
+ Derrick Lewis,Sergey Spivak,2.85,1.43,Barstool Sportsbook
91
+ Dooho Choi,Kyle Nelson,1.54,2.65,SuperBook
92
+ Dooho Choi,Kyle Nelson,1.55,2.57,LowVig.ag
93
+ Dooho Choi,Kyle Nelson,1.53,2.6,DraftKings
94
+ Dooho Choi,Kyle Nelson,1.53,2.55,Bovada
95
+ Dooho Choi,Kyle Nelson,1.55,2.48,BetRivers
96
+ Dooho Choi,Kyle Nelson,1.55,2.48,SugarHouse
97
+ Dooho Choi,Kyle Nelson,1.55,2.48,TwinSpires
98
+ Dooho Choi,Kyle Nelson,1.55,2.48,Unibet
99
+ Dooho Choi,Kyle Nelson,1.55,2.48,Barstool Sportsbook
100
+ Blake Bilder,Shane Young,2.0,1.83,DraftKings
101
+ Blake Bilder,Shane Young,1.97,1.81,MyBookie.ag
102
+ Blake Bilder,Shane Young,2.0,1.83,SuperBook
103
+ Blake Bilder,Shane Young,2.05,1.8,LowVig.ag
104
+ Blake Bilder,Shane Young,1.97,1.82,Barstool Sportsbook
105
+ Blake Bilder,Shane Young,1.97,1.82,TwinSpires
106
+ Blake Bilder,Shane Young,1.97,1.82,SugarHouse
107
+ Blake Bilder,Shane Young,1.97,1.82,BetRivers
108
+ Blake Bilder,Shane Young,1.97,1.82,Unibet
109
+ Justin Tafa,Parker Porter,1.69,2.25,LowVig.ag
110
+ Justin Tafa,Parker Porter,1.71,2.2,DraftKings
111
+ Justin Tafa,Parker Porter,1.66,2.19,MyBookie.ag
112
+ Justin Tafa,Parker Porter,1.69,2.25,SuperBook
113
+ Justin Tafa,Parker Porter,1.67,2.2,Barstool Sportsbook
114
+ Justin Tafa,Parker Porter,1.67,2.2,SugarHouse
115
+ Justin Tafa,Parker Porter,1.67,2.2,TwinSpires
116
+ Justin Tafa,Parker Porter,1.67,2.2,BetRivers
117
+ Justin Tafa,Parker Porter,1.67,2.2,Unibet
118
+ Jack Della Maddalena,Randy Brown,1.33,3.45,LowVig.ag
119
+ Jack Della Maddalena,Randy Brown,1.33,3.55,DraftKings
120
+ Jack Della Maddalena,Randy Brown,1.3,3.41,MyBookie.ag
121
+ Jack Della Maddalena,Randy Brown,1.32,3.6,SuperBook
122
+ Jack Della Maddalena,Randy Brown,1.29,3.65,Barstool Sportsbook
123
+ Jack Della Maddalena,Randy Brown,1.29,3.65,SugarHouse
124
+ Jack Della Maddalena,Randy Brown,1.29,3.65,TwinSpires
125
+ Jack Della Maddalena,Randy Brown,1.29,3.65,BetRivers
126
+ Jack Della Maddalena,Randy Brown,1.29,3.65,Unibet
127
+ Josh Emmett,Yair Rodriguez,2.35,1.65,LowVig.ag
128
+ Josh Emmett,Yair Rodriguez,2.35,1.65,DraftKings
129
+ Josh Emmett,Yair Rodriguez,2.26,1.62,MyBookie.ag
130
+ Josh Emmett,Yair Rodriguez,2.35,1.65,SuperBook
131
+ Josh Emmett,Yair Rodriguez,2.32,1.61,TwinSpires
132
+ Josh Emmett,Yair Rodriguez,2.32,1.61,Barstool Sportsbook
133
+ Josh Emmett,Yair Rodriguez,2.32,1.61,BetRivers
134
+ Josh Emmett,Yair Rodriguez,2.32,1.61,Unibet
135
+ Josh Emmett,Yair Rodriguez,2.32,1.61,SugarHouse
136
+ Alex Volkanovski,Islam Makhachev,3.95,1.28,LowVig.ag
137
+ Alex Volkanovski,Islam Makhachev,3.75,1.28,Barstool Sportsbook
138
+ Alex Volkanovski,Islam Makhachev,3.75,1.28,BetRivers
139
+ Alex Volkanovski,Islam Makhachev,3.75,1.28,Unibet
140
+ Alex Volkanovski,Islam Makhachev,3.75,1.28,TwinSpires
141
+ Alex Volkanovski,Islam Makhachev,3.75,1.28,SugarHouse
142
+ Alex Volkanovski,Islam Makhachev,4.0,1.27,DraftKings
143
+ Alex Volkanovski,Islam Makhachev,3.62,1.28,MyBookie.ag
144
+ Alex Volkanovski,Islam Makhachev,3.9,1.29,SuperBook
145
+ Alexa Grasso,Valentina Shevchenko,5.1,1.17,Barstool Sportsbook
146
+ Alexa Grasso,Valentina Shevchenko,5.1,1.17,TwinSpires
147
+ Alexa Grasso,Valentina Shevchenko,5.25,1.17,LowVig.ag
148
+ Alexa Grasso,Valentina Shevchenko,5.1,1.17,SugarHouse
149
+ Alexa Grasso,Valentina Shevchenko,5.1,1.17,BetRivers
150
+ Ciryl Gane,Jon Jones,2.15,1.74,LowVig.ag
151
+ Ciryl Gane,Jon Jones,2.05,1.8,DraftKings
152
+ Ciryl Gane,Jon Jones,2.1,1.73,Barstool Sportsbook
153
+ Ciryl Gane,Jon Jones,2.1,1.73,BetRivers
154
+ Ciryl Gane,Jon Jones,2.1,1.73,SugarHouse
155
+ Ciryl Gane,Jon Jones,2.1,1.73,TwinSpires
156
+ Kamaru Usman,Leon Edwards,1.41,2.85,Barstool Sportsbook
157
+ Kamaru Usman,Leon Edwards,1.41,2.85,BetRivers
158
+ Kamaru Usman,Leon Edwards,1.41,2.85,SugarHouse
159
+ Kamaru Usman,Leon Edwards,1.41,2.85,TwinSpires
160
+ Kamaru Usman,Leon Edwards,1.41,3.05,DraftKings
161
+ Alex Pereira,Israel Adesanya,2.14,1.71,Barstool Sportsbook
162
+ Alex Pereira,Israel Adesanya,2.14,1.71,BetRivers
163
+ Alex Pereira,Israel Adesanya,2.14,1.71,TwinSpires
164
+ Alex Pereira,Israel Adesanya,2.14,1.71,SugarHouse
165
+ Alex Pereira,Israel Adesanya,2.35,1.65,DraftKings
166
+ Alex Pereira,Israel Adesanya,2.35,1.65,LowVig.ag
preprocessing/archiv/df_skills.csv ADDED
The diff for this file is too large to render. See raw diff
 
preprocessing/archiv/fight_result.csv ADDED
The diff for this file is too large to render. See raw diff
 
preprocessing/archiv/fight_with_stats.csv ADDED
The diff for this file is too large to render. See raw diff
 
preprocessing/archiv/fight_with_stats_precomp.csv ADDED
The diff for this file is too large to render. See raw diff
 
preprocessing/archiv/fighter_details.csv ADDED
The diff for this file is too large to render. See raw diff
 
preprocessing/archiv/fighter_total_stats.csv ADDED
The diff for this file is too large to render. See raw diff
 
preprocessing/archov/df_model.csv ADDED
The diff for this file is too large to render. See raw diff
 
preprocessing/archov/df_skills.csv ADDED
The diff for this file is too large to render. See raw diff
 
preprocessing/archov/fight_result.csv ADDED
The diff for this file is too large to render. See raw diff
 
preprocessing/archov/fight_with_stats.csv ADDED
The diff for this file is too large to render. See raw diff
 
preprocessing/archov/fight_with_stats_precomp1.csv ADDED
The diff for this file is too large to render. See raw diff