Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

232
Vistas
Cómo usar warm_start

Me gustaría usar el parámetro warm_start para agregar datos de entrenamiento a mi clasificador de bosque aleatorio. Esperaba que se usara así:

 clf = RandomForestClassifier(...) clf.fit(get_data()) clf.fit(get_more_data(), warm_start=True)

Pero el parámetro warm_start es un parámetro de constructor. Entonces, ¿hago algo como esto?

 clf = RandomForestClassifier() clf.fit(get_data()) clf = RandomForestClassifier (warm_start=True) clf.fit(get_more_data)

Eso no tiene sentido. ¿La nueva llamada al constructor no descartará los datos de entrenamiento anteriores? Creo que me estoy perdiendo algo.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

El patrón básico de (tomado de la respuesta de Miriam):

 clf = RandomForestClassifier(warm_start=True) clf.fit(get_data()) clf.fit(get_more_data())

sería el uso correcto de la API.

Pero hay un problema aquí.

Como dicen los documentos lo siguiente:

Cuando se establece en True, reutiliza la solución de la llamada anterior para ajustar y agregar más estimadores al conjunto; de lo contrario, solo ajusta un bosque completamente nuevo.

significa que lo único que puede hacer warm_start por usted es agregar nuevos árboles de decisión. ¡Todos los árboles anteriores parecen estar intactos!

Comprobemos esto con algunas fuentes :

 n_more_estimators = self.n_estimators - len(self.estimators_) if n_more_estimators < 0: raise ValueError('n_estimators=%d must be larger or equal to ' 'len(estimators_)=%d when warm_start==True' % (self.n_estimators, len(self.estimators_))) elif n_more_estimators == 0: warn("Warm-start fitting without increasing n_estimators does not " "fit new trees.")

¡Esto básicamente nos dice que necesitaría aumentar la cantidad de estimadores antes de acercarse a un nuevo ajuste!

No tengo idea de qué tipo de uso espera Sklearn aquí. No estoy seguro, si ajustar, aumentar las variables internas y ajustar nuevamente es el uso correcto, pero de alguna manera lo dudo (especialmente porque n_estimators no es una variable de clase pública).

¡Su enfoque básico (con respecto a esta biblioteca y este clasificador) probablemente no sea una buena idea para su aprendizaje fuera del núcleo aquí! No continuaría con esto.

over 4 years ago · Santiago Trujillo Denunciar

0

Solo para agregar a la excelente respuesta de @sascha, este método hackie funciona:

 rf = RandomForestClassifier(n_estimators=1, warm_start=True) rf.fit(X_train, y_train) rf.n_estimators += 1 rf.fit(X_train, y_train)
over 4 years ago · Santiago Trujillo Denunciar

0

from sklearn.datasets import load_iris boston = load_iris() X, y = boston.data, boston.target ### RandomForestClassifier from sklearn.ensemble import RandomForestClassifier rfc = RandomForestClassifier(n_estimators=10, warm_start=True) rfc.fit(X[:50], y[:50]) print(rfc.score(X, y)) rfc.n_estimators += 10 rfc.fit(X[51:100], y[51:100]) print(rfc.score(X, y)) rfc.n_estimators += 10 rfc.fit(X[101:150], y[101:150]) print(rfc.score(X, y))

A continuación se muestra la diferenciación entre warm_start y parcial_fit.

Al ajustar un estimador repetidamente en el mismo conjunto de datos, pero para valores de parámetros múltiples (como para encontrar el valor que maximiza el rendimiento como en la búsqueda de cuadrícula), es posible reutilizar aspectos del modelo aprendidos del valor de parámetro anterior, ahorrando tiempo. Cuando warm_start es verdadero, los atributos del modelo ajustado existente se utilizan para inicializar el nuevo modelo en una llamada posterior para ajustar. Tenga en cuenta que esto solo se aplica a algunos modelos y algunos parámetros, e incluso a algunos órdenes de valores de parámetros. Por ejemplo, warm_start se puede usar al construir bosques aleatorios para agregar más árboles al bosque (aumentando n_estimators) pero no para reducir su número.

parcial_fit también retiene el modelo entre llamadas, pero difiere: con warm_start los parámetros cambian y los datos son (más o menos) constantes entre llamadas para ajustarse; con parcial_fit, el mini lote de cambios de datos y los parámetros del modelo permanecen fijos.

Hay casos en los que desea utilizar warm_start para adaptarse a datos diferentes pero estrechamente relacionados. Por ejemplo, se puede ajustar inicialmente a un subconjunto de datos y luego ajustar la búsqueda de parámetros en el conjunto de datos completo. Para la clasificación, todos los datos en una secuencia de llamadas de ajuste de warm_start deben incluir muestras de cada clase.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda