علم البيانات باستخدام جهاز Ubuntu Data Science الظاهري في Azure
توضح لك هذه الإرشادات التفصيلية كيفية إكمال العديد من مهام علوم البيانات الشائعة باستخدام الجهاز الظاهري لعلوم البيانات Ubuntu (DSVM). Ubuntu DSVM هي صورة جهاز ظاهري متوفرة في Azure مثبتة مسبقا مع مجموعة من الأدوات شائعة الاستخدام لتحليلات البيانات والتعلم الآلي. يتم تفصيل مكونات البرنامج الرئيسية في توفير الجهاز الظاهري لعلوم البيانات Ubuntu. تسهل صورة DSVM البدء في القيام بعلوم البيانات في دقائق ، دون الحاجة إلى تثبيت وتكوين كل أداة على حدة. يمكنك بسهولة توسيع نطاق DSVM إذا كنت بحاجة إلى ذلك ، ويمكنك إيقافه عندما لا يكون قيد الاستخدام. مورد DSVM مرن وفعال من حيث التكلفة.
في هذه الإرشادات التفصيلية، نحلل مجموعة بيانات قاعدة الرسائل غير المرغوب فيها . Spambase هي مجموعة من رسائل البريد الإلكتروني التي يتم وضع علامة عليها إما البريد العشوائي أو لحم الخنزير (وليس البريد المزعج). يحتوي Spambase أيضا على بعض الإحصاءات حول محتوى رسائل البريد الإلكتروني. نتحدث عن الإحصاءات لاحقا في الإرشادات التفصيلية.
المتطلبات الأساسية
قبل أن تتمكن من استخدام Linux DSVM، يجب أن يكون لديك المتطلبات الأساسية التالية:
اشتراك Azure. للحصول على اشتراك Azure، راجع إنشاء حساب Azure مجاني اليوم.
أوبونتو علوم البيانات الظاهرية. للحصول على معلومات حول توفير الجهاز الظاهري، راجع توفير الجهاز الظاهري لعلوم بيانات Ubuntu.
X2Go مثبت على جهاز الكمبيوتر الخاص بك مع جلسة XFCE مفتوحة. لمزيد من المعلومات، راجع تثبيت عميل X2Go وتكوينه.
تنزيل مجموعة بيانات قاعدة الرسائل غير المرغوب فيها
مجموعة بيانات قاعدة الرسائل غير المرغوب فيها هي مجموعة صغيرة نسبيا من البيانات تحتوي على 4,601 مثال. مجموعة البيانات هي حجم مناسب لإظهار بعض الميزات الرئيسية ل DSVM لأنها تحافظ على متطلبات الموارد متواضعة.
ملاحظة
تم إنشاء هذه الإرشادات التفصيلية باستخدام D2 v2 بحجم Linux DSVM (Ubuntu 18.04 Edition). يمكنك استخدام 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 هو الطول الإجمالي لجميع تسلسلات الأحرف الكبيرة.
- يشير البريد العشوائي إلى ما إذا كان البريد الإلكتروني يعتبر غير مرغوب فيه أم لا (1 = البريد العشوائي، 0 = ليس البريد العشوائي).
استكشاف مجموعة البيانات باستخدام R Open
دعونا نفحص البيانات ونقوم ببعض التعلم الآلي الأساسي باستخدام R. يأتي DSVM مزودا ب CRAN R مثبت مسبقا.
للحصول على نسخ من نماذج التعليمات البرمجية المستخدمة في هذه الإرشادات التفصيلية، استخدم git لاستنساخ مستودع Azure-Machine-Learning-Data-Science. يتم تثبيت Git مسبقا على DSVM. في سطر أوامر git، قم بتشغيل:
git clone https://github.com/Azure/Azure-MachineLearning-DataScience.git
افتح نافذة طرفية وابدأ جلسة R جديدة في وحدة التحكم التفاعلية R. يمكنك أيضا استخدام RStudio ، المثبت مسبقا على DSVM.
لاستيراد البيانات وإعداد البيئة:
data <- read.csv("spambaseHeaders.data")
set.seed(123)
للاطلاع على إحصائيات موجزة حول كل عمود:
summary(data)
للحصول على طريقة عرض مختلفة للبيانات:
str(data)
تعرض لك طريقة العرض هذه نوع كل متغير والقيم القليلة الأولى في مجموعة البيانات.
تمت قراءة عمود البريد العشوائي كعدد صحيح ، لكنه في الواقع متغير (أو عامل) فئوي. لتعيين نوعه:
data$spam <- as.factor(data$spam)
لإجراء بعض التحليل الاستكشافي ، استخدم حزمة ggplot2 ، وهي مكتبة رسوم بيانية شائعة ل R مثبتة مسبقا على 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
دروس التعلم العميق والإرشادات التفصيلية
بالإضافة إلى العينات القائمة على الإطار ، يتم أيضا توفير مجموعة من الإرشادات التفصيلية الشاملة. تساعدك هذه الإرشادات التفصيلية على بدء تطوير تطبيقات التعلم العميق في مجالات مثل فهم الصور والنصوص / اللغة.
تشغيل الشبكات العصبية عبر أطر عمل مختلفة: جولة شاملة توضح لك كيفية ترحيل التعليمات البرمجية من إطار عمل إلى آخر. كما يوضح كيفية مقارنة أداء النموذج ووقت التشغيل عبر الأطر.
دليل إرشادي لبناء حل شامل للكشف عن المنتجات داخل الصور: اكتشاف الصور هو تقنية يمكنها تحديد موقع الكائنات وتصنيفها داخل الصور. التكنولوجيا لديها القدرة على تحقيق مكافآت ضخمة في العديد من مجالات الأعمال الواقعية. على سبيل المثال ، يمكن لتجار التجزئة استخدام هذه التقنية لتحديد المنتج الذي التقطه العميل من الرف. هذه المعلومات بدورها تساعد المتاجر على إدارة مخزون المنتجات.
التعلم العميق للصوت: يوضح هذا البرنامج التعليمي كيفية تدريب نموذج التعلم العميق للكشف عن الأحداث الصوتية على مجموعة بيانات الأصوات الحضرية. يوفر البرنامج التعليمي نظرة عامة على كيفية العمل مع البيانات الصوتية.
تصنيف المستندات النصية: توضح هذه الإرشادات التفصيلية كيفية بناء وتدريب بنيتين مختلفتين للشبكة العصبية: شبكة الانتباه الهرمية والذاكرة طويلة المدى (LSTM). تستخدم هذه الشبكات العصبية واجهة برمجة تطبيقات Keras للتعلم العميق لتصنيف المستندات النصية. Keras هي واجهة أمامية لثلاثة من أطر التعلم العميق الأكثر شعبية: Microsoft Cognitive Toolkit و TensorFlow و Theano.
أدوات أخرى
توضح لك الأقسام المتبقية كيفية استخدام بعض الأدوات المثبتة على Linux DSVM. نناقش هذه الأدوات:
- XGBoost
- Python
- جوبيتر هب
- جلجل
- PostgreSQL و SQuirreL SQL
- Azure Synapse Analytics (سابقاً SQL DW)
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))
يمكن ل XGBoost أيضا الاتصال من Python أو سطر الأوامر.
Python
لتطوير بايثون ، يتم تثبيت توزيعات Anaconda Python 3.5 و 2.7 على DSVM.
ملاحظة
يشمل توزيع أناكوندا كوندا. يمكنك استخدام 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)
جوبيتر هب
يأتي توزيع Anaconda في DSVM مزودا بدفتر Jupyter Notebook ، وهي بيئة عبر الأنظمة الأساسية لمشاركة رمز Python أو R أو Julia والتحليل. يتم الوصول إلى دفتر ملاحظات Jupyter من خلال JupyterHub. يمكنك تسجيل الدخول باستخدام اسم مستخدم Linux المحلي وكلمة المرور في https://< DSVM DNS أو عنوان> IP:8000/. تم العثور على جميع ملفات التكوين ل JupyterHub في /etc/jupyterhub.
ملاحظة
لاستخدام مدير الحِزَم Python (عبر pip الأمر) من دفتر ملاحظات Jupyter في النواة الحالية، استخدم هذا الأمر في خلية التعليمات البرمجية:
import sys
! {sys.executable} -m pip install numpy -y
لاستخدام مثبت Conda (عبر conda الأمر) من دفتر ملاحظات Jupyter في النواة الحالية، استخدم هذا الأمر في خلية تعليمة برمجية:
import sys
! {sys.prefix}/bin/conda install --yes --prefix {sys.prefix} numpy
تم تثبيت العديد من نماذج دفاتر الملاحظات بالفعل على DSVM:
- عينة من دفاتر بايثون:
- نموذج R دفتر الملاحظات:
ملاحظة
تتوفر لغة جوليا أيضا من سطر الأوامر على Linux DSVM.
جلجل
خشخشة (RAnalytical Tool ToLearnEasily) هي أداة R رسومية لاستخراج البيانات. يحتوي Rattle على واجهة بديهية تجعل من السهل تحميل البيانات واستكشافها وتحويلها وبناء النماذج وتقييمها. خشخشة: توفر واجهة المستخدم الرسومية لاستخراج البيانات ل R تفصيلا تفصيليا يوضح ميزات Rattle.
قم بتثبيت Rattle وبدء تشغيله عن طريق تشغيل هذه الأوامر:
if(!require("rattle")) install.packages("rattle")
require(rattle)
rattle()
ملاحظة
لست بحاجة إلى تثبيت Rattle على DSVM. ومع ذلك، قد تتم مطالبتك بتثبيت حزم إضافية عند فتح Rattle.
يستخدم Rattle واجهة قائمة على علامات التبويب. تتوافق معظم علامات التبويب مع الخطوات في عملية علوم بيانات الفريق، مثل تحميل البيانات أو استكشاف البيانات. تتدفق عملية علم البيانات من اليسار إلى اليمين من خلال علامات التبويب. تحتوي علامة التبويب الأخيرة على سجل لأوامر R التي تم تشغيلها بواسطة Rattle.
لتحميل مجموعة البيانات وتكوينها:
- لتحميل الملف، حدد علامة التبويب بيانات .
- اختر المحدد الموجود بجوار اسم الملف، ثم حدد spambaseHeaders.data.
- لتحميل الملف. حدد "Execute" . يجب أن ترى ملخصا لكل عمود، بما في ذلك نوع البيانات المحدد له؛ سواء كان مدخلا أو هدفا أو أي نوع آخر من المتغيرات ؛ وعدد القيم الفريدة.
- حدد Rattle عمود البريد العشوائي بشكل صحيح كهدف. حدد العمود البريد العشوائي ، ثم قم بتعيين نوع البيانات المستهدفة إلى تصنيفي.
لاستكشاف البيانات:
- حدد علامة التبويب استكشاف .
- للاطلاع على معلومات حول أنواع المتغيرات وبعض إحصائيات الملخص، حدد SummaryExecute>.
- لعرض أنواع أخرى من الإحصائيات حول كل متغير، حدد خيارات أخرى، مثل الوصف أو الأساسيات.
يمكنك أيضا استخدام علامة التبويب استكشاف لإنشاء مؤامرات ثاقبة. لرسم رسم بياني للبيانات:
- حدد التوزيعات.
- بالنسبة word_freq_removeword_freq_you، حدد الرسم البياني.
- حدد «Execute». يجب أن ترى كلا من مخططات الكثافة في نافذة رسم بياني واحدة ، حيث من الواضح أن الكلمة التي تظهر بشكل متكرر في رسائل البريد الإلكتروني أكثر من إزالتها.
مؤامرات الارتباط مثيرة للاهتمام أيضا. لإنشاء مؤامرة:
- بالنسبة إلى النوع، حدد ارتباط.
- حدد «Execute».
- يحذرك Rattle من أنه يوصي بحد أقصى 40 متغيرا. حدد نعم لعرض المؤامرة.
هناك بعض الارتباطات المثيرة للاهتمام التي تظهر: ترتبط التكنولوجيا ارتباطا وثيقا ب HPوالمختبرات ، على سبيل المثال. كما أنه يرتبط ارتباطا وثيقا ب 650 لأن رمز المنطقة الخاص بالجهات المانحة لمجموعة البيانات هو 650 .
تتوفر القيم الرقمية للارتباطات بين الكلمات في النافذة استكشاف . من المثير للاهتمام أن نلاحظ ، على سبيل المثال ، أن التكنولوجيا ترتبط سلبا بأموالك وأموالك.
يمكن ل 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. حدد «Execute». يتم عرض النتائج في نافذة الإخراج. تحتوي إحدى المجموعات على تردد عال من George و HP ، وربما تكون بريدا إلكترونيا تجاريا شرعيا.
لبناء نموذج أساسي للتعلم الآلي لشجرة القرار:
- حدد علامة التبويب " النموذج" ،
- بالنسبة إلى النوع، حدد شجرة.
- حدد تنفيذ لعرض الشجرة في شكل نص في نافذة الإخراج.
- حدد الزر رسم لعرض إصدار رسومي. تبدو شجرة القرار مشابهة للشجرة التي حصلنا عليها سابقا باستخدام rpart.
ميزة مفيدة من Rattle هي قدرتها على تشغيل العديد من طرق التعلم الآلي وتقييمها بسرعة. فيما يلي الخطوات:
- بالنسبة إلى النوع، حدد الكل.
- حدد «Execute».
- عند انتهاء تشغيل Rattle ، يمكنك تحديد أي قيمة نوع ، مثل SVM ، وعرض النتائج.
- يمكنك أيضا مقارنة أداء النماذج في مجموعة التحقق من الصحة باستخدام علامة التبويب تقييم . على سبيل المثال، يعرض لك تحديد مصفوفة الخطأ مصفوفة الارتباك والخطأ الكلي ومتوسط خطأ الفئة لكل نموذج في مجموعة التحقق من الصحة. يمكنك أيضا رسم منحنيات ROC وتشغيل تحليل الحساسية وإجراء أنواع أخرى من تقييمات النماذج.
عند الانتهاء من إنشاء النماذج، حدد علامة التبويب سجل لعرض رمز R الذي تم تشغيله بواسطة Rattle أثناء جلسة العمل. يمكنك تحديد الزر تصدير لحفظه.
ملاحظة
يحتوي الإصدار الحالي من Rattle على خطأ. لتعديل البرنامج النصي أو لاستخدامه لتكرار خطواتك لاحقا، يجب إدراج # حرف أمام تصدير هذا السجل ...
PostgreSQL و SQuirreL SQL
يأتي DSVM مع تثبيت PostgreSQL. PostgreSQL هي قاعدة بيانات علائقية متطورة مفتوحة المصدر. يوضح لك هذا القسم كيفية تحميل مجموعة بيانات قاعدة الرسائل غير المرغوب فيها إلى PostgreSQL ثم الاستعلام عنها.
قبل أن تتمكن من تحميل البيانات، يجب السماح بمصادقة كلمة المرور من المضيف المحلي. في موجه الأوامر، قم بتشغيل:
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.
للبدء، من القائمة تطبيقات، افتح SQL SQuirreL. لإعداد برنامج التشغيل:
- حدد Windows>عرض برامج التشغيل.
- انقر بزر الماوس الأيمن فوق PostgreSQLوحدد تعديل برنامج التشغيل.
- حدد مسار> فئة إضافيةإضافة.
- بالنسبة إلى اسم الملف، أدخل /usr/share/java/jdbcdrivers/postgresql-9.4.1208.jre6.jar.
- حدد "Open".
- حدد قائمة برامج التشغيل. بالنسبة لاسم الفئة، حدد org.postgresql.Driver، ثم حدد موافق.
لإعداد الاتصال بالخادم المحلي:
- حدد Windows>عرض الأسماء المستعارة.
- حدد الزر + لإنشاء اسم مستعار جديد. بالنسبة إلى الاسم المستعار الجديد، أدخل قاعدة بيانات الرسائل غير المرغوب فيها.
- بالنسبة إلى برنامج التشغيل، حدد PostgreSQL.
- قم بتعيين عنوان URL إلى jdbc:postgresql://localhost/spam.
- أدخل اسم المستخدم وكلمة المرور.
- حدد "OK".
- لفتح نافذة الاتصال ، انقر نقرا مزدوجا فوق الاسم المستعار لقاعدة بيانات البريد العشوائي .
- حدد Connect.
لتشغيل بعض الاستعلامات:
- حدد علامة التبويب SQL.
- في مربع الاستعلام أعلى علامة التبويب SQL، أدخل استعلاما أساسيا، مثل
SELECT * from data;. - اضغط على Ctrl+Enter لتشغيل الاستعلام. بشكل افتراضي، يقوم SQuirreL SQL بإرجاع أول 100 صف من الاستعلام.
هناك العديد من الاستعلامات الأخرى التي يمكنك تشغيلها لاستكشاف هذه البيانات. على سبيل المثال ، كيف يختلف تكرار الكلمة بين البريد العشوائي ولحم الخنزير؟
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 DW)
Azure Synapse Analytics هي قاعدة بيانات قابلة للتوسعة قائمة على السحابة يمكنها معالجة كميات هائلة من البيانات، سواء كانت علائقية أو غير علائقية. لمزيد من المعلومات، راجع ما المقصود بتحليلات Azure Synapse؟
للاتصال بمستودع البيانات وإنشاء الجدول، قم بتشغيل الأمر التالي من موجه الأوامر:
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 نهايات الأسطر على غرار يونكس. استخدم العلامة -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.