wasdcutecat commited on
Commit
692269c
·
verified ·
1 Parent(s): 79ecf9c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -27
app.py CHANGED
@@ -1,40 +1,56 @@
1
  import gradio as gr
2
- import pandas as pd
3
  import numpy as np
4
 
5
- # Gerekli fonksiyonlar ve modeller buraya import edilmeli
6
-
7
- def predict_risk(cvss_score, cwe_id, description):
8
- desc_len = len(description)
9
- # Simülasyon (yerine gerçek model konmalı)
10
- previous_pred = 4.5
11
-
12
- optimized = dynamic_risk_adjustment(previous_pred, cvss_score, cwe_id, desc_len)
13
- confidence = calculate_confidence(0, cvss_score)
14
-
15
- if optimized <= 3.0:
16
- category = "Düşük"
17
- elif optimized <= 7.0:
18
- category = "Orta"
19
- else:
20
- category = "Yüksek"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
 
22
  return {
23
- "Risk Skoru": optimized,
24
  "Kategori": category,
25
- "Güven": f"{confidence:.0%}"
26
  }
27
 
28
- iface = gr.Interface(
29
- fn=predict_risk,
30
  inputs=[
31
- gr.Number(label="CVSS Skoru"),
32
- gr.Text(label="CWE ID (örnek: CWE-89)"),
33
- gr.Textbox(label="CVE Açıklaması", lines=5),
 
34
  ],
35
  outputs="json",
36
- title="Siber Risk Skoru Tahmini",
37
- description="CVE/CWE verisinden risk tahmini yapan basit demo"
38
  )
39
 
40
- iface.launch()
 
1
  import gradio as gr
2
+ import pickle
3
  import numpy as np
4
 
5
+ # Modeli yükle
6
+ with open("model/xgboost_optimized_v2.pkl", "rb") as f:
7
+ model_pkg = pickle.load(f)
8
+
9
+ xgb_improved = model_pkg["base_models"]["xgboost_improved"][0]
10
+ smart_align = model_pkg["enhancement_functions"]["smart_feature_alignment"]
11
+ ensemble_fn = model_pkg["enhancement_functions"]["ensemble_predict"]
12
+ unknown_boost_fn = model_pkg["enhancement_functions"]["unknown_category_boost"]
13
+ dynamic_adjust_fn = model_pkg["enhancement_functions"]["dynamic_risk_adjustment"]
14
+ confidence_fn = model_pkg["enhancement_functions"]["calculate_confidence"]
15
+
16
+ preprocessors = model_pkg["preprocessors"]
17
+ scaler = preprocessors["scaler"]
18
+ encoders = preprocessors["encoders"]
19
+ bert_extractor = preprocessors["bert_extractor"]
20
+ label_encoder = preprocessors["label_encoder"]
21
+ feature_names = preprocessors["scaler"].mean_.shape[0]
22
+
23
+ def predict(cve_id, cwe_id, description, cvss_score):
24
+ # Dummy features for now – Hugging Face Spaces does not allow GPU by default
25
+ numeric = np.zeros((1, feature_names))
26
+ bert_feats = np.zeros((1, 768)) # Dummy
27
+ x_input = np.hstack([numeric, bert_feats])
28
+
29
+ xgb_pred = xgb_improved.predict(x_input)[0]
30
+ ensemble_pred = ensemble_fn(cvss_score, xgb_pred)
31
+ final_pred = unknown_boost_fn(ensemble_pred, unknown_features=2, cvss_score=cvss_score)
32
+ optimized = dynamic_adjust_fn(final_pred, cvss_score, cwe_id, len(description))
33
+ confidence = confidence_fn(2, cvss_score)
34
+
35
+ category = "Düşük" if optimized <= 3 else "Orta" if optimized <= 7 else "Yüksek"
36
 
37
  return {
38
+ "Tahmini Risk Skoru": round(optimized, 2),
39
  "Kategori": category,
40
+ "Model Güveni": f"%{round(confidence*100, 1)}"
41
  }
42
 
43
+ interface = gr.Interface(
44
+ fn=predict,
45
  inputs=[
46
+ gr.Text(label="CVE ID"),
47
+ gr.Text(label="CWE ID"),
48
+ gr.Textbox(label="Açıklama"),
49
+ gr.Slider(minimum=0.0, maximum=10.0, step=0.1, label="CVSS Skoru")
50
  ],
51
  outputs="json",
52
+ title="Risk Skoru Tahmin Modeli (XGBoost Optimized)",
53
+ description="CVE tanımlarına göre tahmini risk skoru ve kategori"
54
  )
55
 
56
+ interface.launch()