Introducción al Machine Learning

Borja Briso-Montiano
4 min readDec 20, 2020

En una serie de posts me gustaría enseñaros a utilizar Machine Learning a aquellos que conozcáis que es y os gustaría empezar con ello, pero no sabéis por dónde empezar o no sabéis programar.

¿Qué vamos a conseguir con este post?

El objetivo es que de una base de datos cualquiera consigamos sacar gráficas del siguiente estilo:

Advertir que los modelos ya están construidos y por lo tanto no es necesario saber programar para realizar cualquier estudio. Sólo es necesario tener datos de partida y copiar-pegar las líneas de código que abajo se presentan. Con esto pretendo que cualquier persona, sin conocer Python sea capaz de usar Machine Learning.

Para empezar, es necesario que descarguemos Anaconda. Existen otras plataformas, pero esta es la que más sencilla me resulta para alguien que no está familiarizado con Linux. Link con todos los pasos.

Una vez instalado, es necesario abrir Anaconda Navigator y seleccionar el Notebook Jupiter.

Una vez iniciado en nuestro explorador por defecto, debemos crear un nuevo documento de Python 3.

Lo siguiente que tenemos que tener a mano son nuestros datos. Estos deberán estar ordenados y con formato CSV (cualquier excel puede pasar a tener este formato eligiéndolo en “guardar como”)

También es posible leer archivos, no sólo de nuestro ordenador, sino online. El ejemplo con el que podéis probar es éste. Ejemplo datos CSV abiertos con el Notepad

Dentro de nuestro fichero Python debemos en primer lugar cargar las librerías:

import pandas
from pandas.plotting import scatter_matrix
import matplotlib.pyplot as plt
from sklearn import model_selection
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC

Lo siguiente es cargar los datos. Dependiendo de dónde estén vuestros datos, es necesario actualizar la dirección

url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"

Podemos renombrar las columnas de datos según lo que sean según este patrón

names = ['sepal-legnth', 'sepal-witdh', 'petal-length', 'petal-witdh', 'class']

Por último llamamos a estos datos nuestro dataset

dataset = pandas.read_csv(url, names=names)

A partir de aquí ya podemos hacer análisis de datos de forma muy sencilla, con unos pocos comandos podemos empezar a ver resultados.

Diagramas de cajas:

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

Histogramas:

dataset.hist()
plt.show()

Matriz de dispersión:

scatter_matrix(dataset)
plt.show()

Hora del Machine Learning

Elegimos training data set 80% y validation data set 20%

array=dataset.values
X=array[:,0:4]
Y=array[:,4]
validation_size = 0.2
seed= 6
X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X , Y, test_size = validation_size, random_state=seed)
seed = 6
scoring =
'accuracy'

Comprobamos cómo reaccionarían nuestros datos a diferentes modelos y que nivel de precisión tendrán. Los modelos se calculan según el software Scikit-learn, que nos genera el modelo completo sin tener que entender su programación, sino solamente interpretar sus resultados.

models = []
models.append(('LDA',LinearDiscriminantAnalysis()))
models.append(('KNN',KNeighborsClassifier()))
models.append(('CART',DecisionTreeClassifier()))
models.append(('NB',GaussianNB()))
models.append(('SVM',SVC()))
results = []
names = []
for name, model in models:
kfold = model_selection.KFold(n_splits=10)
cv_results = model_selection.cross_val_score(model, X_train, Y_train, cv=kfold, scoring =scoring)
results.append(name)
names.append(name)
msg= '%s: %f (%f)' % (name, cv_results.mean(), cv_results.std())
print(msg)

Resultados

Los resultados de este script nos mostrará cómo de buenos son los diferentes modelos para nuestro set de datos. Valores cercanos a 1 indican una gran idoneidad para usar ese modelo con resultados bastante fiables.

LDA: 0.975000 (0.038188)
KNN: 0.958333 (0.055902)
CART: 0.941667 (0.038188)
NB: 0.966667 (0.055277)
SVM: 0.950000 (0.076376)

En este ejemplo, el mejor modelo es el LDA “Linear Discriminant Analysis”. Todos estos modelos y sus resultados e interpretación los iremos analiando en post posteriores.

Espero que os haya resultaod de interés, si te interesaría una explicación de estos modelos, puedes indicarmelo con un like en el post.

--

--

Borja Briso-Montiano
Borja Briso-Montiano

Written by Borja Briso-Montiano

Ingeniero Industrial y Experto Lean compartiendo su experiencia en la mejora continua de procesos a través de las nuevas tecnologías.

No responses yet