Los modelos AdaBoost pertenecen a una clase de modelos de aprendizaje automático de conjunto. Del significado literal de la palabra ‘conjunto’, fácilmente podemos tener una mejor intuición de cómo funciona este modelo. Los modelos de conjunto asumen la responsabilidad de combinar diferentes modelos y luego producen un metamodelo avanzado/más preciso. Este metamodelo tiene una precisión comparativamente alta en términos de predicción en comparación con sus contrapartes correspondientes. Hemos leído sobre el funcionamiento de estos modelos de conjuntos en el artículo Clasificador de conjuntos | Minería de datos .
El algoritmo AdaBoost se incluye en las técnicas de refuerzo de conjunto, como se mencionó, combina múltiples modelos para producir resultados más precisos y esto se hace en dos fases:
- Múltiples alumnos débiles pueden aprender sobre datos de entrenamiento
- Combinando estos modelos para generar un metamodelo, este metamodelo tiene como objetivo resolver los errores realizados por los alumnos débiles individuales.
Nota: Para obtener más información, consulte Impulsar modelos de conjunto
En este artículo, vamos a aprender sobre la implementación práctica del clasificador AdaBoost sobre un conjunto de datos.
En este problema, se nos proporciona un conjunto de datos que contiene 3 especies de flores y características de estas flores, como la longitud del sépalo, el ancho del sépalo, la longitud del pétalo y el ancho del pétalo, y tenemos que clasificar las flores en estas especies. El conjunto de datos se puede descargar desde aquí.
Comencemos con la importación de bibliotecas importantes que necesitaremos para realizar nuestra tarea de clasificación:
Python
import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.ensemble import AdaBoostClassifier import warnings warnings.filterwarnings("ignore")
Después de importar las bibliotecas, cargaremos nuestro conjunto de datos usando el método pandas read_csv como:
Python
# Reading the dataset from the csv file # separator is a vertical line, as seen in the dataset data = pd.read_csv("Iris.csv") # Printing the shape of the dataset print(data.shape)
(150, 6)
Podemos ver que nuestro conjunto de datos contiene 150 filas y 6 columnas. Echemos un vistazo a nuestro contenido real en el conjunto de datos usando el método head() como:
Python
data.head()
Identificación | SépaloLongitudCm | SépaloAnchoCm | PétaloLongitudCm | PétaloAnchoCm | Especies | |
---|---|---|---|---|---|---|
0 | 1 | 5.1 | 3.5 | 1.4 | 0.2 | Iris-setosa |
1 | 2 | 4.9 | 3.0 | 1.4 | 0.2 | Iris-setosa |
2 | 3 | 4.7 | 3.2 | 1.3 | 0.2 | Iris-setosa |
3 | 4 | 4.6 | 3.1 | 1.5 | 0.2 | Iris-setosa |
4 | 5 | 5.0 | 3.6 | 1.4 | 0.2 | Iris-setosa |
La primera columna es la columna Id, que no tiene relevancia con las flores, por lo que la descartaremos. La columna Especie es nuestra función de destino y nos informa sobre la especie a la que pertenecen las flores.
Python
data = data.drop('Id',axis=1) X = data.iloc[:,:-1] y = data.iloc[:,-1] print("Shape of X is %s and shape of y is %s"%(X.shape,y.shape))
Shape of X is (150, 4) and shape of y is (150,)
Python
total_classes = y.nunique() print("Number of unique species in dataset are: ",total_classes)
Number of unique species in dataset are: 3
Python
distribution = y.value_counts() print(distribution)
Iris-virginica 50 Iris-setosa 50 Iris-versicolor 50 Name: Species, dtype: int64
Profundicemos en nuestro conjunto de datos, y podemos ver en la imagen de arriba que nuestro conjunto de datos contiene 3 clases en las que también se distribuyen nuestras flores, dado que tenemos 150 muestras, las tres especies tienen la misma cantidad de muestras en el conjunto de datos, por lo que tenemos sin desequilibrio de clases.
Ahora, dividiremos el conjunto de datos con fines de capacitación y validación, el conjunto de validación es el 25% del conjunto de datos total.
Python
X_train,X_val,Y_train,Y_val = train_test_split(X,y,test_size=0.25,random_state=28)
Después de crear el conjunto de entrenamiento y validación, construiremos nuestro modelo de clasificador AdaBoost y lo ajustaremos sobre el conjunto de entrenamiento para el aprendizaje.
Python
# Creating adaboost classifier model adb = AdaBoostClassifier() adb_model = adb.fit(X_train,Y_train)
A medida que ajustamos nuestro modelo en el conjunto de trenes, verificaremos la precisión de nuestro modelo en el conjunto de validación.
Python
print("The accuracy of the model on validation set is", adb_model.score(X_val,Y_val))
The accuracy of the model on validation set is 0.9210526315789473
Como podemos ver, el modelo tiene una precisión del 92 % en el conjunto de validación, lo cual es bastante bueno sin ajuste de hiperparámetros ni ingeniería de funciones.
Publicación traducida automáticamente
Artículo escrito por saurabh48782 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA