Share via


Ciencia de datos con una instancia de Data Science Virtual Machine de Ubuntu en Azure

En este tutorial se describe cómo completar varias tareas comunes de ciencia de datos con Ubuntu Data Science Virtual Machine (DSVM). La DSVM de Ubuntu es una imagen de máquina virtual disponible en Azure, con una colección de herramientas preinstalada que se usa habitualmente para el análisis de datos y el aprendizaje automático. El Aprovisionar Data Science Virtual Machine de Ubuntu elemento del recurso define los componentes de software clave. La imagen de DSVM facilita la introducción a la ciencia de datos en unos minutos, lo que evita la necesidad de instalar y configurar individualmente cada una de las herramientas. Puede escalar verticalmente fácilmente DSVM si es necesario y puede detenerlo cuando no esté en uso. El recurso de DSVM es tanto elástico como rentable.

En este tutorial analizamos el conjunto de datos spambase. Spambase es un conjunto de correos electrónicos que se marcan como correo no deseado o ham (no es correo no deseado). Spambase también contiene algunas estadísticas sobre el contenido del correo electrónico. Tratamos las estadísticas más adelante en el tutorial.

Requisitos previos

Para poder usar una instancia de DSVM de Linux, debe cubrir estos requisitos previos:

Descarga del conjunto de datos spambase

El conjunto de datosspambase es un conjunto bastante pequeño de datos que contienen 4601 ejemplos. El tamaño práctico y manejable de este recurso facilita la presentación de algunas de las características clave de DSVM debido a los modestos requisitos de recursos.

Nota:

Este tutorial se creó mediante una DSVM de Linux de tamaño V2 D2. Puede usar un DSVM de este tamaño para completar los procedimientos que se muestran en este tutorial.

Para obtener más espacio de almacenamiento, puede crear más discos y conectarlos a la instancia de DSVM. Los discos usan almacenamiento persistente de Azure, por lo que sus datos se conservan incluso si el servidor se vuelve a aprovisionar debido al cambio de tamaño o a un apagado. Para agregar un disco y conectarlo a DSVM, complete los pasos que se describen en Adición de un disco a una máquina virtual de Linux. Los pasos para agregar un disco usan la CLI de Azure, que ya está instalada en DSVM. Puede completar los pasos completamente desde la propia instancia de DSVM. Como otra opción para aumentar el almacenamiento, puede usar Azure Files.

Para descargar los datos, abra una ventana de terminal y, a continuación, ejecute este comando:

wget --no-check-certificate https://archive.ics.uci.edu/ml/machine-learning-databases/spambase/spambase.data

El archivo descargado no tiene ninguna fila de encabezado. Vamos a crear otro archivo que tenga un encabezado. Ejecute este comando para crear un archivo con los encabezados adecuados:

echo 'word_freq_make, word_freq_address, word_freq_all, word_freq_3d,word_freq_our, word_freq_over, word_freq_remove, word_freq_internet,word_freq_order, word_freq_mail, word_freq_receive, word_freq_will,word_freq_people, word_freq_report, word_freq_addresses, word_freq_free,word_freq_business, word_freq_email, word_freq_you, word_freq_credit,word_freq_your, word_freq_font, word_freq_000, word_freq_money,word_freq_hp, word_freq_hpl, word_freq_george, word_freq_650, word_freq_lab,word_freq_labs, word_freq_telnet, word_freq_857, word_freq_data,word_freq_415, word_freq_85, word_freq_technology, word_freq_1999,word_freq_parts, word_freq_pm, word_freq_direct, word_freq_cs, word_freq_meeting,word_freq_original, word_freq_project, word_freq_re, word_freq_edu,word_freq_table, word_freq_conference, char_freq_semicolon, char_freq_leftParen,char_freq_leftBracket, char_freq_exclamation, char_freq_dollar, char_freq_pound, capital_run_length_average,capital_run_length_longest, capital_run_length_total, spam' > headers

A continuación, concatene los dos archivos juntos:

cat spambase.data >> headers
mv headers spambaseHeaders.data

El conjunto de datos tiene varios tipos de estadísticas para cada correo electrónico:

  • Las columnas como word_freq_WORD indican el porcentaje de palabras del correo electrónico que coinciden con WORD. Por ejemplo, si word_freq_make es 1, hacer era el 1 % de todas las palabras del correo electrónico.
  • Las columnas como char_freq_CHAR indican el porcentaje de todos los caracteres del correo electrónico que se CHAR.
  • capital_run_length_longest es la mayor longitud de una secuencia de letras mayúsculas.
  • capital_run_length_average es la longitud media de todas las secuencias de letras mayúsculas.
  • capital_run_length_total es la longitud total de todas las secuencias de letras mayúsculas.
  • spam indica si el correo electrónico se considera correo no deseado o no (1 = es correo no deseado, 0 = no es correo no deseado).

Exploración del conjunto de datos mediante R Open

Vamos a examinar los datos y usar R para realizar algún aprendizaje automático básico. DSVM viene con CRAN R preinstalado.

Para obtener copias de los ejemplos de código usados en este tutorial, use Git para clonar el repositorio Azure-Machine-Learning-Data-Science . Git está preinstalado en DSVM. En la línea de comandos de Git, ejecute:

git clone https://github.com/Azure/Azure-MachineLearning-DataScience.git

Abra una ventana de terminal e inicie una nueva sesión de R en la consola interactiva de R. Para importar los datos y configurar el entorno, ejecute:

data <- read.csv("spambaseHeaders.data")
set.seed(123)

En este ejemplo de código se muestran estadísticas de resumen sobre cada columna:

summary(data)

Para tener una vista diferente de los datos:

str(data)

Esta vista muestra el tipo de cada variable y los primeros valores del conjunto de datos.

La columna spam se leyó como un entero, pero es en realidad una variable (o factor) categórica. Para establecer su tipo:

data$spam <- as.factor(data$spam)

Para algunos análisis exploratorios, use el paquete ggplot2, una conocida biblioteca de grafos para R. El paquete ggplot2 está preinstalado en DSVM. Según los datos de resumen que se mostraron anteriormente, tenemos estadísticas de resumen sobre la frecuencia del carácter de signo de exclamación. Para trazar estas frecuencias aquí, ejecute estos comandos:

library(ggplot2)
ggplot(data) + geom_histogram(aes(x=char_freq_exclamation), binwidth=0.25)

Dado que la barra cero sesga el trazado, vamos a eliminarla:

email_with_exclamation = data[data$char_freq_exclamation > 0, ]
ggplot(email_with_exclamation) + geom_histogram(aes(x=char_freq_exclamation), binwidth=0.25)

Densidad notrivial superior a 1 que parece interesante. Echemos un vistazo solo a esos datos:

ggplot(data[data$char_freq_exclamation > 1, ]) + geom_histogram(aes(x=char_freq_exclamation), binwidth=0.25)

A continuación, los vamos a dividir en: es correo no deseado y no es correo no deseado:

ggplot(data[data$char_freq_exclamation > 1, ], aes(x=char_freq_exclamation)) +
geom_density(lty=3) +
geom_density(aes(fill=spam, colour=spam), alpha=0.55) +
xlab("spam") +
ggtitle("Distribution of spam \nby frequency of !") +
labs(fill="spam", y="Density")

Estos ejemplos deben ayudarle a realizar trazados similares y explorar datos en las otras columnas.

Entrenamiento y prueba de un modelo de Machine Learning

Vamos a entrenar algunos modelos de aprendizaje automático para identificar los correos electrónicos del conjunto de datos que contienen correo no deseado o jamón. En esta sección, entrenamos un modelo de árbol de decisión y un modelo de bosque aleatorio. A continuación, probamos la precisión de las predicciones.

Nota

El paquete rpart (árboles de regresión y partición recursiva) usado en el siguiente código ya está instalado en DSVM.

En primer lugar, vamos a dividir el conjunto de datos en conjuntos de entrenamiento y conjuntos de prueba:

rnd <- runif(dim(data)[1])
trainSet = subset(data, rnd <= 0.7)
testSet = subset(data, rnd > 0.7)

Luego, crearemos un árbol de decisiones para clasificar los correos electrónicos:

