Обработка и анализ данных с помощью Виртуальной машины для обработки и анализа данных с Ubuntu в Azure

В этом пошаговом руководстве описывается, как выполнить несколько распространенных задач обработки и анализа данных с помощью Виртуальная машина для обработки и анализа данных Ubuntu (DSVM). DsVM Ubuntu — это образ виртуальной машины, доступный в Azure, с предварительно установленной коллекцией инструментов, обычно используемой для аналитики данных и машинного обучения. Подготовка ресурса Ubuntu Виртуальная машина для обработки и анализа данных элементизирует ключевые компоненты программного обеспечения. Образ DSVM упрощает работу с обработкой и анализом данных всего за несколько минут, избегая необходимости устанавливать и настраивать каждый из средств по отдельности. При необходимости можно легко увеличить масштаб DSVM и остановить его, если он не используется. DSVM — это гибкий и экономичный ресурс.

В этом пошаговом руководстве мы анализируем набор данных spambase. Spambase — это набор сообщений электронной почты, которые отмечены как спам или обычная почта (не спам). Спам-база также содержит некоторые статистические данные о содержимом электронной почты. Далее мы обсудим статистику в пошаговом руководстве.

Необходимые компоненты

Прежде чем использовать DSVM Для Linux, необходимо охватить следующие предварительные требования:

Скачивание набора данных spambase

Набор данных нежелательной базы данных — это довольно небольшой набор данных, содержащий 4601 примеры. Удобный, управляемый размер этого ресурса упрощает отображение некоторых ключевых функций DSVM из-за скромных требований к ресурсам.

Примечание.

Это пошаговое руководство было создано с помощью виртуальной машины DSVM уровня D2 версии 2. Этот размер dsVM можно использовать для выполнения процедур, показанных в этом пошаговом руководстве.

Для большего объема дискового пространства можно создать больше дисков и подключить их к dsVM. Диски используют постоянное хранилище Azure, поэтому их данные сохраняются даже при повторной подготовке сервера из-за изменения размера или завершения работы. Чтобы добавить диск и присоединить его к DSVM, следуйте инструкциям в статье Добавление диска к виртуальной машине Linux. Действия по добавлению диска с помощью Azure CLI, который уже установлен в DSVM. Их можно выполнять полностью из самой виртуальной машины DSVM. В качестве другого варианта увеличения хранилища можно использовать Файлы Azure.

Чтобы скачать данные, откройте окно терминала и выполните следующую команду:

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

Скачанный файл не содержит строку заголовка. Давайте создадим другой файл, у которого есть заголовок. Для этого выполните следующую команду:

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

Затем объедините два файла вместе.

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

Набор данных содержит несколько видов статистики для каждого сообщения электронной почты.

  • Столбцы, такие как word_freq_WORD , указывают процент слов в сообщении электронной почты, соответствующего WORD. Например, если значение word_freq_make равно 1, то было 1% всех слов в сообщении электронной почты.
  • Столбцы, такие как char_freq_CHAR , указывают процент всех символов в сообщении электронной почты, которые являются CHAR.
  • capital_run_length_longest — самая длинная последовательность прописных букв.
  • capital_run_length_average — средняя длина всех последовательностей прописных букв.
  • capital_run_length_total — общая длина всех последовательностей прописных букв.
  • spam указывает, были ли сообщения признаны нежелательной почтой (1 — нежелательная почта, 0 —обычная почта).

Просмотр набора данных с помощью Open R

Давайте рассмотрим данные и используйте R для выполнения некоторых базовых машинного обучения. DSVM поставляется с предварительно установленным CRAN R.

Чтобы получить копии примеров кода, используемых в этом пошаговом руководстве, используйте git для клонирования репозитория Azure-Machine-Обучение-Data-Science. На DSVM предварительно установлена система Git. В программе командной строки Git выполните следующую команду:

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

Откройте окно терминала и запустите новый сеанс R в интерактивной консоли R. Чтобы импортировать данные и настроить среду, выполните следующую команду:

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

В этом примере кода показана сводная статистика по каждому столбцу:

summary(data)

Чтобы получить другое представление данных, выполните следующую команду:

str(data)

Это представление показывает тип каждой переменной и первые несколько значений в наборе данных.

Столбец spam распознан как целое число, но это на самом деле категориальная переменная (или факторная). Чтобы задать тип данных в этом столбце, выполните следующую команду:

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

Для некоторых исследовательских анализов используйте пакет ggplot2 , популярную библиотеку графирования для R. Пакет ggplot2 предварительно установлен на dsVM. На основе приведенных ранее сводных данных мы получили статистические данные по частоте использования восклицательного знака. Чтобы отобразить эти частоты, выполните следующие команды:

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

Так как нулевая полоса скользит по графику, давайте исключим ее:

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

Нетривиальная плотность выше 1, которая выглядит интересно. Давайте взглянем только на эти данные.

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

Затем разобьем их на наборы с обычной и нежелательной почтой.

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")

Эти примеры помогут создать похожие графики и исследовать данные в других столбцах.

Обучение и тестирование модели машинного обучения

Давайте обучим несколько моделей машинного обучения, чтобы определить сообщения электронной почты в наборе данных, содержащие спам или ветчину. В этом разделе мы рассмотрим, как обучить модель дерева принятия решений и модель случайного леса. Затем мы протестируем точность прогнозов.

Примечание.

Пакет rpart (рекурсивное секционирование и деревья регрессии), используемый в следующем коде, уже установлен на DSVM.

Сначала разделим набор данных на две части: для обучения и тестирования.

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

А затем создадим дерево принятия решений для классификации сообщений электронной почты.

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

Ниже приведен результат:

Схема, показывающая созданное дерево принятия решений.

Используйте этот пример кода, чтобы определить, насколько хорошо она выполняется в наборе обучения:

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

Чтобы определить, насколько хорошо он выполняется в тестовом наборе, выполните следующий код:

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

Теперь давайте испробуем модель случайного леса. Случайный лес обучает несколько деревьев принятия решений. Он выводит класс, который является значением режима классификаций из всех отдельных деревьев принятия решений. Это более эффективный метод машинного обучения, так как он исправляет тенденцию к переобучению обучающего набора данных, которая возникает при использовании модели дерева принятия решений.

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

Учебники и пошаговые инструкции по глубокому обучению

В дополнение к примерам на основе платформы также предоставляется набор исчерпывающих пошаговых руководств. Эти пошаговые руководства помогут вам начать разработку приложений глубокого обучения в изображениях, распознавании текста и т. д. доменов.

Другие средства

В остальных разделах показано, как использовать некоторые средства, предварительно установленные на виртуальной машине DSVM Linux. Мы рассмотрим следующие средства:

  • XGBoost
  • Python
  • JupyterHub;
  • Rattle
  • PostgreSQL и SQuirreL SQL;
  • Azure Synapse Analytics (ранее — Хранилище данных SQL)

XGBoost

XGBoost предоставляет быструю и точную реализацию усиленного дерева.

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))

Этот средство можно вызвать из командной строки или Python.

Python

Для разработки Python дистрибутивы Anaconda Python 3.5 и 2.7 предварительно установлены в DSVM.

Примечание.

Дистрибутив Anaconda включает Conda. С помощью Conda можно создавать пользовательские среды Python с разными версиями или пакетами, установленными в них.

Давайте прочтите в некоторых из набора данных спам-базы данных и классифицируем сообщения электронной почты с поддержкой векторных компьютеров в 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)

Для создания прогнозов используем следующую команду:

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

Чтобы научиться публиковать конечные точки Машинного обучения Azure, давайте создадим более простую модель. Мы используем три переменные, которые мы использовали при публикации модели R ранее:

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

JupyterHub;

Дистрибутив Anaconda в DSVM поставляется с Jupyter Notebook. Этот ресурс представляет собой кроссплатформенную среду для совместного использования кода Python, R или Джулии и анализа. Доступ к Jupyter Notebook можно получить через JupyterHub. Для входа введите учетные данные локального пользователя Linux по адресу https://<DNS-имя или IP-адрес DSVM>:8000/. Все файлы конфигурации JupyterHub можно найти в файле /etc/jupyterhub.

Примечание.

Чтобы использовать диспетчер пакетов Python (с помощью pip команды) из Jupyter Notebook, расположенной в текущем ядре, используйте следующую команду в ячейке кода:

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

Чтобы использовать установщик Conda (с помощью conda команды) из Jupyter Notebook, расположенной в текущем ядре, используйте следующую команду в ячейке кода:

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

На DSVM уже установлено несколько примеров записных книжек.

Примечание.

На DSVM с Linux можно также использовать из командной строки язык Julia.

Rattle

Вы можете использовать средство Rattle (RA Nalytical T ool To Lзаработать Easily) графическое средство R для интеллектуального анализа данных. Rattle содержит интуитивно понятный интерфейс, упрощающий загрузку, изучение и преобразование данных, а также создание и анализ моделей. Rattle: графический интерфейс интеллектуального анализа данных для R предоставляет пошаговое руководство, демонстрирующее функции Rattle.

Выполните следующие команды, чтобы установить и запустить Rattle:

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

Примечание.

Вам не нужно устанавливать Rattle на DSVM. Однако при открытии Rattle вам может быть предложено установить дополнительные пакеты.

В Rattle используется интерфейс на основе вкладок. Большинство вкладок соответствует шагам процесса обработки и анализа данных группы, например загрузке данных и их изучению. Процесс обработки и анализа данных выполняется слева направо, перемещаясь по вкладкам. Последняя вкладка содержит журнал команд R, запущенных Rattle.

Чтобы загрузить и настроить набор данных:

  1. Чтобы загрузить файл, выберите вкладку "Данные "
  2. Выберите селектор рядом с именем файла, а затем выберите спамbaseHeaders.data
  3. Чтобы загрузить файл, Щелкните Выполнить. Вы увидите сводку по каждому столбцу, включая его определенный тип данных, будь то входные данные, целевой или другой тип переменной, а также количество уникальных значений.
  4. Rattle правильно определил столбец нежелательной почты в качестве целевого объекта. Выберите столбец нежелательной почты , а затем задайте для целевого типаданных значение Categoric

Чтобы изучить данные:

  1. Выберите вкладку "Обзор"
  2. Чтобы просмотреть сведения о типах переменных и некоторых сводных статистических данных, выберите "Сводка>выполнения".
  3. Чтобы просмотреть другие статистические данные о каждой переменной, установите другие флажки, например Describe (Описание) или Basics (Основные сведения).

Для создания аналитических графиков можно также использовать вкладку Explore (Просмотр). Чтобы построить гистограмму данных:

  1. Выбор дистрибутивов
  2. Для word_freq_remove и word_freq_you выберите гистограмму
  3. Выберите Выполнить. В одном окне диаграммы плотности должны отображаться гораздо чаще по сравнению с удалением слова, отображаемого в сообщениях электронной почты.

Графики корреляции не менее интересны. Чтобы создать график, выполните следующие действия.

  1. Для типа выберите "Корреляция"
  2. Нажмите кнопку Выполнить.
  3. Rattle рекомендует использовать не более 40 переменных. Выберите "Да" , чтобы просмотреть график

Есть некоторые интересные корреляции, которые появляются. Например, технология сильно коррелирует с HP и лабораториями. Он также сильно коррелирует с 650 , поскольку код области доноров набора данных составляет 650.

Числовые значения для корреляции между словами доступны в окне Explore (Изучение). Интересно, что technology (технология) отрицательно коррелирует с your (ваш) и money (деньги).

В Rattle также можно преобразовать набор данных для решения некоторых стандартных задач. Например, можно изменить масштаб признаков, добавить отсутствующие значения, обработать выбросы и удалить переменные или наблюдения с отсутствующими данными. Rattle также может определить правила взаимосвязей между наблюдениями и (или) переменными. Это вводное пошаговое руководство не охватывает эти вкладки.

Rattle также может обрабатывать анализ кластера. Давайте исключим некоторые признаки, чтобы облегчить чтение выходных данных. На вкладке "Данные" выберите "Игнорировать " рядом с каждой из переменных, за исключением следующих 10 элементов:

  • 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;
  • уверенности

Вернитесь на вкладку "Кластер ". Выберите KMeans и установите для параметра "Число кластеров " значение 4. Выберите Выполнить. В окне вывода отображаются результаты. Один кластер имеет высокую частоту джорджа и hp, и, вероятно, является законным бизнес-адресом электронной почты.

Чтобы создать базовую модель дерева принятия решений, выполните следующие действия.

  1. Выберите вкладку "Модель"
  2. В поле "Тип" выберите "Дерево"
  3. Выберите "Выполнить" , чтобы отобразить дерево в текстовой форме в окне вывода
  4. Нажмите кнопку Draw (Рисовать), чтобы просмотреть графическое представление. Дерево принятия решений похоже на дерево, полученное ранее с rpart.

Rattle может выполнять несколько методов машинного обучения и быстро оценивать их. Это полезная функция. Вот как это сделать:

  1. Для типа выберите "Все"
  2. Нажмите кнопку Выполнить.
  3. После завершения работы Rattle можно выбрать любое значение типа , например SVM, и просмотреть результаты.
  4. Вы также можете сравнить производительность моделей на наборе проверки с вкладкой "Оценка ". Например, выбор матрицы ошибок показывает матрицу путаницы, общую ошибку и усредненную ошибку класса для каждой модели в наборе проверки. Вы также можете вычислить кривые ROC, выполнять анализ конфиденциальности и выполнять другие типы вычислений моделей.

Завершив сборку моделей, перейдите на вкладку "Журнал" , чтобы просмотреть код R, запущенный в ходе сеанса. Чтобы сохранить его, нажмите кнопку Export (Экспорт).

Примечание.

