|
from flask import Flask, render_template, request, jsonify |
|
import numpy as np |
|
from sklearn.linear_model import LogisticRegression |
|
import json |
|
import os |
|
|
|
app = Flask(__name__) |
|
|
|
|
|
|
|
|
|
def train_dummy_model(): |
|
X = np.array([ |
|
[0.5, 0.0, 0.4, 0.5, 30, 0], |
|
[0.5, 0.5, 0.5, 0.5, 35, 2], |
|
[0.6, 0.2, 0.5, 0.6, 32, 1], |
|
[0.5, 0.4, 0.5, 0.4, 34, 0], |
|
]) |
|
y = np.array([0, 1, 0, 1]) |
|
model = LogisticRegression() |
|
model.fit(X, y) |
|
return model |
|
|
|
model = train_dummy_model() |
|
|
|
|
|
def calculate_trajectory(pitching_x, pitching_y, impact_x, impact_y, speed, spin): |
|
|
|
actual_path = [ |
|
{"x": 0, "y": 0}, |
|
{"x": pitching_x, "y": pitching_y}, |
|
{"x": impact_x, "y": impact_y} |
|
] |
|
|
|
projection = [ |
|
{"x": impact_x, "y": impact_y}, |
|
{"x": impact_x + spin * 0.1, "y": 1.0} |
|
] |
|
return actual_path, projection |
|
|
|
@app.route('/') |
|
def index(): |
|
return render_template('index.html') |
|
|
|
@app.route('/analyze', methods=['POST']) |
|
def analyze(): |
|
|
|
data = request.form |
|
pitching_x = float(data.get('pitching_x', 0.5)) |
|
pitching_y = float(data.get('pitching_y', 0.0)) |
|
impact_x = float(data.get('impact_x', 0.5)) |
|
impact_y = float(data.get('impact_y', 0.5)) |
|
speed = float(data.get('speed', 30)) |
|
spin = float(data.get('spin', 0)) |
|
|
|
|
|
actual_path, projected_path = calculate_trajectory(pitching_x, pitching_y, impact_x, impact_y, speed, spin) |
|
|
|
|
|
features = np.array([[pitching_x, pitching_y, impact_x, impact_y, speed, spin]]) |
|
prediction = model.predict(features)[0] |
|
confidence = model.predict_proba(features)[0][prediction] |
|
decision = "Out" if prediction == 1 else "Not Out" |
|
|
|
|
|
return jsonify({ |
|
'actual_path': actual_path, |
|
'projected_path': projected_path, |
|
'decision': decision, |
|
'confidence': round(confidence, 2), |
|
'pitching': {'x': pitching_x, 'y': pitching_y}, |
|
'impact': {'x': impact_x, 'y': impact_y} |
|
}) |
|
|
|
if __name__ == '__main__': |
|
app.run(debug=True, port=5001) |