require(rpart)
model.rpart <- rpart(spam ~ ., method = "class", data = trainSet)
plot(model.rpart)
text(model.rpart)

Este es el resultado:

Diagrama que muestra el árbol de decisión creado.

Use este ejemplo de código para determinar el rendimiento en el conjunto de entrenamiento:

trainSetPred <- predict(model.rpart, newdata = trainSet, type = "class")
t <- table(`Actual Class` = trainSet$spam, `Predicted Class` = trainSetPred)
accuracy <- sum(diag(t))/sum(t)
accuracy

Para determinar cómo funciona en el conjunto de pruebas, ejecute este código:

testSetPred <- predict(model.rpart, newdata = testSet, type = "class")
t <- table(`Actual Class` = testSet$spam, `Predicted Class` = testSetPred)
accuracy <- sum(diag(t))/sum(t)
accuracy

Vamos a probar un modelo de bosque aleatorio. Un bosque aleatorio entrena varios árboles de decisión. Genera una clase que es el valor de modo de las clasificaciones de todos los árboles de decisión individuales. Proporcionan un enfoque de aprendizaje automático más poderoso ya que corrigen la tendencia de un modelo de árbol de decisiones a saturar en exceso un conjunto de datos de entrenamiento.

require(randomForest)
trainVars <- setdiff(colnames(data), 'spam')
model.rf <- randomForest(x=trainSet[, trainVars], y=trainSet$spam)

trainSetPred <- predict(model.rf, newdata = trainSet[, trainVars], type = "class")
table(`Actual Class` = trainSet$spam, `Predicted Class` = trainSetPred)

testSetPred <- predict(model.rf, newdata = testSet[, trainVars], type = "class")
t <- table(`Actual Class` = testSet$spam, `Predicted Class` = testSetPred)
accuracy <- sum(diag(t))/sum(t)
accuracy

Tutoriales del aprendizaje profundo

Además de los ejemplos basados en marcos, también se proporciona un conjunto de tutoriales completos. Estos tutoriales le ayudan a iniciar el desarrollo de aplicaciones de aprendizaje profundo en dominios de imagen, reconocimiento del lenguaje de texto, etc.

  • Ejecución de redes neuronales en distintos marcos: se trata de un tutorial completo en el que se muestra cómo migrar código de un marco a otro. También se muestra cómo comparar el rendimiento del modelo y el tiempo de ejecución entre marcos.

  • Guía paso a paso para crear una solución de un extremo a otro para detectar productos dentro de imágenes: la técnica de detección de imágenes puede localizar y clasificar objetos dentro de las imágenes. La tecnología puede proporcionar enormes recompensas en muchos dominios empresariales reales. Por ejemplo, los minoristas pueden usar esta técnica para determinar qué producto ha recogido un cliente del estante. A su vez, esta información permite que las tiendas administren el inventario de productos.

  • Aprendizaje profundo para audio: en este tutorial se muestra cómo entrenar un modelo de aprendizaje profundo para detectar eventos de audio en el conjunto de datos de sonidos urbanos. El tutorial proporciona información general sobre cómo trabajar con datos de audio.

  • Clasificación de documentos de texto: en este tutorial se muestra cómo crear y entrenar dos arquitecturas de red neuronal diferentes: la red de atención jerárquica y la memoria a corto plazo (LSTM). Para clasificar documentos de texto, estas redes neuronales usan la API keras para el aprendizaje profundo. Keras es un front-end para tres de los marcos de aprendizaje profundo más populares: Microsoft Cognitive Toolkit, TensorFlow y Theano.

Otras herramientas

En las secciones restantes se muestra cómo usar algunas de las herramientas preinstaladas en DSVM de Linux. Examinamos estas herramientas:

  • XGBoost
  • Python
  • JupyterHub
  • Rattle
  • PostgreSQL y SQuirreL SQL
  • Azure Synapse Analytics (anteriormente SQL DW)

XGBoost

XGBoost proporciona una implementación de árbol ampliada rápida y precisa.

require(xgboost)
data <- read.csv("spambaseHeaders.data")
set.seed(123)

rnd <- runif(dim(data)[1])
trainSet = subset(data, rnd <= 0.7)
testSet = subset(data, rnd > 0.7)

bst <- xgboost(data = data.matrix(trainSet[,0:57]), label = trainSet$spam, nthread = 2, nrounds = 2, objective = "binary:logistic")

pred <- predict(bst, data.matrix(testSet[, 0:57]))
accuracy <- 1.0 - mean(as.numeric(pred > 0.5) != testSet$spam)
print(paste("test accuracy = ", accuracy))

XGBoost también se puede llamar desde Python o una línea de comandos.

Python

Para el desarrollo de Python, las distribuciones de Python de Anaconda 3.5 y 2.7 están preinstaladas en DSVM.

Nota:

La distribución de Anaconda incluye Conda. Puede usar Conda para crear entornos de Python personalizados que tengan diferentes versiones o paquetes instalados en ellos.

Vamos a leer en parte del conjunto de datos de la base de correo no deseado y clasificar los correos electrónicos con máquinas vectoriales de soporte técnico en Scikit-learn:

import pandas
from sklearn import svm
data = pandas.read_csv("spambaseHeaders.data", sep = ',\s*')
X = data.ix[:, 0:57]
y = data.ix[:, 57]
clf = svm.SVC()
clf.fit(X, y)

Para realizar predicciones:

clf.predict(X.ix[0:20, :])

Para mostrar cómo publicar un punto de conexión de Azure Machine Learning, vamos a crear un modelo más básico. Usamos las tres variables que usamos al publicar el modelo de R anteriormente:

X = data[["char_freq_dollar", "word_freq_remove", "word_freq_hp"]]
y = data.ix[:, 57]
clf = svm.SVC()
clf.fit(X, y)

JupyterHub

La distribución de Anaconda en DSVM incluye un cuaderno de Jupyter Notebook. Este recurso es un entorno multiplataforma para compartir código y análisis de Python, R o Julia. Se accede a Jupyter Notebook mediante JupyterHub. Para iniciar sesión, se usa el nombre de usuario local y la contraseña de Linux en https://<nombre DNS o dirección IP de DSVM>:8000/. Puede encontrar todos los archivos de configuración de JupyterHub en /etc/jupyterhub.

Nota:

Para usar el Administrador de paquetes de Python (mediante el comando pip ) desde un cuaderno de Jupyter Notebook ubicado en el kernel actual, use este comando en la celda de código:

 import sys
 ! {sys.executable} -m pip install numpy -y

Para usar el instalador de Conda (mediante el comando conda ) desde un cuaderno de Jupyter Notebook ubicado en el kernel actual, use este comando en una celda de código:

 import sys
 ! {sys.prefix}/bin/conda install --yes --prefix {sys.prefix} numpy

Hay varios cuadernos de muestra ya instalados en DSVM:

Nota

El lenguaje Julia también está disponible desde la línea de comandos en DSVM de Linux.

Rattle

Puede usar la Rattle (RAnalíticaTool To Lobtener Easily) para la minería de datos. Rattle presenta una interfaz intuitiva que permite cargar, explorar y transformar los datos y compilar y evaluar modelos de forma fácil. En Rattle: A Data Mining GUI for R (Rattle: una GUI de minería de datos para R), se proporciona un tutorial que muestra sus características.

Ejecute estos comandos para instalar e iniciar Rattle:

if(!require("rattle")) install.packages("rattle")
require(rattle)
rattle()

Nota:

No es necesario instalar Rattle en DSVM. Sin embargo, es posible que se le pida que instale paquetes adicionales cuando se abra Rattle.

Rattle usa una interfaz de usuario basada en pestañas. La mayoría de las pestañas corresponden a pasos del Proceso de ciencia de datos en equipo, como cargar los datos o explorarlos. El proceso de ciencia de los datos fluye de izquierda a derecha por las pestañas. La última pestaña contiene un registro de los comandos de R que Rattle ejecutó.

Para cargar y configurar el conjunto de datos:

  1. Para cargar el archivo, seleccione la pestaña Datos
  2. Elija el selector junto a Nombre de archivoy, a continuación, seleccione spambaseHeaders.data
  3. Para cargar el archivo seleccione Ejecutar. Debería ver un resumen de cada columna, incluido su tipo de datos identificado, ya sea una entrada, destino u otro tipo de variable, y el número de valores únicos
  4. Rattle identificó correctamente el columna de correo no deseado como destino. Seleccione la columna correo no deseado y, a continuación, establezca el tipo de datos de destino en Categoría

Para explorar los datos:

  1. Seleccione la pestaña Explorar
  2. Para ver información sobre los tipos de variables y algunas estadísticas de resumen, seleccione Resumen>Ejecutar.
  3. Para ver otros tipos de estadísticas sobre cada variable, seleccione otras opciones, como Describir o Datos básicos.

También puede usar la pestaña Explorar para generar trazados detallados. Para trazar un histograma de los datos:

  1. Seleccione Distribuciones
  2. Para word_freq_remove y word_freq_you, seleccione histograma
  3. Seleccione Execute(Ejecutar). Debería ver ambos trazados de densidad en una sola ventana de grafo, donde la palabra usted aparece claramente con mucha más frecuencia en los correos electrónicos, en comparación con quitar

Los trazados de correlación también son interesantes. Para crear un trazado:

  1. Para Tipo, seleccione Correlación
  2. Seleccione Ejecutar.
  3. Rattle le avisa de que recomienda 40 variables como máximo. Seleccione para ver el trazado

Hay algunas correlaciones interesantes que surgen. Por ejemplo, la tecnología se correlaciona fuertemente con HP y laboratorios. También se correlaciona fuertemente con 650 porque el código de área de los donantes del conjunto de datos es 650.

Los valores numéricos de las correlaciones entre palabras están disponibles en la ventana de exploración. Es interesante advertir, por ejemplo, que technology está correlacionada negativamente con your y money.

Rattle puede transformar el conjunto de datos para tratar algunos problemas comunes. Por ejemplo, puede volver a escalar características, imputar valores que faltan, administrar los valores atípicos y quitar variables u observaciones con datos que faltan. Rattle también puede identificar reglas de asociación entre observaciones y variables. Este tutorial introductorio no cubre estas pestañas.

Rattle también puede controlar los análisis de clústeres. Vamos a excluir algunas características para que la salida sea más fácil de leer. En la pestaña Datos, seleccione Omitir junto a cada una de las variables, excepto estos 10 elementos:

  • word_freq_hp
  • word_freq_technology
  • word_freq_george
  • word_freq_remove
  • word_freq_your
  • word_freq_dollar
  • word_freq_money
  • capital_run_length_longest
  • word_freq_business
  • spam

Vuelva a la pestaña Clúster. Seleccione KMeans y, a continuación, establezca el número de clústeres en 4. Seleccione Execute(Ejecutar). La ventana de salida muestra los resultados. Un clúster tiene altas frecuencias de george y hp, y probablemente es un correo electrónico empresarial legítimo.

Para crear un modelo de aprendizaje automático de árbol de decisiones básico:

  1. Seleccione la pestaña Modelo
  2. Para la Tipo , seleccione árbol
  3. Seleccione Ejecutar para mostrar el árbol en forma de texto en la ventana de salida.
  4. Seleccione el botón Draw (Dibujar) para ver una versión gráfica. El árbol de decisión es similar al árbol que obtuvimos anteriormente con rpart.

Rattle puede ejecutar varios métodos de aprendizaje automático y evaluarlos rápidamente. Esta es una característica útil. Siga este procedimiento:

  1. Para Tipo, seleccione Todos los
  2. Seleccione Ejecutar.
  3. Cuando Rattle termine de ejecutarse, puede seleccionar cualquier valor Tipo , como SVMy ver los resultados
  4. También puede comparar el rendimiento de los modelos en el conjunto de validación con la pestaña Evaluar . Por ejemplo, la selección Error Matrix (Matriz de errores) muestra la matriz de confusiones, los errores generales y la media de errores de clase de cada modelo en el conjunto de validación. También puede trazar curvas ROC, ejecutar análisis de confidencialidad y realizar otros tipos de evaluaciones de modelos.

Cuando termine de compilar los modelos, seleccione la pestaña Registro para ver el código de R que Rattle ejecutó durante la sesión. Puede seleccionar el botón Export (Exportar) para guardarlo.

Nota

