import gradio as gr import joblib import numpy as np # Load model and scaler model = joblib.load("stock_model.pkl") scaler = joblib.load("scaler.pkl") label_encoder = joblib.load("label_encoder.pkl") def predict_rating(ticker, pe, de, roe, mcap, dividend): try: # Prepare input for model features = np.array([[float(pe), float(de), float(roe), float(mcap), float(dividend)]]) scaled = scaler.transform(features) prediction = model.predict(scaled) rating = label_encoder.inverse_transform(prediction)[0] return f"📈 Stock **{ticker.upper()}** is recommended to: **{rating}**" except Exception as e: return f"❌ Error: {str(e)}" # Define the Gradio interface iface = gr.Interface( fn=predict_rating, inputs=[ gr.Textbox(label="Stock Ticker (e.g., INFY)"), gr.Number(label="PE Ratio"), gr.Number(label="DE Ratio"), gr.Number(label="ROE (%)"), gr.Number(label="Market Cap (₹ Cr)"), gr.Number(label="Dividend Yield (%)") ], outputs="markdown", title="📊 Stock Recommendation - Morningstar Style", description="Enter stock parameters to get a Buy/Hold/Sell recommendation." ) iface.launch()