Spaces:
Build error
Build error
| # app.py | |
| import gradio as gr | |
| import pandas as pd | |
| from xgboost import XGBClassifier | |
| import pickle | |
| # Load model | |
| model = pickle.load(open('xgboost_model.pkl', 'rb')) | |
| def predict_defects(loc, complexity, operators, operands, comments): | |
| """ | |
| Simplified prediction using only key metrics | |
| """ | |
| # Create a complete input data with reasonable defaults | |
| input_data = pd.DataFrame([[ | |
| loc, # loc | |
| complexity, # v(g) | |
| complexity, # ev(g) | |
| complexity, # iv(g) | |
| operators + operands, # n | |
| operators * operands, # v | |
| 0.5, # l (default) | |
| 2.0, # d (default) | |
| 100, # i (default) | |
| 200, # e (default) | |
| 0.2, # b (default) | |
| 30, # t (default) | |
| loc, # lOCode | |
| comments, # lOComment | |
| loc * 0.1, # lOBlank | |
| comments, # locCodeAndComment | |
| operators, # uniq_Op | |
| operands, # uniq_Opnd | |
| operators * 2, # total_Op | |
| operands * 2, # total_Opnd | |
| complexity # branchCount | |
| ]], columns=['loc', 'v(g)', 'ev(g)', 'iv(g)', 'n', 'v', | |
| 'l', 'd', 'i', 'e', 'b', 't', 'lOCode', | |
| 'lOComment', 'lOBlank', 'locCodeAndComment', | |
| 'uniq_Op', 'uniq_Opnd', 'total_Op', | |
| 'total_Opnd', 'branchCount']) | |
| # Make prediction | |
| prediction = model.predict_proba(input_data)[0][1] | |
| return f"Defect Probability: {prediction:.2%}" | |
| # Gradio interface | |
| iface = gr.Interface( | |
| fn=predict_defects, | |
| inputs=[ | |
| gr.Slider(minimum=1, maximum=1000, value=100, | |
| label="Lines of Code", info="Total number of code lines"), | |
| gr.Slider(minimum=1, maximum=50, value=5, | |
| label="Code Complexity", info="How complex is your code"), | |
| gr.Slider(minimum=1, maximum=100, value=20, | |
| label="Unique Operators", info="Number of different operators (+, -, *, etc.)"), | |
| gr.Slider(minimum=1, maximum=100, value=20, | |
| label="Unique Operands", info="Number of different variables and constants"), | |
| gr.Slider(minimum=0, maximum=500, value=50, | |
| label="Comment Lines", info="Number of comment lines"), | |
| ], | |
| outputs="text", | |
| title="Software Defect Predictor", | |
| description="Predict the probability of software defects based on code metrics", | |
| theme="soft" | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch() |