La versión actual de Rattle contiene un error. Para modificar el script o usarlo a fin de repetir los pasos más adelante, debe insertar un carácter # delante de Export this log... (Exportar este registro...) en el texto del registro.

PostgreSQL y SQuirreL SQL

La DSVM viene con PostgreSQL instalado. PostgreSQL es una base de datos relacional de código abierto sofisticada. En esta sección se muestra cómo cargar el conjunto de datos de base de correo no deseado en PostgreSQL y, a continuación, consultarlo.

Antes de cargar los datos, debe permitir la autenticación de contraseña desde el host local. En un símbolo del sistema, ejecute:

sudo gedit /var/lib/pgsql/data/pg_hba.conf

Cerca de la parte inferior del archivo de configuración, varias líneas detallan las conexiones permitidas:

# "local" is only for Unix domain socket connections:
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

Cambie la línea de conexiones locales IPv4 para usar md5 en lugar de identificador, por lo que podemos iniciar sesión con un nombre de usuario y una contraseña:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5

A continuación, reinicie el servicio PostgreSQL:

sudo systemctl restart postgresql

Para iniciar psql (un terminal interactivo para PostgreSQL) con el usuario de Postgres integrado, ejecute el siguiente comando:

sudo -u postgres psql

Cree una cuenta de usuario con el nombre de usuario de la cuenta de Linux que usó para iniciar sesión. Cree una contraseña:

CREATE USER <username> WITH CREATEDB;
CREATE DATABASE <username>;
ALTER USER <username> password '<password>';
\quit

Inicie sesión en psql:

psql

Importe los datos en una base de datos:

CREATE DATABASE spam;
\c spam
CREATE TABLE data (word_freq_make real, word_freq_address real, word_freq_all real, word_freq_3d real,word_freq_our real, word_freq_over real, word_freq_remove real, word_freq_internet real,word_freq_order real, word_freq_mail real, word_freq_receive real, word_freq_will real,word_freq_people real, word_freq_report real, word_freq_addresses real, word_freq_free real,word_freq_business real, word_freq_email real, word_freq_you real, word_freq_credit real,word_freq_your real, word_freq_font real, word_freq_000 real, word_freq_money real,word_freq_hp real, word_freq_hpl real, word_freq_george real, word_freq_650 real, word_freq_lab real,word_freq_labs real, word_freq_telnet real, word_freq_857 real, word_freq_data real,word_freq_415 real, word_freq_85 real, word_freq_technology real, word_freq_1999 real,word_freq_parts real, word_freq_pm real, word_freq_direct real, word_freq_cs real, word_freq_meeting real,word_freq_original real, word_freq_project real, word_freq_re real, word_freq_edu real,word_freq_table real, word_freq_conference real, char_freq_semicolon real, char_freq_leftParen real,char_freq_leftBracket real, char_freq_exclamation real, char_freq_dollar real, char_freq_pound real, capital_run_length_average real, capital_run_length_longest real, capital_run_length_total real, spam integer);
\copy data FROM /home/<username>/spambase.data DELIMITER ',' CSV;
\quit

Ahora, vamos a explorar los datos y ejecutar algunas consultas con SQuirreL SQL, una herramienta gráfica que puede interactuar con bases de datos a través de un controlador JDBC.

En primer lugar, en el menú Aplicaciones, abra SQuirreL SQL. Para configurar el controlador:

  1. Seleccione Windows>Ver controladores
  2. Haga clic con el botón derecho en PostgreSQL y seleccione Modificar controlador
  3. Seleccione ruta de acceso de clase adicional>Agregar
  4. En nombre de archivo, escriba /usr/share/java/jdbcdrivers/postgresql-9.4.1208.jre6.jar
  5. Seleccione Abrir.
  6. Seleccione Mostrar controladores. Para nombre de clase, seleccione org.postgresql.Drivery, a continuación, seleccione Aceptar

