import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.datasets import load_diabetes
import joblib

data = load_diabetes()
X = pd.DataFrame(data.data, columns=data.feature_names)
y = pd.Series(data.target)

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

model = LinearRegression()
model.fit(X_train, y_train)

y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse}")

joblib.dump(model, 'diabetes_model.joblib')

loaded_model = joblib.load('diabetes_model.joblib')
loaded_mse = mean_squared_error(y_test, loaded_model.predict(X_test))
print(f"Loaded Model MSE: {loaded_mse}")

%%writefile app.py
from flask import Flask, request, jsonify
import joblib
import numpy as np

app = Flask(__name__)
model = joblib.load('diabetes_model.joblib')

@app.route('/', methods=['GET'])
def home():
    return jsonify({'status': 'API is running'})

@app.route('/predict', methods=['POST'])
def predict():
    data = request.get_json(force=True)
    features = np.array(data['features']).reshape(1, -1)
    prediction = model.predict(features)
    return jsonify({'prediction': float(prediction[0])})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

    from flask import Flask, request, jsonify
import joblib
import numpy as np

app = Flask(__name__)
model = joblib.load('diabetes_model.joblib')

@app.route('/', methods=['GET'])
def home():
    return jsonify({'status': 'API is running'})

@app.route('/predict', methods=['POST'])
def predict():
    data = request.get_json(force=True)
    features = np.array(data['features']).reshape(1, -1)
    prediction = model.predict(features)
    return jsonify({'prediction': float(prediction[0])})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)


import threading, time, requests

def run_app():
    from app import app as flask_app
    flask_app.run(host='0.0.0.0', port=5000, use_reloader=False)

threading.Thread(target=run_app, daemon=True).start()
time.sleep(3)

sample_features = X_test.iloc[0].tolist()
response = requests.post('http://127.0.0.1:5000/predict', json={'features': sample_features})
print(response.json())