Aquí tienes un ejemplo completo de entrenamiento de un modelo de clasificación de carros usando Random Forest en Python con scikit-learn, desde los datos hasta la predicción:
✅ Supongamos que tienes un dataset con las siguientes columnas:
marca, anio, cilindraje, tipo_combustible, precio_categoria (donde esta última es la variable objetivo: "alto", "medio", "bajo")
📦 1. Importar librerías
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import classification_report, confusion_matrix
📄 2. Datos de ejemplo
# Datos simulados
data = {
'marca': ['Toyota', 'Mazda', 'Renault', 'Chevrolet', 'Kia'],
'anio': [2015, 2018, 2020, 2017, 2016],
'cilindraje': [1.6, 2.0, 1.2, 1.4, 1.6],
'tipo_combustible': ['Gasolina', 'Gasolina', 'Gasolina', 'Diesel', 'Gasolina'],
'precio_categoria': ['medio', 'alto', 'bajo', 'medio', 'bajo']
}
df = pd.DataFrame(data)
🧹 3. Preprocesamiento
# Codificación de variables categóricas
le_marca = LabelEncoder()
le_comb = LabelEncoder()
le_target = LabelEncoder()
df['marca'] = le_marca.fit_transform(df['marca'])
df['tipo_combustible'] = le_comb.fit_transform(df['tipo_combustible'])
df['precio_categoria'] = le_target.fit_transform(df['precio_categoria']) # Etiquetas 0, 1, 2
✂️ 4. División en train/test
X = df.drop('precio_categoria', axis=1)
y = df['precio_categoria']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)
🌲 5. Entrenamiento del modelo Random Forest
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
🧪 6. Evaluación del modelo
y_pred = model.predict(X_test)
print("Matriz de confusión:")
print(confusion_matrix(y_test, y_pred))
print("\nReporte de clasificación:")
print(classification_report(y_test, y_pred, target_names=le_target.classes_))
🧠 7. Predecir nuevos autos
nuevo_auto = pd.DataFrame({
'marca': le_marca.transform(['Toyota']),
'anio': [2022],
'cilindraje': [1.8],
'tipo_combustible': le_comb.transform(['Gasolina'])
})
pred = model.predict(nuevo_auto)
print(f"Categoría de precio predicha: {le_target.inverse_transform(pred)[0]}")