Para configurar la conexión al servidor local:

  1. Seleccione Windows>View Aliases (Ver alias).
  2. Seleccione el botón + para crear un nuevo alias. Para el nuevo nombre de alias, escriba base de datos de correo no deseado
  3. En Controlador, seleccione PostgreSQL
  4. Establezca la dirección URL en jdbc:postgresql://localhost/spam
  5. Escribe tu nombre de usuario y contraseña.
  6. Seleccione Aceptar.
  7. Para abrir la ventana Conexión, haga doble clic en el alias debase de datos de correo no deseado
  8. Seleccione Conectar.

Para ejecutar algunas consultas:

  1. Seleccione la pestaña SQL
  2. En el cuadro de consulta de la parte superior de la pestaña SQL, escriba una consulta básica: por ejemplo, SELECT * from data;
  3. Presione CTRL + ENTRAR para ejecutar la consulta. De manera predeterminada, SQuirreL SQL devuelve las primeras 100 filas de la consulta

Puede ejecutar muchas más consultas para explorar estos datos. Por ejemplo, ¿de qué modo la frecuencia de la palabra make es diferente en es correo no deseado y no es correo no deseado?

SELECT avg(word_freq_make), spam from data group by spam;

¿Cuáles son las características del correo electrónico que contienen con frecuencia 3d?

SELECT * from data order by word_freq_3d desc;

La mayoría de los correos electrónicos que tienen una alta aparición de 3d son correo no deseado aparente. Esta información puede ser útil para compilar un modelo predictivo para clasificar los correos electrónicos.

Para el aprendizaje automático mediante datos almacenados en una base de datos PostgreSQL, MADlib funciona bien.

Azure Synapse Analytics (anteriormente SQL DW)

Azure Synapse Analytics es una base de datos de escalabilidad horizontal basada en la nube que puede procesar grandes volúmenes de datos, tanto relacionales como no relacionales. Para más información, visite ¿Qué es Azure Synapse Analytics?

Para conectarse al almacenamiento de datos y crear la tabla, ejecute este comando desde un símbolo del sistema:

sqlcmd -S <server-name>.database.windows.net -d <database-name> -U <username> -P <password> -I

En el símbolo del sistema de sqlcmd, ejecute este comando:

CREATE TABLE spam (word_freq_make real, word_freq_address real, word_freq_all real, word_freq_3d real,word_freq_our real, word_freq_over real, word_freq_remove real, word_freq_internet real,word_freq_order real, word_freq_mail real, word_freq_receive real, word_freq_will real,word_freq_people real, word_freq_report real, word_freq_addresses real, word_freq_free real,word_freq_business real, word_freq_email real, word_freq_you real, word_freq_credit real,word_freq_your real, word_freq_font real, word_freq_000 real, word_freq_money real,word_freq_hp real, word_freq_hpl real, word_freq_george real, word_freq_650 real, word_freq_lab real,word_freq_labs real, word_freq_telnet real, word_freq_857 real, word_freq_data real,word_freq_415 real, word_freq_85 real, word_freq_technology real, word_freq_1999 real,word_freq_parts real, word_freq_pm real, word_freq_direct real, word_freq_cs real, word_freq_meeting real,word_freq_original real, word_freq_project real, word_freq_re real, word_freq_edu real,word_freq_table real, word_freq_conference real, char_freq_semicolon real, char_freq_leftParen real,char_freq_leftBracket real, char_freq_exclamation real, char_freq_dollar real, char_freq_pound real, capital_run_length_average real, capital_run_length_longest real, capital_run_length_total real, spam integer) WITH (CLUSTERED COLUMNSTORE INDEX, DISTRIBUTION = ROUND_ROBIN);
GO

Copie los datos con bcp:

bcp spam in spambaseHeaders.data -q -c -t  ',' -S <server-name>.database.windows.net -d <database-name> -U <username> -P <password> -F 1 -r "\r\n"

Nota:

El archivo descargado contiene los finales de línea de estilo Windows. La herramienta bcp espera finales de línea de estilo Unix. Use la marca -r para indicar a bcp sobre esto.

A continuación, realice una consulta mediante sqlcmd:

select top 10 spam, char_freq_dollar from spam;
GO

También puede consultar mediante SQuirreL SQL. Siga los pasos similares a PostgreSQL mediante el uso del controlador JDBC de SQL Server. El controlador JDBC está en la carpeta /usr/share/java/jdbcdrivers/sqljdbc42.jar.