Spaces:
Runtime error
Runtime error
File size: 2,345 Bytes
8ba92f6 692269c 8ba92f6 692269c bf5a6c9 692269c bf5a6c9 692269c bf5a6c9 692269c bf5a6c9 692269c bf5a6c9 692269c bf5a6c9 692269c bf5a6c9 692269c bf5a6c9 692269c bf5a6c9 692269c 8ba92f6 692269c 8ba92f6 bf5a6c9 8ba92f6 bf5a6c9 692269c 8ba92f6 692269c 8ba92f6 692269c 8ba92f6 bf5a6c9 692269c |
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 |
import gradio as gr
import pickle
import numpy as np
# Modeli yükle
with open("xgboost_optimized_v2.pkl", "rb") as f: # model/ klasörü kaldırıldı
model_pkg = pickle.load(f)
# Modeller ve fonksiyonlar
xgb_improved = model_pkg["base_models"]["xgboost_improved"][0]
smart_align = model_pkg["enhancement_functions"]["smart_feature_alignment"]
ensemble_fn = model_pkg["enhancement_functions"]["ensemble_predict"]
unknown_boost_fn = model_pkg["enhancement_functions"]["unknown_category_boost"]
dynamic_adjust_fn = model_pkg["enhancement_functions"]["dynamic_risk_adjustment"]
confidence_fn = model_pkg["enhancement_functions"]["calculate_confidence"]
# Ön işleme bileşenleri
preprocessors = model_pkg["preprocessors"]
scaler = preprocessors["scaler"]
encoders = preprocessors["encoders"]
bert_extractor = preprocessors["bert_extractor"]
label_encoder = preprocessors["label_encoder"]
feature_names = scaler.mean_.shape[0] # Özellik sayısı
# Tahmin fonksiyonu
def predict(cve_id, cwe_id, description, cvss_score):
# Dummy girişler (GPU olmadığı için BERT çıkarımı yapılmıyor)
numeric = np.zeros((1, feature_names))
bert_feats = np.zeros((1, 768)) # Dummy BERT vektörü
x_input = np.hstack([numeric, bert_feats])
# Model tahminleri
xgb_pred = xgb_improved.predict(x_input)[0]
ensemble_pred = ensemble_fn(cvss_score, xgb_pred)
final_pred = unknown_boost_fn(ensemble_pred, unknown_features=2, cvss_score=cvss_score)
optimized = dynamic_adjust_fn(final_pred, cvss_score, cwe_id, len(description))
confidence = confidence_fn(2, cvss_score)
# Kategori sınıflandırması
category = "Düşük" if optimized <= 3 else "Orta" if optimized <= 7 else "Yüksek"
return {
"Tahmini Risk Skoru": round(optimized, 2),
"Kategori": category,
"Model Güveni": f"%{round(confidence * 100, 1)}"
}
# Gradio arayüzü
interface = gr.Interface(
fn=predict,
inputs=[
gr.Text(label="CVE ID"),
gr.Text(label="CWE ID"),
gr.Textbox(label="Açıklama"),
gr.Slider(minimum=0.0, maximum=10.0, step=0.1, label="CVSS Skoru")
],
outputs="json",
title="Risk Skoru Tahmin Modeli (XGBoost Optimized)",
description="CVE tanımlarına göre tahmini risk skoru ve kategori"
)
# Uygulamayı başlat
interface.launch() |