Cómo abordar un proyecto de aprendizaje automático: una guía paso a paso

Este artículo proporcionará un procedimiento básico sobre cómo un principiante debe abordar un proyecto de Machine Learning y describir los pasos fundamentales involucrados. En el problema, nos centraremos en la clasificación de las flores de iris. Puede obtener información sobre el conjunto de datos aquí .

Muchos profesores y sitios web abordan este problema para demostrar los diversos matices involucrados en un proyecto de aprendizaje automático porque:

  1. Todos los atributos son numéricos y todos los atributos son de la misma escala y unidades.
  2. El problema en cuestión es un problema de clasificación y, por lo tanto, nos da la opción de explorar muchas métricas de evaluación.
  3. El conjunto de datos involucrado es pequeño y limpio y, por lo tanto, se puede manejar fácilmente.

Demostramos los siguientes pasos y los describimos en consecuencia a lo largo del camino. 

Paso 1: Importación de las bibliotecas requeridas 

Python3

import pandas as pd
from pandas.plotting import scatter_matrix
import matplotlib.pyplot as plt
from sklearn import model_selection
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier

Paso 2: cargando los datos

Python3

# dataset (csv file) path
url = "https://raw.githubusercontent.com /jbrownlee/Datasets/master/iris.csv"
 
# selectng necessary feature
features = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
 
# reading the csv
data = pd.read_csv(url, names = features)

Paso 3: Resumen de los datos

Este paso generalmente implica los siguientes pasos:

a) Echar un vistazo a los datos

Python3

data.head()

b) Hallar las dimensiones de los Datos

Python3

data.shape

c) Resumen estadístico de todos los atributos

Python3

print(data.describe())

d) Clase de distribución de los Datos

Python3

print((data.groupby('class')).size())

Paso 4: Visualización de los datos 
Este paso generalmente implica los siguientes pasos:

a) Trazado de gráficos univariados
Esto se hace para comprender la naturaleza de cada atributo.

Python3

data.plot(kind ='box', subplots = True, layout =(2, 2),
                       sharex = False, sharey = False)
 
plt.show()

Python3

data.hist()
plt.show()

b) Trazado de gráficos multivariados
Esto se hace para comprender las relaciones entre diferentes características.

Python3

scatter_matrix(data)
plt.show()

Paso 5: Entrenamiento y evaluación de nuestros modelos
Este paso normalmente contiene los siguientes pasos:

a) Dividir los datos de entrenamiento y prueba
Esto se hace para que una parte de los datos se oculte del algoritmo de aprendizaje.

Python3

y = data['class']
X = data.drop('class', axis = 1)
X_train, X_test, y_train, y_test = model_selection.train_test_split(
                           X, y, test_size = 0.25, random_state = 0)
 
print(X.head())
print('')
print(y.head())

b) Construcción y validación cruzada del modelo

Python3

algorithms = []
scores = []
names = []
 
algorithms.append(('Logistic Regression', LogisticRegression()))
algorithms.append(('K-Nearest Neighbours', KNeighborsClassifier()))
algorithms.append(('Decision Tree Classifier', DecisionTreeClassifier()))
 
for name, algo in algorithms:
    k_fold = model_selection.KFold(n_splits = 10, random_state = 0)
 
    # Applying k-cross validation
    cvResults = model_selection.cross_val_score(algo, X_train, y_train,
                                      cv = k_fold, scoring ='accuracy')
 
    scores.append(cvResults)
    names.append(name)
    print(str(name)+' : '+str(cvResults.mean()))

c) Comparar visualmente los resultados de los diferentes algoritmos

Python3

fig = plt.figure()
fig.suptitle('Algorithm Comparison')
ax = fig.add_subplot(111)
plt.boxplot(scores)
ax.set_xticklabels(names)
plt.show()

Paso 6: Hacer predicciones y evaluar las predicciones

Python3

for name, algo in algorithms:
    clf = algo
    clf.fit(X_train, y_train)
    y_pred = clf.predict(X_test)
    pred_score = accuracy_score(y_test, y_pred)
 
    print(str(name)+' : '+str(pred_score))
    print('')
    print('Confusion Matrix: '+str(confusion_matrix(y_test, y_pred)))
    print(classification_report(y_test, y_pred))

Referencia: https://machinelearningmastery.com/machine-learning-in-python-step-by-step/
 

Publicación traducida automáticamente

Artículo escrito por AlindGupta 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 *