LightGBM -Kraftvariablen in Spaltungen sein
Posted: 13 Feb 2025, 05:23
Ich versuche, einen Weg zu finden, um ein LightGBM -Modell zu trainieren, das zwingt, einige Merkmale in den Spaltungen zu haben, d. H. "Um in der Merkmals Bedeutung zu sein", dann werden die Vorhersagen durch diese Variablen erreicht. < BR /> Hier ist ein Beispiel für einen Modellierungscode mit einer Usless -Variablen, da es konstant ist, aber die Idee ist, dass es aus der Perspektive der geschäftlichen Perspektive eine wichtige Variable geben kann, die nicht in der Funktion < /p>
Erwartete Lösung: Es sollte einige Workround geben, aber die interessanteste wäre diejenige, die einen Param in der Anpassung oder in der Regressormethode verwendet.
Code: Select all
from lightgbm import LGBMRegressor
import pandas as pd
import numpy as np
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# Generar un dataset de regresión aleatorio
X, y = make_regression(n_samples=1000, n_features=10, noise=0.9, random_state=42)
feature_names = [f"feature_{i}" for i in range(X.shape[1])]
# Convertir a DataFrame para mayor legibilidad
X = pd.DataFrame(X, columns=feature_names)
# Agregar características inútiles
X["useless_feature_1"] = 1
# Dividir los datos en conjuntos de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Definir el modelo LGBMRegressor
model = LGBMRegressor(
objective="regression",
metric="rmse",
random_state=1,
n_estimators=100
)
# Entrenar el modelo
model.fit(X_train, y_train, eval_set=[(X_test, y_test)])
# Predicciones y evaluación
y_pred = model.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
print(f"Test RMSE: {rmse:.4f}")
# Importancia de características
importance = pd.DataFrame({
"feature": X.columns,
"importance": model.feature_importances_
}).sort_values(by="importance", ascending=False)
print("\nFeature Importance:")
print(importance)