Spaces:
Runtime error
Runtime error
File size: 6,028 Bytes
7875fd0 c21d83c 7875fd0 c21d83c 7875fd0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
import gradio as gr
import pandas as pd
import pickle
import shap
import xgboost
import matplotlib
import matplotlib.pyplot as plt
import io
matplotlib.use('Agg')
pc = ["Enterprise System", "Management Information System", "Safety Critical System", "Transaction Processing System" ]
rc = ['Constraints','Functional','Interfaces','Performance','Reliability&Availability','Safety','Security','Standards','Supportability','Usability']
rtc = ['Budget','Business','Cost','Design','Functional Validity','Organizational Environment','Overdrawn Budget','People','Performance','Personal','Planning&Control','Process','Project complexity','Quality','Requirement','Resource availability','Schedule','Software','Team','TimeDimension','Unrealistic Requirements','User']
mor = ['Extreme','High','Low','Medium','Negligible','Very High','Very Low']
imp = ["Low", "Catastrophic", "High", "Insignificant", "High", "Moderate"]
dor = ['Cost','Estimations','Organizational Environment','Organizational Requirements','Planning and Control','Project Complexity','Project complexity','Requirements','Schedule','Software Requirement','Team','User','Planning and Control']
def ml_function(probability, affecting_no_of_modules,
fixing_duration, project_category, requirement_category, risk_target_category,
magnitude_of_risk, impact, dimension_of_risk, fix_cost_percent_of_project):
data = list()
data.append(probability)
data.append(affecting_no_of_modules)
data.append(fixing_duration)
data.extend([bool(c in project_category) for c in pc])
data.extend([bool(c in requirement_category) for c in rc])
data.extend([bool(c in risk_target_category) for c in rtc])
data.extend([bool(c in magnitude_of_risk) for c in mor])
data.extend([bool(c in impact) for c in imp])
data.extend([bool(c in dimension_of_risk) for c in dor])
fix_cost_percent_of_project_one_hot = [False] * 10
fix_cost_percent_of_project_one_hot[fix_cost_percent_of_project] = True
data.extend(fix_cost_percent_of_project_one_hot)
df = pd.DataFrame([data])
df.columns = ['Probability', 'Afftecting No of Modules', 'Fixing Duration (Days)',
'project Category_Enterprise System',
'project Category_Management Information System',
'project Category_Safety Critical System',
'project Category_Transaction Processing System',
'Requirement Category_Constraints', 'Requirement Category_Functional',
'Requirement Category_Interfaces', 'Requirement Category_Performance',
'Requirement Category_Reliability & Availability',
'Requirement Category_Safety', 'Requirement Category_Security',
'Requirement Category_Standards', 'Requirement Category_Supportability',
'Requirement Category_Usability', 'Risk Target Category_Budget',
'Risk Target Category_Business', 'Risk Target Category_Cost',
'Risk Target Category_Design',
'Risk Target Category_FunctionalValidity',
'Risk Target Category_Organizational Environment',
'Risk Target Category_Overdrawn Budget', 'Risk Target Category_People',
'Risk Target Category_Performance', 'Risk Target Category_Personal',
'Risk Target Category_Planning & Control',
'Risk Target Category_Process',
'Risk Target Category_Project complexity',
'Risk Target Category_Quality', 'Risk Target Category_Requirement',
'Risk Target Category_Resource availability',
'Risk Target Category_Schedule', 'Risk Target Category_Software',
'Risk Target Category_Team', 'Risk Target Category_Time Dimension',
'Risk Target Category_Unrealistic Requirements',
'Risk Target Category_User', 'Magnitude of Risk_Extreme',
'Magnitude of Risk_High', 'Magnitude of Risk_Low',
'Magnitude of Risk_Medium', 'Magnitude of Risk_Negligible',
'Magnitude of Risk_Very High', 'Magnitude of Risk_Very Low',
'Impact_Low', 'Impact_catastrophic', 'Impact_high',
'Impact_insignificant', 'Impact_moderate', 'Dimension of Risk_Cost',
'Dimension of Risk_Estimations',
'Dimension of Risk_Organizational Environment',
'Dimension of Risk_Organizational Requirements',
'Dimension of Risk_Planning and Control',
'Dimension of Risk_Project Complexity',
'Dimension of Risk_Project complexity',
'Dimension of Risk_Requirements', 'Dimension of Risk_Schedule',
'Dimension of Risk_Software Requirement', 'Dimension of Risk_Team',
'Dimension of Risk_User', 'Dimension of Risk_planning and control',
'Fix Cost (\% of Project)_0', 'Fix Cost (\% of Project)_1',
'Fix Cost (\% of Project)_10', 'Fix Cost (\% of Project)_11',
'Fix Cost (\% of Project)_2', 'Fix Cost (\% of Project)_21',
'Fix Cost (\% of Project)_3', 'Fix Cost (\% of Project)_4',
'Fix Cost (\% of Project)_5', 'Fix Cost (\% of Project)_6',
'Fix Cost (\% of Project)_?']
df = df.reset_index(drop=True)
for col in df.columns:
if df[col].dtype == 'object':
df[col] = pd.to_numeric(df[col])
xgb_model_loaded = pickle.load(open('xgboost_project_risk_prediction.pickle', "rb"))
pred = xgb_model_loaded.predict(df[:1])
return str(pred[0])
# Define the Gradio interface with appropriate input components
iface = gr.Interface(
fn=ml_function,
inputs=[
gr.Number(label="Probability"),
gr.Number(label="Affecting No of Modules"),
gr.Number(label="Fixing Duration (Days)"),
gr.Radio(choices=pc, label="Project Category"),
gr.Radio(choices=rc, label="Requirement Category"),
gr.Radio(choices=rtc, label="Risk Target Category"),
gr.Radio(choices=mor, label="Magnitude of Risk"),
gr.Radio(choices=imp, label="Impact"),
gr.Radio(choices=dor, label="Dimension of Risk"),
gr.Slider(minimum=0, maximum=10,step=1, label="Fix Cost (% of Project)")
],
outputs=[
gr.Label(label="Risk Level")
]
)
# Run the Gradio app
iface.launch()
|