vectorial soporte regresion modelos maquinas machine lineal libro learning español ejemplos ejemplo curso algoritmos python machine-learning scikit-learn ensemble-learning

soporte - modelos machine learning python



Usar el conjunto de votación sklearn con ajuste parcial (2)

¿Puede alguien decir cómo usar conjuntos en sklearn con ajuste parcial? No quiero volver a entrenar mi modelo. Alternativamente, ¿podemos pasar modelos pre-entrenados para el conjunto? He visto que el clasificador de votos, por ejemplo, no admite el entrenamiento con ajuste parcial.


Desafortunadamente, actualmente esto no es posible en scikit VotingClassifier.

Pero puede usar http://sebastianraschka.com/Articles/2014_ensemble_classifier.html ( desde el cual se implementa VotingClassifer ) para intentar implementar su propio clasificador de votación, que puede tomar modelos preinstalados.

También podemos ver el código fuente aquí y modificarlo para nuestro uso:

from sklearn.preprocessing import LabelEncoder import numpy as np le_ = LabelEncoder() # When you do partial_fit, the first fit of any classifier requires all available labels (output classes), you should supply all same labels here in y. le_.fit(y) # Fill below list with fitted or partial fitted estimators clf_list = [clf1, clf2, clf3, ... ] # Fill weights -> array-like, shape = [n_classifiers] or None weights = [clf1_wgt, clf2_wgt, ... ] weights = None #For hard voting: pred = np.asarray([clf.predict(X) for clf in clf_list]).T pred = np.apply_along_axis(lambda x: np.argmax(np.bincount(x, weights=weights)), axis=1, arr=pred.astype(''int'')) #For soft voting: pred = np.asarray([clf.predict_proba(X) for clf in clf_list]) pred = np.average(pred, axis=0, weights=weights) pred = np.argmax(pred, axis=1) #Finally, reverse transform the labels for correct output: pred = le_.inverse_transform(np.argmax(pred, axis=1))


La biblioteca Mlxtend tiene una implementación de VotingEnsemble que le permite pasar modelos preinstalados. Por ejemplo, si tiene tres modelos preformados clf1, clf2, clf3. El siguiente código funcionaría.

mlxtend.classifier import EnsembleVoteClassifier import copy eclf = EnsembleVoteClassifier(clfs=[clf1, clf2, clf3], weights=[1,1,1], refit=False)

Cuando se establece en falso, el argumento de reajuste en EnsembleVoteClassifier asegura que los clasificadores no se reajusten.

En general, cuando se buscan funciones técnicas más avanzadas que el kit de aprendizaje de ciencia-ficción no proporciona, consulte MLxtend como primer punto de referencia.