BMW Model Predictor
This model predicts the BMW car model using XGBoost based on price, mileage, fuel type, engine power, and car type.
license: mit language: - en tags: - xgboost - tabular-classification - bmw - car-model-prediction - automotive datasets: - custom inference: false model-index: - name: BMW Model Predictor results: []
๐ BMW Model Predictor
This machine learning model predicts the BMW car model using XGBoost based on the following features:
engine_power(horsepower)price(EUR)mileage(km)fueltypecar_type(e.g., sedan, SUV)
๐ง Training Information
- Model: XGBoost Classifier
- Training set: Custom dataset from
bmw_pricing_challenge.csv - Target variable:
model_key(encoded) - Preprocessing: Label Encoding for categorical features (
fuel,car_type,model_key) - Saved with:
joblib
๐ Files
-Load encoders from .npy fuel_encoder = LabelEncoder(); fuel_encoder.classes_ = np.load("fuel_classes.npy", allow_pickle=True) car_type_encoder = LabelEncoder(); car_type_encoder.classes_ = np.load("car_type_classes.npy", allow_pickle=True) target_encoder = LabelEncoder(); target_encoder.classes_ = np.load("target_classes.npy", allow_pickle=True)
๐ BMW Model Predictor Overview
๐ How to Use
import sys, subprocess, os, json def pip_install(pkg): try: import(pkg) except ImportError: subprocess.check_call([sys.executable, "-m", "pip", "install", pkg])
for p in ["huggingface_hub", "numpy", "scikit_learn", "xgboost"]: pip_install(p)
from huggingface_hub import snapshot_download import numpy as np from sklearn.preprocessing import LabelEncoder from xgboost import XGBClassifier
1) Download model files
repo_id = "MahmutCanBoran/bmw-model-predictor" local_dir = "bmw-model-predictor" snapshot_download(repo_id=repo_id, repo_type="model", local_dir=local_dir, allow_patterns=["*"])
2) Path and file controls
path = local_dir + os.sep required_files = ["bmw_model.json", "fuel_classes.npy", "car_type_classes.npy", "target_classes.npy"] missing = [f for f in required_files if not os.path.exists(path + f)] if missing: raise FileNotFoundError(f"ลu dosyalar eksik: {missing}\nKlasรถr iรงeriฤi: {os.listdir(path)}")
3) Restore the encoders.
fuel_le = LabelEncoder(); fuel_le.classes_ = np.load(path + "fuel_classes.npy", allow_pickle=True) car_type_le = LabelEncoder(); car_type_le.classes_ = np.load(path + "car_type_classes.npy", allow_pickle=True) target_le = LabelEncoder(); target_le.classes_ = np.load(path + "target_classes.npy", allow_pickle=True)
4) Upload XGBoost model(JSON)
model = XGBClassifier() model.load_model(path + "bmw_model.json")
5)Helper: encode the input and make a prediction
def predict_bmw_model(engine_power:int, mileage:int, price:float, fuel:str, car_type:str): # kategori doฤrulama (hata mesajlarฤฑ daha anlaลฤฑlฤฑr olsun) if fuel not in set(fuel_le.classes_): raise ValueError(f"fuel='{fuel}' geรงersiz. Geรงerli fuel sฤฑnฤฑflarฤฑ: {list(fuel_le.classes_)}") if car_type not in set(car_type_le.classes_): raise ValueError(f"car_type='{car_type}' geรงersiz. Geรงerli car_type sฤฑnฤฑflarฤฑ: {list(car_type_le.classes_)}")
X = np.array([[
engine_power,
mileage,
price,
fuel_le.transform([fuel])[0],
car_type_le.transform([car_type])[0]
]], dtype=float)
y_pred = model.predict(X)
return target_le.inverse_transform(y_pred)[0]
6) Info: display the available classes
print("Fuel classes:", list(fuel_le.classes_)) print("Car type classes:", list(car_type_le.classes_))
7) Example prediction
example = {"engine_power": 200, "mileage": 50000, "price": 25000, "fuel": "diesel", "car_type": "suv"} pred = predict_bmw_model(**example) print("Predicted BMW model:", pred)
