ML | Clasificador de votaciones usando Sklearn

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.

  1. 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.
  2. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *