Ciência de dados com uma máquina virtual de ciência de dados do Ubuntu no Azure
Este passo a passo descreve como concluir várias tarefas comuns de ciência de dados com a Máquina Virtual de Ciência de Dados do Ubuntu (DSVM). A DSVM do Ubuntu é uma imagem de máquina virtual disponível no Azure, com uma coleção de ferramentas pré-instaladas comumente usada para análise de dados e aprendizado de máquina. O recurso Provisionar a Máquina Virtual de Ciência de Dados do Ubuntu discrimina os principais componentes de software. A imagem DSVM facilita o início da ciência de dados em apenas alguns minutos, evitando a necessidade de instalar e configurar cada uma das ferramentas individualmente. Você pode facilmente dimensionar a DSVM, se necessário, e pode pará-la quando ela não estiver em uso. O recurso DSVM é elástico e econômico.
Neste passo a passo, analisamos o conjunto de dados da base de spam. Spambase é um conjunto de e-mails que são marcados como spam ou presunto (não spam). Spambase também contém algumas estatísticas sobre o conteúdo do e-mail. Discutimos as estatísticas mais adiante no passo a passo.
Pré-requisitos
Antes de poder usar uma DSVM Linux, você deve cobrir estes pré-requisitos:
Subscrição do Azure. Para obter uma assinatura do Azure, visite Criar sua conta gratuita do Azure hoje.
Ubuntu Data Science Máquina Virtual. Para obter informações sobre o provisionamento da máquina virtual, visite Provisionar a máquina virtual de ciência de dados do Ubuntu.
X2Go instalado no seu computador com uma sessão XFCE aberta. Para obter mais informações, visite Instalar e configurar o cliente X2Go.
Faça o download do conjunto de dados da base de spam
O conjunto de dados da base de spam é um conjunto bastante pequeno de dados contendo 4.601 exemplos. O tamanho conveniente e gerenciável desse recurso facilita a exibição de alguns dos principais recursos da DSVM devido aos modestos requisitos de recursos.
Nota
Este passo a passo foi criado usando uma DSVM Linux de tamanho D2 v2. Você pode usar uma DSVM desse tamanho para concluir os procedimentos mostrados nesta explicação passo a passo.
Para obter mais espaço de armazenamento, você pode criar mais discos e anexá-los à sua DSVM. Os discos usam o armazenamento persistente do Azure, portanto, seus dados são preservados mesmo se o servidor for reprovisionado devido ao redimensionamento ou a um desligamento. Para adicionar um disco e anexá-lo à sua DSVM, conclua as etapas em Adicionar um disco a uma VM Linux. As etapas para adicionar um disco usam a CLI do Azure, que já está instalada na DSVM. Você pode concluir as etapas inteiramente a partir da própria DSVM. Como outra opção para aumentar o armazenamento, você pode usar os Arquivos do Azure.
Para transferir os dados, abra uma janela do terminal e, em seguida, execute este comando:
wget --no-check-certificate https://archive.ics.uci.edu/ml/machine-learning-databases/spambase/spambase.data
O ficheiro transferido não tem uma linha de cabeçalho. Vamos criar outro arquivo que tenha um cabeçalho. Execute este comando para criar um arquivo com os cabeçalhos apropriados:
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
Em seguida, concatene os dois arquivos juntos:
cat spambase.data >> headers
mv headers spambaseHeaders.data
O conjunto de dados tem vários tipos de estatísticas para cada e-mail:
- Colunas como word_freq_WORD indicam a percentagem de palavras no e-mail que correspondem ao WORD. Por exemplo, se word_freq_make for 1, make foi 1% de todas as palavras no e-mail.
- Colunas como char_freq_CHAR indicam a porcentagem de todos os caracteres no e-mail que são CHAR.
- capital_run_length_longest é o maior comprimento de uma sequência de letras maiúsculas.
- capital_run_length_average é o comprimento médio de todas as sequências de letras maiúsculas.
- capital_run_length_total é o comprimento total de todas as sequências de letras maiúsculas.
- spam indica se o e-mail foi considerado spam ou não (1 = spam, 0 = não spam).
Explore o conjunto de dados usando R Open
Vamos examinar os dados e usar R para fazer algum aprendizado de máquina básico. A DSVM vem com CRAN R pré-instalada.
Para obter cópias dos exemplos de código usados neste passo a passo, use o git para clonar o repositório Azure-Machine-Learning-Data-Science. O Git está pré-instalado na DSVM. Na linha de comando git, execute:
git clone https://github.com/Azure/Azure-MachineLearning-DataScience.git
Abra uma janela do terminal e inicie uma nova sessão R na consola interativa R. Para importar os dados e configurar o ambiente, execute:
data <- read.csv("spambaseHeaders.data")
set.seed(123)
Este exemplo de código mostra estatísticas de resumo sobre cada coluna:
summary(data)
Para uma visão diferente dos dados:
str(data)
Esta vista mostra-lhe o tipo de cada variável e os primeiros valores no conjunto de dados.
A coluna de spam foi lida como um inteiro, mas na verdade é uma variável (ou fator) categórica. Para definir seu tipo:
data$spam <- as.factor(data$spam)
Para algumas análises exploratórias, use o pacote ggplot2 , uma biblioteca gráfica popular para R. O pacote ggplot2 está pré-instalado na DSVM. Com base nos dados resumidos exibidos anteriormente, temos estatísticas resumidas sobre a frequência do caractere do ponto de exclamação. Para plotar essas frequências aqui, execute estes comandos:
library(ggplot2)
ggplot(data) + geom_histogram(aes(x=char_freq_exclamation), binwidth=0.25)
Como a barra zero distorce o gráfico, vamos eliminá-lo:
email_with_exclamation = data[data$char_freq_exclamation > 0, ]
ggplot(email_with_exclamation) + geom_histogram(aes(x=char_freq_exclamation), binwidth=0.25)
Uma densidade não trivial acima de 1 que parece interessante. Vejamos apenas esses dados:
ggplot(data[data$char_freq_exclamation > 1, ]) + geom_histogram(aes(x=char_freq_exclamation), binwidth=0.25)
Em seguida, divida-o por spam versus presunto:
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")
Esses exemplos devem ajudá-lo a criar gráficos semelhantes e explorar dados nas outras colunas.
Treinar e testar um modelo de aprendizado de máquina
Vamos treinar alguns modelos de aprendizado de máquina para identificar os e-mails no conjunto de dados que contêm spam ou presunto. Nesta seção, treinamos um modelo de árvore de decisão e um modelo de floresta aleatória. Em seguida, testamos a precisão das previsões.
Nota
O pacote rpart (Recursive Partitioning and Regression Trees) usado no código a seguir já está instalado na DSVM.
Primeiro, vamos dividir o conjunto de dados em conjuntos de treinamento e conjuntos de teste:
rnd <- runif(dim(data)[1])
trainSet = subset(data, rnd <= 0.7)
testSet = subset(data, rnd > 0.7)
Em seguida, crie uma árvore de decisão para classificar os e-mails:
require(rpart)
model.rpart <- rpart(spam ~ ., method = "class", data = trainSet)
plot(model.rpart)
text(model.rpart)
Eis o resultado:
Use este exemplo de código para determinar o desempenho no conjunto de treinamento:
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 o seu desempenho no conjunto de testes, execute 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 também tentar um modelo de floresta aleatório. Uma floresta aleatória treina várias árvores de decisão. Ele gera uma classe que é o valor de modo das classificações de todas as árvores de decisão individuais. Eles fornecem uma abordagem de aprendizado de máquina mais poderosa porque corrigem a tendência de um modelo de árvore de decisão sobreajustar um conjunto de dados de treinamento.
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
Tutoriais e passo a passo de aprendizagem profunda
Além dos exemplos baseados em estrutura, um conjunto de instruções passo a passo abrangentes também é fornecido. Estas instruções passo a passo ajudam você a iniciar o desenvolvimento de aplicativos de aprendizagem profunda em domínios de imagem, compreensão de linguagem de texto, etc.
Executando redes neurais em diferentes estruturas: um passo a passo abrangente que mostra como migrar código de uma estrutura para outra. Ele também mostra como comparar o desempenho do modelo e do tempo de execução entre estruturas.
Um guia prático para criar uma solução completa para detetar produtos em imagens: A técnica de deteção de imagem pode localizar e classificar objetos dentro de imagens. A tecnologia pode fornecer enormes recompensas em muitos domínios de negócios da vida real. Por exemplo, os retalhistas podem utilizar esta técnica para determinar qual o produto que um cliente retirou da prateleira. Essas informações, por sua vez, ajudam as lojas a gerenciar o estoque de produtos.
Aprendizagem profunda para áudio: Este tutorial mostra como treinar um modelo de aprendizagem profunda para deteção de eventos de áudio no conjunto de dados de sons urbanos. O tutorial fornece uma visão geral de como trabalhar com dados de áudio.
Classificação de documentos de texto: Este passo a passo demonstra como construir e treinar duas arquiteturas de redes neurais diferentes: a Rede de Atenção Hierárquica e a Memória de Longo Prazo (LSTM). Para classificar documentos de texto, essas redes neurais usam a API Keras para aprendizado profundo. Keras é um front-end para três das estruturas de aprendizagem profunda mais populares: Microsoft Cognitive Toolkit, TensorFlow e Theano.
Outras ferramentas
As seções restantes mostram como usar algumas das ferramentas pré-instaladas na DSVM Linux. Examinamos estas ferramentas:
- XGBoost
- Python
- JupyterHub
- Rattle
- PostgreSQL e SQuirreL SQL
- Azure Synapse Analytics (anteriormente SQL DW)
XGBoost
O XGBoost fornece uma implementação de árvore impulsionada rápida e 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 também pode chamar de Python ou uma linha de comando.
Python
Para desenvolvimento em Python, as distribuições Anaconda Python 3.5 e 2.7 são pré-instaladas na DSVM.
Nota
A distribuição Anaconda inclui Conda. Você pode usar o Conda para criar ambientes Python personalizados que tenham diferentes versões ou pacotes instalados neles.
Vamos ler em alguns dos conjuntos de dados da base de spam e classificar os e-mails com máquinas vetoriais de suporte no 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 fazer previsões:
clf.predict(X.ix[0:20, :])
Para demonstrar como publicar um ponto de extremidade do Azure Machine Learning, vamos criar um modelo mais básico. Usamos as três variáveis que usamos quando publicamos o modelo 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
A distribuição Anaconda na DSVM vem com um Jupyter Notebook. Este recurso é um ambiente multiplataforma para compartilhar código e análise Python, R ou Julia. O Jupyter Notebook é acessado através do JupyterHub. Você entra usando seu nome de usuário e senha Linux local em https://< DSVM DNS name or IP address>:8000/. Você pode encontrar todos os arquivos de configuração do JupyterHub em /etc/jupyterhub.
Nota
Para usar o Python Package Manager (através do pip
comando) de um Jupyter Notebook localizado no kernel atual, use este comando na célula de código:
import sys
! {sys.executable} -m pip install numpy -y
Para usar o instalador Conda (através do conda
comando) de um Jupyter Notebook localizado no kernel atual, use este comando em uma célula de código:
import sys
! {sys.prefix}/bin/conda install --yes --prefix {sys.prefix} numpy
Vários blocos de anotações de exemplo já estão instalados na DSVM:
- Exemplos de blocos de anotações Python:
- Exemplo de caderno R:
Nota
A linguagem Julia também está disponível na linha de comando na DSVM Linux.
Rattle
Você pode usar a ferramenta gráfica R Rattle (R Analytical Tool To Learn Easily) para mineração de dados. O Rattle tem uma interface intuitiva que facilita o carregamento, a exploração e a transformação de dados, bem como a criação e avaliação de modelos. Rattle: Uma GUI de mineração de dados para R fornece um passo a passo que demonstra os recursos de Rattle.
Execute estes comandos para instalar e iniciar o Rattle:
if(!require("rattle")) install.packages("rattle")
require(rattle)
rattle()
Nota
Não é necessário instalar o Rattle na DSVM. No entanto, você pode ser solicitado a instalar pacotes adicionais quando o Rattle abrir.
Rattle usa uma interface baseada em abas. A maioria das guias corresponde a etapas no Processo de Ciência de Dados da Equipe, como carregar dados ou explorar dados. O processo de ciência de dados flui da esquerda para a direita através das guias. A última guia contém um log dos comandos R que o Rattle executou.
Para carregar e configurar o conjunto de dados:
- Para carregar o arquivo, selecione a guia Dados
- Escolha o seletor ao lado de Nome do arquivo e, em seguida, selecione spambaseHeaders.data
- Para carregar o arquivo. selecione Executar. Você verá um resumo de cada coluna, incluindo seu tipo de dados identificado, seja uma entrada, destino ou outro tipo de variável e o número de valores exclusivos
- Rattle identificou corretamente a coluna de spam como o alvo. Selecione a coluna de spam e defina o Tipo de Dados de Destino como Categórico
Para explorar os dados:
- Selecione a guia Explorar
- Para exibir informações sobre os tipos de variáveis e algumas estatísticas de resumo, selecione Execução>de resumo.
- Para visualizar outros tipos de estatísticas sobre cada variável, selecione outras opções, como Descrever ou Noções básicas.
Você também pode usar a guia Explorar para gerar gráficos perspicazes. Para plotar um histograma dos dados:
- Selecionar distribuições
- Para word_freq_remove e word_freq_you, selecione Histograma
- Selecione Execute (Executar). Você deve ver ambos os gráficos de densidade em uma única janela de gráfico, onde a palavra que você claramente aparece com muito mais frequência em e-mails, em comparação com remover
Os gráficos de correlação também são interessantes. Para criar um gráfico:
- Em Tipo, selecione Correlação
- Selecione Execute (Executar)
- Rattle avisa que recomenda um máximo de 40 variáveis. Selecione Sim para visualizar o gráfico
Há algumas correlações interessantes que surgem. Por exemplo, a tecnologia está fortemente correlacionada com a HP e os laboratórios. Também se correlaciona fortemente com 650 porque o código de área dos doadores do conjunto de dados é 650.
Os valores numéricos para as correlações entre palavras estão disponíveis na janela Explorar . É interessante notar, por exemplo, que a tecnologia está negativamente correlacionada com o seu e com o dinheiro.
O Rattle pode transformar o conjunto de dados para lidar com alguns problemas comuns. Por exemplo, ele pode redimensionar recursos, imputar valores ausentes, manipular valores atípicos e remover variáveis ou observações que tenham dados ausentes. O chocalho também pode identificar regras de associação entre observações e variáveis. Este passo a passo introdutório não abrange essas guias.
Rattle também pode lidar com análises de cluster. Vamos excluir alguns recursos para tornar a saída mais fácil de ler. Na guia Dados, selecione Ignorar ao lado de cada uma das variáveis, exceto estes 10 itens:
- 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
- lixo eletrónico
Regresse ao separador Cluster. Selecione KMeans e, em seguida, defina Número de clusters como 4. Selecione Execute (Executar). A janela de saída mostra os resultados. Um cluster tem altas frequências de george e hp, e é provavelmente um e-mail comercial legítimo.
Para construir um modelo básico de aprendizado de máquina de árvore de decisão:
- Selecione a guia Modelo
- Para o Tipo, selecione Árvore
- Selecione Executar para exibir a árvore em forma de texto na janela de saída
- Selecione o botão Desenhar para visualizar uma versão gráfica. A árvore de decisão é semelhante à árvore que obtivemos anteriormente com rpart.
O Rattle pode executar vários métodos de aprendizado de máquina e avaliá-los rapidamente. Este é um recurso útil. Saiba como o fazer a seguir:
- Em Tipo, selecione Tudo
- Selecione Execute (Executar)
- Quando o Rattle terminar a execução, você poderá selecionar qualquer valor Type , como SVM, e visualizar os resultados
- Você também pode comparar o desempenho dos modelos no conjunto de validação com a guia Avaliar . Por exemplo, a seleção Matriz de erro mostra a matriz de confusão, o erro geral e o erro de classe média para cada modelo no conjunto de validação. Você também pode plotar curvas ROC, executar análise de sensibilidade e fazer outros tipos de avaliações de modelo
Quando terminar de criar seus modelos, selecione a guia Log para exibir o código R que o Rattle executou durante a sessão. Você pode selecionar o botão Exportar para salvá-lo.
Nota
A versão atual do Rattle contém um bug. Para modificar o script ou usá-lo para repetir suas etapas mais tarde, você deve inserir um # caractere na frente de Exportar este log ... no texto do log.
PostgreSQL e SQuirreL SQL
A DSVM vem com o PostgreSQL instalado. O PostgreSQL é um banco de dados relacional sofisticado e de código aberto. Esta seção mostra como carregar o conjunto de dados da base de spam no PostgreSQL e, em seguida, consultá-lo.
Antes de carregar os dados, você deve permitir a autenticação de senha do localhost. Numa linha de comandos, execute:
sudo gedit /var/lib/pgsql/data/pg_hba.conf
Perto da parte inferior do arquivo de configuração, várias linhas detalham as conexões 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
Altere a linha de conexões locais IPv4 para usar md5 em vez de ident, para que possamos entrar com um nome de usuário e senha:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
Em seguida, reinicie o serviço PostgreSQL:
sudo systemctl restart postgresql
Para iniciar o psql (um terminal interativo para PostgreSQL) como o usuário interno do postgres, execute este comando:
sudo -u postgres psql
Crie uma nova conta de usuário com o nome de usuário da conta Linux que você usou para entrar. Crie uma palavra-passe:
CREATE USER <username> WITH CREATEDB;
CREATE DATABASE <username>;
ALTER USER <username> password '<password>';
\quit
Entre no psql:
psql
Importe os dados para um novo banco de dados:
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
Agora, vamos explorar os dados e executar algumas consultas com o SQuirreL SQL, uma ferramenta gráfica que pode interagir com bancos de dados por meio de um driver JDBC.
Primeiro, no menu Aplicativos, abra o SQuirreL SQL. Para configurar o driver:
- Selecione Drivers de exibição do Windows>
- Clique com o botão direito do mouse em PostgreSQL e selecione Modificar driver
- Selecionar Caminho de Classe Extra Adicionar>
- Em Nome do arquivo, digite /usr/share/java/jdbcdrivers/postgresql-9.4.1208.jre6.jar
- Selecione Abrir
- Selecione Listar drivers. Para Nome da classe, selecione org.postgresql.Driver e, em seguida, selecione OK
Para configurar a conexão com o servidor local:
- Selecione Aliases de exibição do Windows>.
- Selecione o + botão para criar um novo alias. Para o novo nome de alias, insira Banco de dados de spam
- Para Driver, selecione PostgreSQL
- Defina a URL como jdbc:postgresql://localhost/spam
- Introduza o seu nome de utilizador e palavra-passe
- Selecione OK
- Para abrir a janela Conexão , clique duas vezes no alias do banco de dados de spam
- Selecione Ligar
Para executar algumas consultas:
- Selecione a guia SQL
- Na caixa de consulta na parte superior da guia SQL , insira uma consulta básica: por exemplo,
SELECT * from data;
- Pressione Ctrl+Enter para executar a consulta. Por padrão, o SQuirreL SQL retorna as primeiras 100 linhas da sua consulta
Você pode executar muito mais consultas para explorar esses dados. Por exemplo, como a frequência da palavra faz diferença entre spam e presunto?
SELECT avg(word_freq_make), spam from data group by spam;
Quais são as características do e-mail que frequentemente contém 3d?
SELECT * from data order by word_freq_3d desc;
A maioria dos e-mails que têm uma alta ocorrência de 3d são spam aparente. Essas informações podem ser úteis para criar um modelo preditivo para classificar e-mails.
Para aprendizado de máquina usando dados armazenados em um banco de dados PostgreSQL, o MADlib funciona bem.
Azure Synapse Analytics (anteriormente SQL DW)
O Azure Synapse Analytics é um banco de dados escalável baseado em nuvem que pode processar grandes volumes de dados, relacionais e não relacionais. Para obter mais informações, visite O que é o Azure Synapse Analytics?
Para se conectar ao data warehouse e criar a tabela, execute este comando em um prompt de comando:
sqlcmd -S <server-name>.database.windows.net -d <database-name> -U <username> -P <password> -I
No prompt sqlcmd, execute 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 os dados com 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
O ficheiro transferido contém terminações de linha ao estilo do Windows. A ferramenta bcp espera terminações de linha no estilo Unix. Use o sinalizador -r para informar o bcp sobre isso.
Em seguida, consulte usando sqlcmd:
select top 10 spam, char_freq_dollar from spam;
GO
Você também pode consultar usando SQuirreL SQL. Siga etapas semelhantes ao PostgreSQL usando o driver JDBC do SQL Server. O driver JDBC está na pasta /usr/share/java/jdbcdrivers/sqljdbc42.jar.