Un clasificador de votaciones es un modelo de aprendizaje automático que entrena en un conjunto de numerosos modelos y predice una salida (clase) en función de su probabilidad más alta de clase elegida como salida.
Simplemente agrega los resultados de cada clasificador pasado al Clasificador de votaciones y predice la clase de salida en función de la mayoría más alta de votos. La idea es que, en lugar de crear modelos dedicados separados y encontrar la precisión para cada uno de ellos, creamos un solo modelo que entrena con estos modelos y predice la salida en función de su mayoría combinada de votos para cada clase de salida.
Voting Classifier admite dos tipos de votaciones.
- Votación dura: en la votación dura, la clase de salida pronosticada es una clase con la mayoría más alta de votos, es decir, la clase que tenía la probabilidad más alta de ser pronosticada por cada uno de los clasificadores. Supongamos que tres clasificadores predijeron la clase de salida (A, A, B) , por lo que aquí la mayoría predijo A como salida. Por tanto , A será la predicción final.
- Votación blanda: en la votación blanda, la clase de salida es la predicción basada en el promedio de probabilidad dado a esa clase. Suponga que se le da alguna entrada a tres modelos, la probabilidad de predicción para la clase A = (0.30, 0.47, 0.53) y B = (0.20, 0.32, 0.40) . Entonces, el promedio para la clase A es 0.4333 y B es 0.3067 , el ganador es claramente la clase A porque tenía la probabilidad más alta promediada por cada clasificador.
Nota: asegúrese de incluir una variedad de modelos para alimentar un clasificador de votación para asegurarse de que el error cometido por uno pueda ser resuelto por el otro.
Código: código de Python para implementar el clasificador de votación
# importing libraries from sklearn.ensemble import VotingClassifier from sklearn.linear_model import LogisticRegression from sklearn.svm import SVC from sklearn.tree import DecisionTreeClassifier from sklearn.datasets import load_iris from sklearn.metrics import accuracy_score from sklearn.model_selection import train_test_split # loading iris dataset iris = load_iris() X = iris.data[:, :4] Y = iris.target # train_test_split X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.20, random_state = 42) # group / ensemble of models estimator = [] estimator.append(('LR', LogisticRegression(solver ='lbfgs', multi_class ='multinomial', max_iter = 200))) estimator.append(('SVC', SVC(gamma ='auto', probability = True))) estimator.append(('DTC', DecisionTreeClassifier())) # Voting Classifier with hard voting vot_hard = VotingClassifier(estimators = estimator, voting ='hard') vot_hard.fit(X_train, y_train) y_pred = vot_hard.predict(X_test) # using accuracy_score metric to predict accuracy score = accuracy_score(y_test, y_pred) print("Hard Voting Score % d" % score) # Voting Classifier with soft voting vot_soft = VotingClassifier(estimators = estimator, voting ='soft') vot_soft.fit(X_train, y_train) y_pred = vot_soft.predict(X_test) # using accuracy_score score = accuracy_score(y_test, y_pred) print("Soft Voting Score % d" % score)
Producción :
Hard Voting Score 1 Soft Voting Score 1
Ejemplos:
Input :4.7, 3.2, 1.3, 0.2 Output :Iris Setosa
En la práctica, la precisión de salida será mayor para la votación suave, ya que es la probabilidad promedio de todos los estimadores combinados, ya que para nuestro conjunto de datos de iris básico ya estamos sobreajustando, por lo que no habrá mucha diferencia en la salida.
Publicación traducida automáticamente
Artículo escrito por ankushkuwar05 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA