
Data science: definición y aplicaciones prácticas
Data science es un campo relativamente reciente, en rápido crecimiento y con múltiples vertientes, que se usa en multitud de ámbitos. Emplea técnicas avanzadas de analítica y algoritmos de modelado predictivo para extraer información valiosa de los datos y así responder a preguntas estratégicas de negocio o científicas. Data science combina una gran variedad de habilidades, desde las técnicas (programación, álgebra lineal, estadística y modelado) hasta otras no técnicas (presentación eficaz y comunicación de resultados). Además, según el sector en el que se aplique, es imprescindible contar con un sólido conocimiento del dominio para interpretar correctamente la información disponible y los insights obtenidos.
Los algoritmos de data science pueden aplicarse con éxito en contextos muy diversos donde se recopilan (o se pueden recopilar) grandes volúmenes de datos: finanzas, comercio, marketing, gestión de proyectos, seguros, medicina, educación, fabricación, RR. HH., lingüística, sociología, etc. En la práctica, cualquier industria o disciplina científica puede beneficiarse enormemente de recopilar, organizar, analizar y modelar sus datos.
¿Qué es un caso de uso de data science?
Un caso de uso de data science es una tarea concreta del mundo real que se resuelve utilizando los datos disponibles. En el marco de una empresa, se analizan muchas variables con técnicas de data science en el contexto de su sector. Un caso de uso puede ser un problema a resolver, una hipótesis que comprobar o una pregunta a responder. En esencia, hacer data science significa resolver casos de uso reales.
Aunque el contenido de cada caso de uso puede variar mucho, hay algunos aspectos comunes que conviene tener siempre presentes:
- La planificación de un caso de uso en data science implica: definir un objetivo claro y los resultados esperados, acotar el alcance del trabajo, evaluar los recursos disponibles, aportar los datos necesarios, valorar riesgos y fijar KPI como medida del éxito.
- Los enfoques más habituales para resolver casos de uso son: previsión, clasificación, detección de patrones y anomalías, recomendaciones y reconocimiento de imágenes.
- Algunos casos de uso son tareas típicas en múltiples ámbitos y se pueden abordar con enfoques parecidos, como la predicción de abandono de clientes, la segmentación de clientes, la detección de fraude, los sistemas de recomendación y la optimización de precios.
¿Cómo resuelvo un caso práctico de data science?
La respuesta depende mucho del caso, de la estrategia del negocio y de la naturaleza del propio estudio. Aun así, puede ser útil trazar una hoja de ruta general aplicable a cualquier caso de uso:
- Formular la pregunta adecuada. Este primer paso es clave e incluye revisar bibliografía y casos existentes, repasar buenas prácticas, elaborar teorías e hipótesis de trabajo relevantes y cubrir posibles lagunas de conocimiento del dominio. El resultado debe ser una pregunta clara a responder en el caso de estudio.
- Recopilación de datos. Aquí hacemos inventario y acopio de datos. En la vida real, a menudo contamos con datos poco representativos, incompletos, con errores y desestructurados; lejos de ser una tabla limpia y lista para analizar. Por ello hay que buscar e identificar todas las fuentes potencialmente útiles: archivos internos, web scraping, datos aportados por patrocinadores, etc.
- Limpieza y preparación de datos. Suele ser la parte que más tiempo y recursos consume. Se evalúan la calidad y representatividad de los datos y se realiza una exploración inicial. Luego se limpian, preprocesan, transforman, manipulan y mapean desde su forma en bruto a un formato más adecuado.
- Análisis y modelado. Se analiza el estado actual de los datos limpios y se ajustan a un modelo predictivo seleccionado. Se evalúa la precisión del modelo y, si no es satisfactoria, se prueban otros enfoques. Esto se repite hasta obtener el modelo que predice con mayor precisión los escenarios futuros. Como los pasos anteriores, este proceso puede ser bastante iterativo.
- Comunicación de resultados. Frente a los pasos anteriores, aquí pesan más las habilidades de comunicación y las soft skills que la programación. Incluye compartir hallazgos y conclusiones con dirección, accionistas y otras partes interesadas. Lo habitual es presentar los insights en informes, artículos y presentaciones, proponiendo posibles siguientes pasos.
Casos de uso de data science por industria
Los casos de uso de data science pueden darse prácticamente en cualquier sector donde se acumulan (o pueden acumularse) grandes cantidades de datos. En este capítulo, vamos a comentar algunos casos típicos en los siguientes ámbitos de alta demanda: logística, salud y telecomunicaciones. Varios de los casos que veremos son interdisciplinarios y aparecen en muchas otras áreas, lo que los hace más universales y aplicables. Por ello merece la pena conocer el enfoque general para resolverlos. Además, para cada sector propondremos otros temas que se pueden modelar con métodos de data science.
Data science en salud
En los tres capítulos anteriores hemos visto cómo los métodos de data science ayudan a empresas de distintos sectores a incrementar sus ingresos. En sanidad, además de beneficiar a los equipos de marketing del sector, el uso e interpretación adecuados de los datos pueden facilitar diagnósticos a tiempo de enfermedades graves e incluso salvar vidas.
La medicina y los proveedores sanitarios recogen ingentes cantidades de datos de numerosas fuentes: historiales clínicos electrónicos (EHR), dispositivos wearables, estudios de investigación y documentos de facturación. Aprovechar técnicas innovadoras de data science y análisis de datos está transformando gradualmente toda la industria sanitaria, ofreciendo soluciones prometedoras y de gran impacto para su evolución. En particular, áreas altamente especializadas como la genética, la medicina reproductiva, la oncología, la biotecnología, la radiografía, el diagnóstico predictivo y la industria farmacéutica han dado un salto de nivel al explotar todo el potencial de sus datos.
Para entender mejor cómo puede aportar valor en medicina, centrémonos en uno de los casos de uso más clásicos.
Caso de uso en salud: predicción del cáncer de mama
Según el World Cancer Research Fund International, el cáncer de mama es el tipo más común entre las mujeres y el segundo más frecuente en términos generales. Diagnosticar a tiempo una patología mamaria, benigna o maligna, es clave porque aumenta significativamente las probabilidades de éxito del tratamiento y la supervivencia. Aquí es donde data science puede ayudar.
El avance de la minería de datos junto con los algoritmos de machine learning permite predecir el riesgo de cáncer de mama, detectar anomalías en fases tempranas, estimar su evolución y, así, diseñar el mejor plan para combatir la enfermedad. En esencia, es un problema típico de clasificación en machine learning. La buena noticia es que, al ser un tipo de oncología relativamente común en todo el mundo, se han realizado muchas investigaciones y, como resultado, se han acumulado enormes volúmenes de datos de pacientes a escala global.
El principal reto al usar estos conjuntos de datos en clasificadores es que pueden estar muy desbalanceados. Por ejemplo, si el resultado es cáncer / no cáncer, la probabilidad de patología (las entradas de la clase minoritaria) es considerablemente menor que la de no tener patología (clase mayoritaria). En consecuencia, el algoritmo tiende a clasificar los nuevos casos como no patológicos. Por ello, para evaluar mejor la precisión de estos modelos, tiene sentido usar el F1-score como métrica, ya que pondera falsos positivos (error de tipo I) y falsos negativos (error de tipo II) en lugar de fijarse solo en los aciertos.
Veamos un conjunto de datos real de Breast Cancer de uno de los estados de EE. UU. Las variables se describen con detalle en la documentación; en resumen, son la media, el error estándar y los valores máximos de atributos extraídos de cada imagen digitalizada de los núcleos celulares del bulto mamario de una mujer. Cada registro corresponde a una mujer con un tumor maligno o benigno (todas tienen algún tipo de tumor). Los atributos incluyen radio celular, textura, suavidad, compacidad, concavidad, simetría, etc.
import pandas as pd
cancer_data = pd.read_csv('data.csv')
pd.options.display.max_columns = len(cancer_data)
print(f'Number of entries: {cancer_data.shape[0]:,}\n'
f'Number of features: {cancer_data.shape[1]:,}\n\n'
f'Number of missing values: {cancer_data.isnull().sum().sum()}\n\n'
f'{cancer_data.head(2)}')
Number of entries: 569
Number of features: 33
Number of missing values: 569
id diagnosis radius_mean texture_mean perimeter_mean area_mean \
0 842302 M 17.99 10.38 122.8 1001.0
1 842517 M 20.57 17.77 132.9 1326.0
smoothness_mean compactness_mean concavity_mean concave points_mean \
0 0.11840 0.27760 0.3001 0.14710
1 0.08474 0.07864 0.0869 0.07017
symmetry_mean fractal_dimension_mean radius_se texture_se perimeter_se \
0 0.2419 0.07871 1.0950 0.9053 8.589
1 0.1812 0.05667 0.5435 0.7339 3.398
area_se smoothness_se compactness_se concavity_se concave points_se \
0 153.40 0.006399 0.04904 0.05373 0.01587
1 74.08 0.005225 0.01308 0.01860 0.01340
symmetry_se fractal_dimension_se radius_worst texture_worst \
0 0.03003 0.006193 25.38 17.33
1 0.01389 0.003532 24.99 23.41
perimeter_worst area_worst smoothness_worst compactness_worst \
0 184.6 2019.0 0.1622 0.6656
1 158.8 1956.0 0.1238 0.1866
concavity_worst concave points_worst symmetry_worst \
0 0.7119 0.2654 0.4601
1 0.2416 0.1860 0.2750
fractal_dimension_worst Unnamed: 32
0 0.11890 NaN
1 0.08902 NaN
Eliminemos la última columna, que solo contiene valores ausentes:
cancer_data = cancer_data.drop('Unnamed: 32', axis=1)
¿Qué porcentaje de mujeres tiene un cáncer confirmado (tumor maligno de mama)?
round(cancer_data['diagnosis'].value_counts()*100/len(cancer_data)).convert_dtypes()
B 63
M 37
Name: diagnosis, dtype: Int64
El 37% de las participantes tiene cáncer de mama, así que el conjunto de datos está bastante equilibrado.
Como los valores de la variable diagnosis son categóricos, debemos codificarlos a formato numérico para usarlos en machine learning. Antes, separemos las variables predictoras de la variable objetivo diagnosis:
X = cancer_data.iloc[:, 2:32].values
y = cancer_data.iloc[:, 1].values
# Encoding categorical data
from sklearn.preprocessing import LabelEncoder
labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)
Ahora creemos los conjuntos de entrenamiento y prueba y escalemos las variables:
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
Para modelar, apliquemos estos algoritmos con parámetros por defecto: k-nearest neighbors (KNN) y regresión logística:
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
# KNN
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
knn_predictions = knn.predict(X_test)
# Logistic regression
lr = LogisticRegression()
lr.fit(X_train, y_train)
lr_predictions = lr.predict(X_test)
Vimos antes que el dataset está bastante equilibrado, por lo que podemos usar la métrica accuracy para identificar el modelo más preciso:
from sklearn.metrics import accuracy_score
print(f'Accuracy scores:\n'
f'KNN model:\t\t {accuracy_score(y_test, knn_predictions):.3f}\n'
f'Logistic regression model: {accuracy_score(y_test, lr_predictions):.3f}')
Accuracy scores:
KNN model: 0.956
Logistic regression model: 0.974
Con estos datos, la regresión logística ofrece el mejor rendimiento a la hora de predecir si un tumor de mama es maligno o benigno en mujeres con una patología mamaria detectada.
Como siguientes pasos, dado que la regresión logística no tiene parámetros críticos que ajustar, podemos probar distintos métodos de partición train/test y/o diversas técnicas de modelado predictivo.
Otros casos de uso comunes en salud:
- monitorización en tiempo real desde wearables
- analítica predictiva
- análisis de imágenes médicas
- descubrimiento de fármacos
- investigación genética
- asistentes virtuales
- gestión de datos de pacientes
Data science en transporte y logística
La logística organiza el proceso de entrega de productos de un punto a otro, mientras que el transporte implica mover personas o mercancías. Según la actividad de la empresa (comida a domicilio, mensajería, envíos internacionales, aerolíneas, taxis o autobuses), las fuentes de datos pueden ser horarios, partes de trabajo, detalles de rutas, inventarios de almacén, informes, contratos, acuerdos, documentos legales y feedback de clientes. Los datos pueden ser estructurados o no, e incluir tiempos, itinerarios, rutas, coordenadas, datos de clientes, detalles de la mercancía, costes y precios.
La eficiencia en cadena de suministro y transporte no siempre es evidente y depende de muchos factores: atascos imprevistos, calidad de las rutas, meteorología, emergencias, fluctuaciones del precio del combustible, roturas de stock, averías, retrasos por seguridad, normativas y sanciones, etc. Además, en los últimos años han surgido muchas empresas nuevas y la competencia es intensa. Para no quedarse atrás y ganar en productividad operativa, analizar grandes volúmenes de datos y convertirlos en insights accionables se ha vuelto imprescindible.
¿Cómo puede ayudar data science en transporte y logística? Aquí tienes una lista, no exhaustiva, de aplicaciones:
- trazabilidad de extremo a extremo de todo el proceso,
- automatización y visibilidad total de las operaciones,
- entregas puntuales,
- optimización de rutas,
- precios dinámicos,
- mantenimiento del stock,
- protección de mercancía perecedera,
- monitorización del estado de los vehículos,
- mejora de las redes de producción,
- mejora del servicio al cliente.
Caso de uso en transporte y logística: posicionamiento óptimo de taxis
Uber Technologies Inc., o Uber, es una empresa estadounidense que ofrece distintos servicios de logística y transporte. En este caso práctico, vamos a agrupar con clustering datos GPS de viajes de Uber para identificar el posicionamiento óptimo de los taxis. Esto resulta útil, por ejemplo, para:
- Asignar cada nueva solicitud al clúster más cercano y enviar el coche más próximo a la ubicación del cliente.
- Analizar la carga de trabajo de los clústeres, por hora o día de la semana, para redistribuir coches y situarlos por adelantado en las ubicaciones más estratégicas y demandadas.
- Ajustar dinámicamente las tarifas según la relación oferta/demanda en cada clúster.
Usaremos un conjunto de datos de FiveThirtyEight sobre viajes de Uber en Nueva York en abril de 2014:
import pandas as pd
uber_data = pd.read_csv('uber-raw-data-apr14.csv')
print(f'Number of trips: {uber_data.shape[0]:,}\n\n'
f'{uber_data.head()}')
Number of trips: 564,516
Date/Time Lat Lon Base
0 4/1/2014 0:11:00 40.7690 -73.9549 B02512
1 4/1/2014 0:17:00 40.7267 -74.0345 B02512
2 4/1/2014 0:21:00 40.7316 -73.9873 B02512
3 4/1/2014 0:28:00 40.7588 -73.9776 B02512
4 4/1/2014 0:33:00 40.7594 -73.9722 B02512
Visualicemos esquemáticamente todos los puntos de recogida, teniendo en cuenta que la longitud corresponde al eje x y la latitud al eje y:
import matplotlib.pyplot as plt
plt.scatter(uber_data.iloc[:, 2], uber_data.iloc[:, 1])
plt.show()
Para agrupar los datos usaremos k-means, un algoritmo de aprendizaje no supervisado. La idea es dividir las muestras en varios grupos de varianza similar. Recibe como entrada el número de clústeres n_clusters (8 por defecto) y separa los datos en consecuencia. Para decidir el número óptimo de clústeres se usa el método del codo, que incluye:
- Entrenar varios modelos con diferente número de clústeres y recopilar el WCSS (Within Cluster Sum of Squares), la suma de distancias al cuadrado de las observaciones a su centroide más cercano.
- Representar los valores de WCSS frente al número de clústeres.
- Elegir el menor número de clústeres donde se observa una caída notable del WCSS.
from sklearn.cluster import KMeans
wcss = []
for i in range(1, 11):
kmeans = KMeans(n_clusters=i, random_state=1)
kmeans.fit(uber_data[['Lat', 'Lon']])
wcss.append(kmeans.inertia_)
plt.figure(figsize=(12, 5))
plt.plot(range(1, 11), wcss)
plt.title('Elbow Method', fontsize=25)
plt.xlabel('Number of clusters', fontsize=18)
plt.ylabel('WCSS', fontsize=18)
plt.xticks(ticks=list(range(1, 11)),
labels=['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'])
plt.show()

En nuestro caso, el número más adecuado parece ser 7. Usemos ese valor para ajustar un modelo y predecir el clúster de cada punto de recogida. Representaremos de nuevo los datos y añadiremos las ubicaciones de los siete centroides:
kmeans = KMeans(n_clusters=7, random_state=1)
kmeans.fit_predict(df[['Lat', 'Lon']])
plt.scatter(uber_data.iloc[:, 2], uber_data.iloc[:, 1])
plt.scatter(kmeans.cluster_centers_[:, 1], kmeans.cluster_centers_[:, 0], s=100, c='lime')
plt.show()
Ahora extraigamos las coordenadas exactas de todos los centroides y mostrémonlas por separado, sin los datos:
centroids = pd.DataFrame(kmeans.cluster_centers_)
centroids.columns = ['Lat', 'Lon']
print(centroids)
plt.scatter(centroids['Lon'], centroids['Lat'])
plt.show()
Lat Lon
0 40.688588 -73.965694
1 40.765423 -73.973165
2 40.788001 -73.879858
3 40.656997 -73.780035
4 40.731074 -73.998644
5 40.700541 -74.201673
6 40.971229 -73.611288
Será más ilustrativo mostrar estos centroides sobre un mapa de la ciudad de Nueva York:
import folium
centroids_values = centroids.values.tolist()
nyc_map = folium.Map(location=[40.79659011772687, -73.87341741832425], zoom_start=50000)
for point in range(0, len(centroids_values)):
folium.Marker(centroids_values[point], popup=centroids_values[point]).add_to(nyc_map)
nyc_map

