Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

263
Views
Pre entrenar un modelo (clasificador) en scikit learn

Me gustaría entrenar previamente un modelo y luego entrenarlo con otro modelo.

Tengo el modelo Decision Tree Classifer y luego me gustaría entrenarlo más con el modelo LGBM Classifier . ¿Existe la posibilidad de hacer esto en scikit learn? Ya he leído esta publicación al respecto https://datascience.stackexchange.com/questions/28512/train-new-data-to-pre-trained-model. . En la publicación dice

Según la documentación oficial, llamar a fit() más de una vez sobrescribirá lo aprendido por cualquier fit() anterior

 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1) # Train Decision Tree Classifer clf = DecisionTreeClassifier() clf = clf.fit(X_train,y_train) lgbm = lgb.LGBMClassifier() lgbm = lgbm.fit(X_train,y_train) #Predict the response for test dataset y_pred = lgbm.predict(X_test)
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Quizás esté buscando clasificadores apilados.

En este enfoque, las predicciones de modelos anteriores están disponibles como características para modelos posteriores.

Mire en StackingClassifiers .

Adaptado de la documentación:

 from sklearn.ensemble import StackingClassifier estimators = [ ('dtc_model', DecisionTreeClassifier()), ] clf = StackingClassifier( estimators=estimators, final_estimator=LGBMClassifier() )
over 4 years ago · Santiago Trujillo Report

0

Desafortunadamente, esto no es posible en la actualidad. De acuerdo con el documento en https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMClassifier.html?highlight=init_model , puede continuar entrenando el modelo si el modelo es de lightgbm.

Intenté esta configuración con:

 # dtc dtc_model = DecisionTreeClassifier() dtc_model = dtc_model.fit(X_train, y_train) # save dtc_fn = 'dtc.pickle.db' pickle.dump(dtc_model, open(dtc_fn, 'wb')) # lgbm lgbm_model = LGBMClassifier() lgbm_model.fit(X_train_2, y_train_2, init_model=dtc_fn)

Y obtengo:

 LightGBMError: Unknown model format or submodel type in model file dtc.pickle.db
over 4 years ago · Santiago Trujillo Report

0

Como explicó @Ferdy en su publicación, no existe una forma sencilla de realizar esta operación y es comprensible.

Scikit-learn DecisionTreeClassifier solo toma características numéricas y no puede manejar valores nan mientras que LGBMClassifier puede manejarlos.

Al observar la función de decisión de scikit-learn , puede ver que todo lo que puede realizar son divisiones basadas en feature <= threshold .

Por el contrario LGBM puede realizar lo siguiente:

  • feature is na
  • feature <= threshold
  • feature in categories

Las divisiones en el árbol de decisión se seleccionan en cada paso, ya que dividen mejor el conjunto de elementos. Intentan minimizar la impureza (giny) o entropía del nodo.

El riesgo de capacitar más a un DecisionTreeClassifier es que no está seguro de que las divisiones realizadas en el árbol original sean las mejores, ya que tiene nuevas capacidades de división con LGBM que podrían/deberían conducir a un mejor rendimiento.

Le recomendaría volver a entrenar el modelo con LGBMClassifier solo, ya que es posible que las divisiones sean diferentes del árbol original scikit-learn .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!