import numpy as np
import ipywidgets as widgets
from IPython.display import display, clear_output
import warnings
warnings.filterwarnings("ignore")
venue = widgets.Dropdown(options=list(label_encoders['venue'].classes_), description='Select Venue:')
venue.style = {'description_width': 'initial'}
batting_team = widgets.Dropdown(options=list(label_encoders['bat_team'].classes_), description='Select Batting Team:')
batting_team.style = {'description_width': 'initial'}
bowling_team = widgets.Dropdown(options=list(label_encoders['bowl_team'].classes_), description='Select Bowling Team:')
bowling_team.style = {'description_width': 'initial'}
striker = widgets.Dropdown(options=list(label_encoders['batsman'].classes_), description='Select Striker:')
striker.style = {'description_width': 'initial'}
bowler = widgets.Dropdown(options=list(label_encoders['bowler'].classes_), description='Select Bowler:')
bowler.style = {'description_width': 'initial'}
runs = widgets.IntText(value=0, description='Runs:', style={'description_width': 'initial'})
wickets = widgets.IntText(value=0, description='Wickets:', style={'description_width': 'initial'})
overs = widgets.FloatText(value=0.0, description='Overs:', style={'description_width': 'initial'})
striker_ind = widgets.IntText(value=0, description='Striker:', style={'description_width': 'initial'}) # Assuming 0 or 1
predict_button = widgets.Button(description="Predict Score")
output = widgets.Output()
def predict_score(b):
with output:
clear_output() # Clear previous output
encoded_venue = label_encoders['venue'].transform([venue.value])[0]
encoded_batting_team = label_encoders['bat_team'].transform([batting_team.value])[0]
encoded_bowling_team = label_encoders['bowl_team'].transform([bowling_team.value])[0]
encoded_striker = label_encoders['batsman'].transform([striker.value])[0]
encoded_bowler = label_encoders['bowler'].transform([bowler.value])[0]
input_features = [
encoded_batting_team,
encoded_bowling_team,
encoded_venue,
runs.value,
wickets.value,
overs.value,
striker_ind.value,
encoded_striker,
encoded_bowler
]
input_array = np.array(input_features).reshape(1, -1)
input_array = scaler.transform(input_array)
predicted_score = model.predict(input_array)
print(f"Predicted Total Runs: {int(predicted_score[0])}")
predict_button.on_click(predict_score)
display(venue, batting_team, bowling_team, striker, bowler,
runs, wickets, overs,
striker_ind,
predict_button, output)