wasdcutecat commited on
Commit
bf5a6c9
·
verified ·
1 Parent(s): f22c16e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -5
app.py CHANGED
@@ -3,9 +3,10 @@ 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"]
@@ -13,33 +14,38 @@ 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=[
@@ -53,4 +59,5 @@ interface = gr.Interface(
53
  description="CVE tanımlarına göre tahmini risk skoru ve kategori"
54
  )
55
 
 
56
  interface.launch()
 
3
  import numpy as np
4
 
5
  # Modeli yükle
6
+ with open("xgboost_optimized_v2.pkl", "rb") as f: # model/ klasörü kaldırıldı
7
  model_pkg = pickle.load(f)
8
 
9
+ # Modeller ve fonksiyonlar
10
  xgb_improved = model_pkg["base_models"]["xgboost_improved"][0]
11
  smart_align = model_pkg["enhancement_functions"]["smart_feature_alignment"]
12
  ensemble_fn = model_pkg["enhancement_functions"]["ensemble_predict"]
 
14
  dynamic_adjust_fn = model_pkg["enhancement_functions"]["dynamic_risk_adjustment"]
15
  confidence_fn = model_pkg["enhancement_functions"]["calculate_confidence"]
16
 
17
+ # Ön işleme bileşenleri
18
  preprocessors = model_pkg["preprocessors"]
19
  scaler = preprocessors["scaler"]
20
  encoders = preprocessors["encoders"]
21
  bert_extractor = preprocessors["bert_extractor"]
22
  label_encoder = preprocessors["label_encoder"]
23
+ feature_names = scaler.mean_.shape[0] # Özellik sayısı
24
 
25
+ # Tahmin fonksiyonu
26
  def predict(cve_id, cwe_id, description, cvss_score):
27
+ # Dummy girişler (GPU olmadığı için BERT çıkarımı yapılmıyor)
28
  numeric = np.zeros((1, feature_names))
29
+ bert_feats = np.zeros((1, 768)) # Dummy BERT vektörü
30
  x_input = np.hstack([numeric, bert_feats])
31
 
32
+ # Model tahminleri
33
  xgb_pred = xgb_improved.predict(x_input)[0]
34
  ensemble_pred = ensemble_fn(cvss_score, xgb_pred)
35
  final_pred = unknown_boost_fn(ensemble_pred, unknown_features=2, cvss_score=cvss_score)
36
  optimized = dynamic_adjust_fn(final_pred, cvss_score, cwe_id, len(description))
37
  confidence = confidence_fn(2, cvss_score)
38
 
39
+ # Kategori sınıflandırması
40
  category = "Düşük" if optimized <= 3 else "Orta" if optimized <= 7 else "Yüksek"
41
 
42
  return {
43
  "Tahmini Risk Skoru": round(optimized, 2),
44
  "Kategori": category,
45
+ "Model Güveni": f"%{round(confidence * 100, 1)}"
46
  }
47
 
48
+ # Gradio arayüzü
49
  interface = gr.Interface(
50
  fn=predict,
51
  inputs=[
 
59
  description="CVE tanımlarına göre tahmini risk skoru ve kategori"
60
  )
61
 
62
+ # Uygulamayı başlat
63
  interface.launch()