|
|
--- |
|
|
library_name: sklearn |
|
|
tags: |
|
|
- xgboost |
|
|
- qsar |
|
|
- regression |
|
|
- cheminformatics |
|
|
- morgan-fingerprint |
|
|
--- |
|
|
|
|
|
# XGBoost QSAR Regresyon Modeli (Morgan Fingerprints) |
|
|
|
|
|
Bu model, moleküler SMILES dizilerini girdi olarak alıp bir 'value' (örn. pIC50, aktivite) |
|
|
değerini tahmin etmek için eğitilmiş bir XGBoost Regresörüdür. |
|
|
|
|
|
## 📈 Model Performansı (Test Seti) |
|
|
|
|
|
Model, temizlenmiş veri setinin %20'si üzerinde test edilmiştir: |
|
|
|
|
|
* **R-squared (R²):** 0.8795 |
|
|
* **RMSE:** 38.6370 |
|
|
* **MSE:** 1492.8184 |
|
|
|
|
|
## ⚙️ Model Mimarisi |
|
|
|
|
|
* **Model Tipi:** XGBRegressor |
|
|
* **Öznitelikler:** Morgan Fingerprints (radius=3, n_bits=2048) |
|
|
* **Eğitim Verisi:** 8364 geçerli molekül |
|
|
* **Hiperparametreler:** |
|
|
* `n_estimators`: 527 |
|
|
* `max_depth`: 11 |
|
|
* `learning_rate`: 0.0823 |
|
|
* `subsample`: 0.9728 |
|
|
* `colsample_bytree`: 0.7048 |
|
|
|
|
|
## 🚀 Modeli Kullanma (Python) |
|
|
|
|
|
Modeli yüklemek ve tahmin yapmak için `huggingface_hub`, `joblib` ve `rdkit` gerekir. |
|
|
|
|
|
```python |
|
|
import joblib |
|
|
import numpy as np |
|
|
from huggingface_hub import hf_hub_download |
|
|
from rdkit import Chem |
|
|
from rdkit.Chem import AllChem |
|
|
|
|
|
# --- Gerekli fonksiyonlar --- |
|
|
def get_morgan_fp(smiles, radius=3, n_bits=2048): |
|
|
mol = Chem.MolFromSmiles(smiles) |
|
|
if mol is None: |
|
|
return np.zeros((n_bits,), dtype=int) |
|
|
fp = AllChem.GetMorganFingerprintAsBitVect(mol, radius, nBits=n_bits) |
|
|
return np.array(fp) |
|
|
|
|
|
# --- Model ve ön işleyiciyi yükle --- |
|
|
REPO_ID = "BURAYA-REPO-ID-GELECEK" # Örn: "kullanici-adi/model-adi" |
|
|
MODEL_FILE = "xgb_morgan_regressor.joblib" |
|
|
|
|
|
model_path = hf_hub_download(repo_id=REPO_ID, filename=MODEL_FILE) |
|
|
model = joblib.load(model_path) |
|
|
|
|
|
print("Model başarıyla yüklendi.") |
|
|
|
|
|
# --- Tahmin yapma --- |
|
|
smiles_list = ["CCO", "c1ccccc1O"] |
|
|
fingerprints = np.array([get_morgan_fp(s) for s in smiles_list]) |
|
|
|
|
|
predictions = model.predict(fingerprints) |
|
|
print(f"Tahminler: {predictions}") |