В текущем выпуске Rattle присутствует ошибка. Чтобы изменить скрипт или использовать его для повтора этих шагов позже, необходимо вставить символ # перед фразой Export this log... (Экспорт этого журнала) в тексте журнала.

PostgreSQL и SQuirreL SQL;

На ВМ для обработки и анализа данных установлен компонент PostgreSQL. PostgreSQL — это сложная реляционная база данных открытый код. В этом разделе показано, как загрузить набор данных нежелательной почты в PostgreSQL, а затем запросить его.

Перед загрузкой данных необходимо разрешить выполнять проверку подлинности с использованием пароля на узле localhost. В окне командной строки выполните следующую команду.

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

В нижней части файла конфигурации несколько строк подробно описывают разрешенные подключения:

# "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

Измените строку локальных подключений IPv4, чтобы использовать md5 вместо идентификатора, чтобы войти с помощью имени пользователя и пароля:

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

Перезапустите службу PostgreSQL.

sudo systemctl restart postgresql

Чтобы запустить psql (интерактивный терминал для PostgreSQL) от имени встроенного пользователя Postgres, воспользуйтесь следующей командой:

sudo -u postgres psql

Создайте новую учетную запись пользователя с именем пользователя учетной записи Linux, которую вы использовали для входа. Создайте пароль.

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

Войдите в psql:

psql

Импортируйте данные в новую базу данных.

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

Теперь давайте рассмотрим данные и запустите некоторые запросы с помощью SQuirreL SQL, графического инструмента, который может взаимодействовать с базами данных с помощью драйвера JDBC.

Во-первых , в меню "Приложения" откройте SQuirreL SQL. Чтобы настроить драйвер, сделайте следующее:

  1. Выбор драйверов представления Windows>
  2. Щелкните правой кнопкой мыши PostgreSQL и выберите "Изменить драйвер"
  3. Выбор пути к дополнительному классу>
  4. В поле "Имя файла" введите /usr/share/java/jdbcdrivers/postgresql-9.4.1208.jre6.jar
  5. Выберите "Открыть"
  6. Выберите List Drivers (Список драйверов). Для имени класса выберите org.postgresql.Driver и нажмите кнопку "ОК"

Чтобы установить подключение к локальному серверу:

  1. Выберите Windows>View Aliases (Windows > Просмотр псевдонимов).
  2. Чтобы создать псевдоним, нажмите кнопку +. Для нового имени псевдонима введите базу данных нежелательной почты
  3. Для драйвера выберите PostgreSQL
  4. Задайте URL-адрес jdbc:postgresql://localhost/спам
  5. Ввод имени пользователя и пароля
  6. Выберите ОК
  7. Чтобы открыть окно Подключение ion, дважды щелкните псевдоним базы данных нежелательной почты.
  8. Выберите Подключиться.

Чтобы выполнить запросы:

  1. Выбор вкладки SQL
  2. В поле запроса в верхней части вкладки SQL введите базовый запрос: например, SELECT * from data;
  3. Нажмите клавиши CTRL+ВВОД, чтобы выполнить запрос. По умолчанию SQuirreL SQL возвращает первые 100 строк из запроса.

Для изучения этих данных можно выполнять много других запросов. Например, как отличается частота упоминания слова make в нежелательной и обычной почте?

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

Каковы характеристики электронной почты, которые часто содержат 3d?

SELECT * from data order by word_freq_3d desc;

Большинство сообщений электронной почты с высоким числом 3d являются очевидными спамом. Эти сведения могут оказаться полезными при создании прогнозной модели для классификации сообщений электронной почты.

Для машинного обучения с использованием данных, хранящихся в базе данных PostgreSQL, MADlib хорошо работает.

Azure Synapse Analytics (ранее — Хранилище данных SQL)

Azure Synapse Analytics — это облачная масштабируемая база данных, которая может обрабатывать большие объемы данных, как реляционные, так и нереляционные. Дополнительные сведения см. в статье "Что такое Azure Synapse Analytics?

Чтобы подключиться к хранилищу данных и создать таблицу, выполните следующую команду из командной строки:

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

Воспользуйтесь следующей командой в командной строке sqlcmd:

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

Скопируйте данные с помощью 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"

Примечание.

Скачанный файл содержит символы конца строки в стиле Windows. Программа bcp ждет завершения строк в стиле Unix. Используйте флаг -r, чтобы сообщить bcp об этом.

Затем выполните запрос с помощью программы sqlcmd.

select top 10 spam, char_freq_dollar from spam;
GO

Запрос можно также выполнить с помощью SQuirreL SQL. Выполните действия, аналогичные PostgreSQL, с помощью драйвера JDBC SQL Server. Драйвер JDBC находится в папке /usr/share/java/jdbcdrivers/sqljdbc42.jar.