En este artículo, veremos cómo construir un clasificador de bosque aleatorio usando la biblioteca Scikit-Learn del lenguaje de programación Python y para hacer esto, usamos el conjunto de datos IRIS , que es un conjunto de datos bastante común y famoso. El bosque aleatorio o el bosque de decisiones aleatorias es un algoritmo de aprendizaje automático supervisado que se utiliza para la clasificación, la regresión y otras tareas mediante árboles de decisión.
El clasificador de bosque aleatorio crea un conjunto de árboles de decisión a partir de un subconjunto seleccionado al azar del conjunto de entrenamiento. Es básicamente un conjunto de árboles de decisión (DT) de un subconjunto seleccionado al azar del conjunto de entrenamiento y luego recopila los votos de diferentes árboles de decisión para decidir la predicción final.
En este algoritmo de clasificación, utilizaremos conjuntos de datos de flores de IRIS para entrenar y probar el modelo. Construiremos un modelo para clasificar el tipo de flor.
Código: Cargando conjunto de datos
# importing required libraries # importing Scikit-learn library and datasets package from sklearn import datasets # Loading the iris plants dataset (classification) iris = datasets.load_iris()
Código: verificar el contenido de nuestro conjunto de datos y los nombres de las características presentes en él.
print(iris.target_names)
Producción:
[‘setosa’ ‘versicolor’ ‘virginica’]
Código:
print(iris.feature_names)
Producción:
[‘sepal length (cm)’, ’sepal width (cm)’, ’petal length (cm)’, ’petal width (cm)’]
Código:
# dividing the datasets into two parts i.e. training datasets and test datasets X, y = datasets.load_iris( return_X_y = True) # Spliting arrays or matrices into random train and test subsets from sklearn.model_selection import train_test_split # i.e. 70 % training dataset and 30 % test datasets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.30)
Código: Importación de bibliotecas requeridas y módulo clasificador de bosque aleatorio.
# importing random forest classifier from assemble module from sklearn.ensemble import RandomForestClassifier import pandas as pd # creating dataframe of IRIS dataset data = pd.DataFrame({‘sepallength’: iris.data[:, 0], ’sepalwidth’: iris.data[:, 1], ’petallength’: iris.data[:, 2], ’petalwidth’: iris.data[:, 3], ’species’: iris.target})
Código: mirar un conjunto de datos
# printing the top 5 datasets in iris dataset print(data.head())
Producción:
sepallength sepalwidth petallength petalwidth species 0 5.1 3.5 1.4 0.2 0 1 4.9 3.0 1.4 0.2 0 2 4.7 3.2 1.3 0.2 0 3 4.6 3.1 1.5 0.2 0 4 5.0 3.6 1.4 0.2 0
Código:
# creating a RF classifier clf = RandomForestClassifier(n_estimators = 100) # Training the model on the training dataset # fit function is used to train the model using the training sets as parameters clf.fit(X_train, y_train) # performing predictions on the test dataset y_pred = clf.predict(X_test) # metrics are used to find accuracy or error from sklearn import metrics print() # using metrics module for accuracy calculation print("ACCURACY OF THE MODEL: ", metrics.accuracy_score(y_test, y_pred))
Producción:
ACCURACY OF THE MODEL: 0.9238095238095239
Código: predecir el tipo de flor a partir del conjunto de datos
# predicting which type of flower it is. clf.predict([[3, 3, 2, 2]])
Producción:
array([0])
Esto implica que es del tipo de flor setosa ya que obtuvimos las tres especies o clases en nuestro conjunto de datos: Setosa, Versicolor y Virginia. Ahora también descubriremos las características importantes o la selección de características en el conjunto de datos IRIS usando las siguientes líneas de código.
Código:
# importing random forest classifier from assemble module from sklearn.ensemble import RandomForestClassifier # Create a Random forest Classifier clf = RandomForestClassifier(n_estimators = 100) # Train the model using the training sets clf.fit(X_train, y_train)
Código: Cálculo de la importancia de la característica
# using the feature importance variable import pandas as pd feature_imp = pd.Series(clf.feature_importances_, index = iris.feature_names).sort_values(ascending = False) feature_imp
Producción:
petal width (cm) 0.458607 petal length (cm) 0.413859 sepal length (cm) 0.103600 sepal width (cm) 0.023933 dtype: float64