Con este modelo podemos predecir el clúster más cercano para cualquier ubicación de Nueva York expresada en coordenadas geográficas. En términos prácticos, significa que Uber enviará un taxi disponible desde el punto más próximo y atenderá antes al cliente.
Busquemos el clúster más cercano al Lincoln Center for the Performing Arts, en Manhattan:
lincoln_center = [(40.7725, -73.9835)]
kmeans.predict(lincoln_center)
array([1])
Y para Howard Beach, en el distrito de Queens:
howard_beach = [(40.6571, -73.8430)]
kmeans.predict(howard_beach)
array([3])
Como siguientes pasos, podemos probar otros algoritmos de clustering, analizar diferentes cortes de datos (por hora/día/mes), encontrar los clústeres más y menos cargados o estudiar la relación entre los clústeres identificados y la variable Base del dataframe.
Otros casos de uso comunes en transporte y logística:
- precios dinámicos según oferta y demanda
- predicción de la demanda
- automatización de operaciones manuales
- vehículos autónomos
- visibilidad de la cadena de suministro
- detección de daños
- gestión de almacenes
- análisis de sentimiento de clientes
- chatbots de servicio al cliente
Data science en telecomunicaciones
En las dos últimas décadas, las tecnologías de telecomunicaciones han crecido a un ritmo vertiginoso y han entrado en una nueva etapa de desarrollo. Hoy estamos rodeados de dispositivos electrónicos de todo tipo y muchas personas dependen literalmente de Internet, especialmente de redes sociales y mensajería. A veces se critica esta dependencia por sustituir la comunicación cara a cara, pero hay que reconocer que el sector ha hecho nuestra vida mucho más fácil, permitiéndonos conectar con cualquier persona en segundos.
Esto fue especialmente cierto durante la pandemia de la COVID-19, cuando muchas empresas y centros educativos adoptaron el trabajo y el aprendizaje en remoto. En esa realidad cambiante, la calidad y fluidez de la conectividad digital cobró una importancia sin precedentes en todos los ámbitos. Los confinamientos obligaron a la gente a llamar y escribir a colegas, familiares y amigos mucho más que antes. Estas nuevas tendencias dispararon el volumen de las telecomunicaciones y, con ello, la generación de datos en el sector.
Aplicar data science a estos datos puede ayudar a la industria en muchos frentes:
- optimización de operaciones,
- optimización de la red,
- filtrado de spam,
- mejora de las transmisiones de datos,
- analítica en tiempo real,
- desarrollo de estrategias de negocio eficaces,
- campañas de marketing más efectivas,
- incremento de ingresos.
Veamos con más detalle una tarea común en telecom: detectar y filtrar mensajes no deseados.
Caso de uso en telecom: crear un filtro de spam
El filtrado de spam es esencial en la comunicación escrita moderna porque nos protege de correos y mensajes que intentan estafarnos a diario. Técnicamente, es otro problema de clasificación: basándose en datos históricos, cada nuevo mensaje se etiqueta como ham (normal) o como spam; si es ham llega a la bandeja de entrada y, si es spam, se bloquea o se envía a la carpeta correspondiente.
Un algoritmo supervisado muy popular para este fin es el clasificador Naive Bayes. Se basa en el teorema homónimo de la teoría de la probabilidad y es "ingenuo" porque asume que todas las palabras del mensaje son independientes entre sí. Esta suposición no es del todo cierta, ya que ignora los embeddings naturales y el contexto, pero en la mayoría de tareas de clasificación de texto con pocos datos funciona muy bien y ofrece predicciones precisas.
Existen varias variantes de Naive Bayes, cada una con su ámbito de aplicación: multinomial, Bernoulli, gaussiano y flexible Bayes. Para detección de spam, la más adecuada suele ser la versión multinomial, basada en recuentos discretos de frecuencia de las características (recuentos de palabras por mensaje).
Apliquemos Naive Bayes multinomial al SMS Spam Collection Data Set del UCI Machine Learning Repository.
import pandas as pd
sms_data = pd.read_csv('SMSSpamCollection', sep='\t', header=None, names=['Label', 'SMS'])
print(f'Number of messages: {sms_data.shape[0]:,}\n\n'
f'{sms_data.head()}')
Number of messages: 5,572
Label SMS
0 ham Go until jurong point, crazy.. Available only ...
1 ham Ok lar... Joking wif u oni...
2 spam Free entry in 2 a wkly comp to win FA Cup fina...
3 ham U dun say so early hor... U c already then say...
4 ham Nah I don't think he goes to usf, he lives aro...
Hay 5.572 mensajes clasificados manualmente. ¿Qué porcentaje es spam?
round(sms_data['Label'].value_counts()*100/len(sms_data)).convert_dtypes()
ham 87
spam 13
Name: Label, dtype: Int64
El 13% de los SMS se identificaron manualmente como spam.
Para preparar los datos para Naive Bayes multinomial, primero debemos completar estos pasos:
- Codificar las etiquetas de texto a formato numérico. En nuestro caso son binarias, así que usaremos 0/1.
- Extraer las variables predictoras y la variable objetivo.
- Dividir en conjuntos de entrenamiento y prueba.
- Vectorizar los textos de la columna SMS de los conjuntos de entrenamiento y prueba para obtener matrices CSR (compressed sparse row).
El cuarto paso requiere algo más de explicación. Creamos un objeto vectorizador, lo ajustamos con el vocabulario (todas las palabras únicas de los mensajes del conjunto de entrenamiento con sus frecuencias) y transformamos los conjuntos de entrenamiento y prueba en matrices. El resultado son dos matrices donde las columnas son las palabras únicas del entrenamiento, las filas son los mensajes y las celdas contienen los recuentos de cada palabra por mensaje.
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
# Encoding labels
sms_data = sms_data.replace('ham', 0).replace('spam', 1)
X = sms_data['SMS'].values
y = sms_data['Label'].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
# Vectorizing strings from the 'SMS' column
cv = CountVectorizer(max_df=0.95)
cv.fit(X_train)
X_train_csr_matrix = cv.transform(X_train)
X_test_csr_matrix = cv.transform(X_test)
A continuación entrenamos Naive Bayes multinomial con parámetros por defecto y comprobamos su precisión:
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, f1_score
clf = MultinomialNB()
clf.fit(X_train_csr_matrix, y_train)
predictions = clf.predict(X_test_csr_matrix)
print(f'Model accuracy:\n'
f'Accuracy score: {accuracy_score(y_test, predictions):.3f}\n'
f'F1-score: {f1_score(y_test, predictions):.3f}\n')
Model accuracy:
Accuracy score: 0.990
F1-score: 0.962
El resultado es un filtro de spam de muy alta precisión.
Como siguientes pasos, podemos probar otros métodos de partición train/test, mejorar la vectorización ajustando algunos de sus numerosos parámetros (por ejemplo, el umbral para palabras demasiado frecuentes tanto en spam como en ham), revisar los casos raros en los que el clasificador falla para entender por qué ocurre, visualizar las palabras más frecuentes en spam y ham con una nube de palabras (tras limpiar y eliminar stopwords o términos poco informativos) y, por último, aplicar otros algoritmos de machine o deep learning (SVM, árboles de decisión, redes neuronales) y comparar resultados con Naive Bayes.
Otros casos de uso comunes en telecom:
- segmentación de clientes
- desarrollo de producto
- análisis de registros de llamadas (CDR)
- sistemas de recomendación
- predicción de abandono de clientes
- marketing dirigido
- detección de fraude
- gestión y optimización de redes
- mayor seguridad de la red
- optimización de precios
- predicción del valor del ciclo de vida del cliente
Casos prácticos de data science: cursos
Hemos recorrido un buen trecho y visto en detalle numerosas aplicaciones de data science en distintos campos. Si ahora te apetece aprender más casos de uso con datos reales y aplicar tus nuevos conocimientos y habilidades técnicas para resolver tareas prácticas en tu ámbito, estos cursos cortos y para principiantes pueden ayudarte:
- Case Study: School Budgeting with Machine Learning in Python. En este curso basado en un caso práctico de una competición de machine learning en DrivenData, explorarás un problema de presupuestación en distritos escolares y cómo facilitar que los centros comparen su gasto con otros. Aplicando técnicas de lenguaje natural, prepararás los presupuestos y crearás un modelo que clasifique automáticamente sus partidas, empezando por una versión sencilla y avanzando gradualmente. Además, podrás analizar la solución ganadora y consultar otros envíos de participantes.
- Analyzing Marketing Campaigns with pandas. pandas es la librería más popular de Python, y dominar su caja de herramientas es imprescindible para cualquier data scientist. En este curso práctico, reforzarás los fundamentos de Python y pandas (añadir columnas, combinar/segmentar datasets, trabajar con fechas, visualizar en matplotlib) usando un dataset ficticio de marketing de un negocio de suscripción online. Practicarás cómo traducir preguntas típicas de marketing en métricas medibles: "¿Cómo ha funcionado esta campaña?", "¿Por qué rinde por debajo un canal?", "¿Qué canal trae más suscriptores?", etc.
- Analyzing US Census Data in Python. Aprenderás a moverte por el Censo Decenal y la American Community Survey anual para extraer datos demográficos y socioeconómicos como ingresos de los hogares, desplazamientos, raza o estructura familiar. Usarás Python para solicitar datos de distintas geografías a la API del Census y pandas para manipularlos y obtener insights. Además, practicarás cartografía con geopandas.
- Case Study: Exploratory Data Analysis in R. Este curso corto es ideal si ya tienes nociones básicas de manipulación y visualización en R. Pondrás en práctica tus habilidades con un dataset real para explorar el historial de votaciones de la Asamblea General de la ONU: tendencias por países, a lo largo del tiempo y por temas internacionales. Realizarás un análisis exploratorio de principio a fin, ganarás práctica con dplyr y ggplot2 y aprenderás nuevas técnicas.
- Human Resources Analytics: Exploring Employee Data in R. R destaca por su orientación al análisis estadístico. En este curso aprovecharás esa ventaja para manipular, visualizar y realizar pruebas estadísticas en una serie de casos de RR. HH. Las técnicas de data science llegaron a recursos humanos relativamente hace poco, pero hoy representan una vía muy prometedora: muchas empresas confían cada vez más en sus departamentos de RR. HH. para generar insights y recomendaciones accionables a partir de la base de datos de sus empleados.
- Data-Driven Decision Making in SQL. Aprenderás a usar SQL para apoyar la toma de decisiones y reportar resultados a dirección. El caso práctico se centra en una empresa de alquiler de películas online con base de datos de clientes, valoraciones, información de actores, etc. Entre las tareas: consultas SQL para estudiar preferencias, engagement y evolución de ventas. Verás extensiones de SQL para OLAP que ayudan a extraer insights clave de datos multidimensionales complejos.
Tanto si quieres convertirte en un experto en data science como si buscas habilidades de programación útiles para extraer insights basados en datos en tu campo, estos recursos son un gran punto de partida.
Conclusión
En resumen, en este artículo hemos investigado qué es data science desde varios ángulos, en qué se diferencia de la analítica de datos, en qué ámbitos se aplica, qué es un caso de uso y una hoja de ruta general para resolverlo con éxito. Hemos visto cómo puede ayudar en tareas reales de sectores en demanda. Tras repasar muchas aplicaciones existentes y potenciales, nos centramos en los casos más comunes de cada campo y mostramos cómo resolverlos con algoritmos de data science y análisis de datos. Si quieres conocer casos de uso en otras industrias, echa un vistazo a nuestros artículos sobre banca, marketing y ventas. Por último, revisamos varios cursos online útiles para profundizar en otros casos prácticos.
Una última reflexión: ninguno de los sectores analizados es nuevo. De hecho, algunos, como la medicina o las ventas, existen desde hace siglos. A lo largo de su historia, mucho antes de la era de la digitalización, esos datos también se recopilaban de una u otra forma: se escribían en libros y documentos, y se guardaban en archivos y bibliotecas. Lo que sí ha cambiado de forma drástica con las nuevas tecnologías es la comprensión del enorme potencial que encierran los datos y la importancia vital de registrarlos, recopilarlos y almacenarlos de forma adecuada. Gracias a estos esfuerzos y a la mejora continua de los sistemas de gestión de datos, hoy se acumulan grandes volúmenes de datos en todas las industrias para su análisis y predicción.





