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)
fuel type
car_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
BMW Model Predictor
🚀 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)