Fixing ValueError: feature_names must not contain [, ], or < in XGBoost
Los mantenedores suelen responder en 2 días
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 68/100
- Tipo de issue
- Documentación
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- python
- Área
- documentation
Línea de trabajo
El issue incluye la pregunta y una respuesta propuesta con un ejemplo en Python, pero no indica un archivo de destino ni una prueba. Empieza por comprobar cómo están organizadas las entradas existentes de las FAQ en el repositorio y, después, añade esta pregunta y respuesta en el lugar adecuado. La tarea estará terminada cuando la entrada explique los caracteres no válidos en los nombres de características e incluya el ejemplo de limpieza documentado.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Course
machine-learning-zoomcamp
Question
When creating a DMatrix for XGBoost in Module 6 using the features outputted by DictVectorizer:
dtrain = xgb.DMatrix(X_train, label=y_train, feature_names=dv.get_feature_names_out())
I get this error:
ValueError: feature_names must not contain [, ], or <
How do I fix this?
Answer
This error occurs because XGBoost has strict rules for feature names and does not allow certain characters (like [, ], <, or =). When using DictVectorizer with text or categorical columns, it often generates feature names containing these exact characters (e.g., origin=USA).
To resolve this, you must clean the feature names by replacing the invalid characters before passing them to DMatrix. You can do this easily using Python's re (regex) module:
import re
import xgboost as xgb
# 1. Get original feature names from DictVectorizer
feature_names = dv.get_feature_names_out().tolist()
# 2. Replace [, ], <, >, and = with underscores
clean_feature_names = [re.sub(r'[\[\]<>=]', '_', f) for f in feature_names]
# 3. Create the DMatrix using the clean names
dtrain = xgb.DMatrix(X_train, label=y_train, feature_names=clean_feature_names)
dval = xgb.DMatrix(X_val, label=y_val, feature_names=clean_feature_names)
### Checklist
- [x] I have searched existing FAQs and this question is not already answered
- [x] The answer provides accurate, helpful information
- [x] I have included any relevant code examples or links
- Lenguaje dominante
- Python
- Estrellas
- 8
- Forks
- 20
- Merge medio
- 7 d 9 h
- PR fusionados (30 d)
- 8
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de DataTalksClub/faq
-
How to fix uv warning: VIRTUAL_ENV does not match the project environment pathPosiblemente ocupada @github-actions la tomó hace 3 días. Abiertofaq-proposal
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
DataTalksClub/faq#534 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
Fixing ValueError: This solver needs samples of at least 2 classes in Logistic RegressionPosiblemente ocupada @github-actions la tomó hace 3 días. Abiertofaq-proposal
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
DataTalksClub/faq#532 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 60/100
DataTalksClub/faq#531 ·
Los mantenedores suelen responder en 2 días
-
[FAQ] omework 5 (2026): Why does `/predict` return 200 OK for `"Paid_Ads"`, `"tiktok"` or a negative count, and how do I reject bad input?Posiblemente ocupada @github-actions la tomó hace 4 días. Abiertofaq-proposal
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
DataTalksClub/faq#524 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
[FAQ]Posiblemente ocupada @github-actions la tomó hace 6 días. Abiertofaq-proposal
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
DataTalksClub/faq#521 · 1 comentario ·
Los mantenedores suelen responder en 2 días
Todos los issues de DataTalksClub/faq
Issues similares
-
question
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
conda-forge/vc-feedstock#132 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
limitlessprojects/Go-Hybrid#3342 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
UKGovernmentBEIS/inspect_ai#6268 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
LSSTDESC/rail_sompz#42 ·
-
All tests fail with 'EXITED with status 3' on pytest 9.2.0 (TestReport._id is not marshallable)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
pytest-dev/pytest-forked#113 ·