تنفيذ مكون البرنامج النصي R
توضح هذه المقالة كيفية استخدام مكون تنفيذ R Script لتشغيل التعليمات البرمجية R في خط أنابيب مصمم Azure التعلم الآلي.
باستخدام R، يمكنك تنفيذ مهام غير مدعومة من المكونات الموجودة، مثل:
- إنشاء تحويلات بيانات مخصصة
- استخدم مقاييسك الخاصة لتقييم التنبؤات
- إنشاء نماذج باستخدام خوارزميات لا يتم تنفيذها كمكونات مستقلة في المصمم
دعم إصدار R
يستخدم مصمم Azure التعلم الآلي توزيع CRAN (شبكة أرشيف R الشاملة) ل R. الإصدار المستخدم حاليا هو CRAN 3.5.1.
حزم R المدعومة
يتم تثبيت بيئة R مسبقا مع أكثر من 100 حزمة. للحصول على قائمة كاملة، راجع القسم حزم R المثبتة مسبقا.
يمكنك أيضا إضافة التعليمة البرمجية التالية إلى أي مكون من مكونات Execute R Script للاطلاع على الحزم المثبتة.
azureml_main <- function(dataframe1, dataframe2){
print("R script run.")
dataframe1 <- data.frame(installed.packages())
return(list(dataset1=dataframe1, dataset2=dataframe2))
}
ملاحظة
إذا كان خط الأنابيب يحتوي على مكونات Execute R Script متعددة تحتاج إلى حزم غير موجودة في القائمة المثبتة مسبقا، فقم بتثبيت الحزم في كل مكون.
تثبيت حزم R
لتثبيت حزم R إضافية، استخدم الطريقة install.packages() . يتم تثبيت الحزم لكل مكون من مكونات Execute R Script. لا تتم مشاركتها عبر مكونات Execute R Script الأخرى.
ملاحظة
لا ينصح بتثبيت حزمة R من حزمة البرنامج النصي. يوصى بتثبيت الحزم مباشرة في محرر البرامج النصية.
حدد مستودع CRAN عند تثبيت الحزم، مثل install.packages("zoo",repos = "https://cloud.r-project.org").
تحذير
لا يدعم مكون Excute R Script تثبيت الحزم التي تتطلب ترجمة أصلية ، مثل qdap الحزمة التي تتطلب JAVA والحزمة drc التي تتطلب C ++. وذلك لأنه يتم تنفيذ هذا المكون في بيئة مثبتة مسبقا بإذن غير المسؤول.
لا تقم بتثبيت الحزم التي تم إنشاؤها مسبقا على / Windows ، نظرا لأن مكونات المصمم تعمل على Ubuntu. للتحقق مما إذا كانت الحزمة مبنية مسبقا على النوافذ ، يمكنك الانتقال إلى CRAN والبحث في الحزمة الخاصة بك ، وتنزيل ملف ثنائي واحد وفقا لنظام التشغيل الخاص بك ، والتحقق من Built: جزء في ملف الوصف . وفيما يلي مثال على ذلك:
يوضح هذا النموذج كيفية تثبيت حديقة الحيوان:
# R version: 3.5.1
# The script MUST contain a function named azureml_main,
# which is the entry point for this component.
# Note that functions dependent on the X11 library,
# such as "View," are not supported because the X11 library
# is not preinstalled.
# The entry point function MUST have two input arguments.
# If the input port is not connected, the corresponding
# dataframe argument will be null.
# Param<dataframe1>: a R DataFrame
# Param<dataframe2>: a R DataFrame
azureml_main <- function(dataframe1, dataframe2){
print("R script run.")
if(!require(zoo)) install.packages("zoo",repos = "https://cloud.r-project.org")
library(zoo)
# Return datasets as a Named List
return(list(dataset1=dataframe1, dataset2=dataframe2))
}
ملاحظة
قبل تثبيت حزمة، تحقق مما إذا كانت موجودة بالفعل حتى لا تكرر التثبيت. قد يؤدي تكرار عمليات التثبيت إلى انتهاء مهلة طلبات خدمة الويب.
الوصول إلى مجموعة البيانات المسجلة
يمكنك الرجوع إلى نموذج التعليمات البرمجية التالي للوصول إلى مجموعات البيانات المسجلة في مساحة العمل الخاصة بك:
azureml_main <- function(dataframe1, dataframe2){
print("R script run.")
run = get_current_run()
ws = run$experiment$workspace
dataset = azureml$core$dataset$Dataset$get_by_name(ws, "YOUR DATASET NAME")
dataframe2 <- dataset$to_pandas_dataframe()
# Return datasets as a Named List
return(list(dataset1=dataframe1, dataset2=dataframe2))
}
كيفية تكوين تنفيذ البرنامج النصي R
يحتوي مكون تنفيذ R Script على نموذج التعليمات البرمجية كنقطة بداية.

يتم تحويل مجموعات البيانات المخزنة في المصمم تلقائيا إلى إطار بيانات R عند تحميلها بهذا المكون.
أضف مكون تنفيذ R Script إلى خط الأنابيب الخاص بك.
الاتصال أي مدخلات يحتاجها البرنامج النصي. المدخلات اختيارية ويمكن أن تتضمن بيانات ورمز R إضافي.
مجموعة البيانات1: الإشارة إلى الإدخال الأول ك
dataframe1. يجب تنسيق مجموعة بيانات الإدخال كملف CSV أو TSV أو ARFF. أو يمكنك توصيل مجموعة بيانات Azure التعلم الآلي.مجموعة البيانات2: الإشارة إلى الإدخال الثاني ك
dataframe2. يجب أيضا تنسيق مجموعة البيانات هذه كملف CSV أو TSV أو ARFF أو كمجموعة بيانات Azure التعلم الآلي.حزمة البرنامج النصي: يقبل الإدخال الثالث ملفات .zip. يمكن أن يحتوي الملف المضغوط على ملفات متعددة وأنواع ملفات متعددة.
في مربع النص R script، اكتب أو الصق برنامج R النصي الصحيح.
ملاحظة
كن حذرا عند كتابة السيناريو الخاص بك. تأكد من عدم وجود أخطاء في بناء الجملة، مثل استخدام متغيرات غير معلن عنها أو مكونات أو دالات غير مستوردة. إيلاء مزيد من الاهتمام لقائمة الحزم المثبتة مسبقا في نهاية هذه المقالة. لاستخدام الحزم غير المدرجة، قم بتثبيتها في البرنامج النصي. المثال هو
install.packages("zoo",repos = "https://cloud.r-project.org").لمساعدتك على البدء، يتم تعبئة مربع النص R Script مسبقا بنموذج التعليمات البرمجية، والذي يمكنك تحريره أو استبداله.
# R version: 3.5.1 # The script MUST contain a function named azureml_main, # which is the entry point for this component. # Note that functions dependent on the X11 library, # such as "View," are not supported because the X11 library # is not preinstalled. # The entry point function MUST have two input arguments. # If the input port is not connected, the corresponding # dataframe argument will be null. # Param<dataframe1>: a R DataFrame # Param<dataframe2>: a R DataFrame azureml_main <- function(dataframe1, dataframe2){ print("R script run.") # If a .zip file is connected to the third input port, it's # unzipped under "./Script Bundle". This directory is added # to sys.path. # Return datasets as a Named List return(list(dataset1=dataframe1, dataset2=dataframe2)) }يجب أن تحتوي دالة نقطة الدخول على وسيطات
Param<dataframe1>الإدخال وParam<dataframe2>، حتى عندما لا يتم استخدام هذه الوسيطات في الدالة.ملاحظة
تتم الإشارة إلى البيانات التي تم تمريرها إلى مكون Execute R Script ك و ، وهو يختلف عن مصمم Azure التعلم الآلي (مرجع المصمم ك
dataframe1dataset1،dataset2).dataframe2تأكد من الإشارة إلى بيانات الإدخال بشكل صحيح في البرنامج النصي.ملاحظة
قد تحتاج التعليمات البرمجية R الحالية إلى تغييرات طفيفة لتشغيلها في خط أنابيب مصمم. على سبيل المثال، يجب تحويل بيانات الإدخال التي تقدمها بتنسيق CSV بشكل صريح إلى مجموعة بيانات قبل أن تتمكن من استخدامها في التعليمات البرمجية. تختلف أنواع البيانات والأعمدة المستخدمة في لغة R أيضا في بعض النواحي عن أنواع البيانات والأعمدة المستخدمة في المصمم.
إذا كان البرنامج النصي أكبر من 16 كيلوبايت، فاستخدم منفذ حزمة البرامج النصية لتجنب الأخطاء مثل تجاوز CommandLine الحد الأقصى البالغ 16597 حرفا.
- قم بتجميع البرنامج النصي والموارد المخصصة الأخرى في ملف مضغوط.
- Upload الملف المضغوط كمجموعة بيانات ملف إلى الاستوديو.
- اسحب مكون مجموعة البيانات من قائمة مجموعات البيانات في جزء المكون الأيمن في صفحة تأليف المصمم.
- الاتصال مكون مجموعة البيانات إلى منفذ حزمة البرنامج النصي لمكون تنفيذ R Script.
فيما يلي نموذج التعليمة البرمجية لاستهلاك البرنامج النصي في حزمة البرنامج النصي:
azureml_main <- function(dataframe1, dataframe2){ # Source the custom R script: my_script.R source("./Script Bundle/my_script.R") # Use the function that defined in my_script.R dataframe1 <- my_func(dataframe1) sample <- readLines("./Script Bundle/my_sample.txt") return (list(dataset1=dataframe1, dataset2=data.frame("Sample"=sample))) }بالنسبة إلى البذور العشوائية، أدخل قيمة لاستخدامها داخل بيئة R كقيمة البذور العشوائية. هذه المعلمة تعادل الاتصال
set.seed(value)في رمز R.إرسال المسار.
النتائج
يمكن لتنفيذ مكونات R Script إرجاع مخرجات متعددة، ولكن يجب توفيرها كإطارات بيانات R. يقوم المصمم تلقائيا بتحويل إطارات البيانات إلى مجموعات بيانات للتوافق مع المكونات الأخرى.
يتم إرجاع الرسائل القياسية والأخطاء من R إلى سجل المكون.
إذا كنت بحاجة إلى طباعة النتائج في البرنامج النصي R، فيمكنك العثور على النتائج المطبوعة في 70_driver_log ضمن علامة التبويب مخرجات+سجلات في اللوحة اليمنى من المكون.
عينات البرامج النصية
هناك العديد من الطرق لتوسيع خط الأنابيب باستخدام البرامج النصية R المخصصة. يوفر هذا القسم نموذج التعليمات البرمجية للمهام الشائعة.
إضافة برنامج نصي R كإدخال
يدعم مكون Execute R Script ملفات البرنامج النصي R العشوائية كمدخلات. لاستخدامها، يجب تحميلها إلى مساحة العمل الخاصة بك كجزء من ملف .zip.
لتحميل ملف .zip يحتوي على رمز R إلى مساحة العمل، انتقل إلى صفحة أصول مجموعات البيانات . حدد إنشاء مجموعة بيانات، ثم حدد من الملف المحلي والخيار نوع مجموعة بياناتالملف.
تحقق من ظهور الملف المضغوط في مجموعات البيانات الخاصة بي ضمن فئة مجموعات البيانات في شجرة المكون الأيمن.
الاتصال مجموعة البيانات إلى منفذ إدخال حزمة البرامج النصية.
تتوفر كافة الملفات الموجودة في ملف .zip أثناء وقت تشغيل خط الأنابيب.
إذا كان ملف حزمة البرنامج النصي يحتوي على بنية دليل، يتم الاحتفاظ بالهيكل. ولكن يجب عليك تغيير التعليمات البرمجية الخاصة بك لإعداد الدليل . /Script Bundle إلى المسار.
معالجة البيانات
يوضح النموذج التالي كيفية قياس بيانات الإدخال وتطبيعها:
# R version: 3.5.1
# The script MUST contain a function named azureml_main,
# which is the entry point for this component.
# Note that functions dependent on the X11 library,
# such as "View," are not supported because the X11 library
# is not preinstalled.
# The entry point function MUST have two input arguments.
# If the input port is not connected, the corresponding
# dataframe argument will be null.
# Param<dataframe1>: a R DataFrame
# Param<dataframe2>: a R DataFrame
azureml_main <- function(dataframe1, dataframe2){
print("R script run.")
# If a .zip file is connected to the third input port, it's
# unzipped under "./Script Bundle". This directory is added
# to sys.path.
series <- dataframe1$width
# Find the maximum and minimum values of the width column in dataframe1
max_v <- max(series)
min_v <- min(series)
# Calculate the scale and bias
scale <- max_v - min_v
bias <- min_v / dis
# Apply min-max normalizing
dataframe1$width <- dataframe1$width / scale - bias
dataframe2$width <- dataframe2$width / scale - bias
# Return datasets as a Named List
return(list(dataset1=dataframe1, dataset2=dataframe2))
}
قراءة ملف .zip كإدخال
يوضح هذا النموذج كيفية استخدام مجموعة بيانات في ملف .zip كإدخال إلى مكون Execute R Script.
- قم بإنشاء ملف البيانات بتنسيق CSV ، وقم بتسميته mydatafile.csv.
- أنشئ ملف .zip وأضف ملف CSV إلى الأرشيف.
- Upload الملف المضغوط إلى مساحة عمل Azure التعلم الآلي.
- الاتصال مجموعة البيانات الناتجة إلى إدخال ScriptBundle لمكون Execute R Script.
- استخدم التعليمة البرمجية التالية لقراءة بيانات CSV من الملف المضغوط.
azureml_main <- function(dataframe1, dataframe2){
print("R script run.")
mydataset<-read.csv("./Script Bundle/mydatafile.csv",encoding="UTF-8");
# Return datasets as a Named List
return(list(dataset1=mydataset, dataset2=dataframe2))
}
نسخ الصفوف
يوضح هذا النموذج كيفية نسخ السجلات الإيجابية في مجموعة بيانات لتحقيق التوازن بين العينة:
azureml_main <- function(dataframe1, dataframe2){
data.set <- dataframe1[dataframe1[,1]==-1,]
# positions of the positive samples
pos <- dataframe1[dataframe1[,1]==1,]
# replicate the positive samples to balance the sample
for (i in 1:20) data.set <- rbind(data.set,pos)
row.names(data.set) <- NULL
# Return datasets as a Named List
return(list(dataset1=data.set, dataset2=dataframe2))
}
تمرير كائنات R بين تنفيذ مكونات البرنامج النصي R
يمكنك تمرير كائنات R بين مثيلات مكون تنفيذ R Script باستخدام آلية التسلسل الداخلية. يفترض هذا المثال أنك تريد نقل كائن R المسمى A بين مكونين من مكونات Execute R Script.
أضف أول مكون Execute R Script إلى خط الأنابيب الخاص بك. ثم أدخل التعليمة البرمجية التالية في مربع النص R Script لإنشاء كائن
Aمتسلسل كعمود في جدول بيانات إخراج المكون:azureml_main <- function(dataframe1, dataframe2){ print("R script run.") # some codes generated A serialized <- as.integer(serialize(A,NULL)) data.set <- data.frame(serialized,stringsAsFactors=FALSE) return(list(dataset1=data.set, dataset2=dataframe2)) }يتم التحويل الصريح إلى نوع عدد صحيح لأن وظيفة التسلسل تقوم بإخراج البيانات بتنسيق R
Raw، والذي لا يدعمه المصمم.أضف مثيل ثان من مكون Execute R Script ثم قم بتوصيله بمنفذ الإخراج الخاص بالمكون السابق.
اكتب التعليمة البرمجية التالية في مربع النص R Script لاستخراج كائن
Aمن جدول بيانات الإدخال.azureml_main <- function(dataframe1, dataframe2){ print("R script run.") A <- unserialize(as.raw(dataframe1$serialized)) # Return datasets as a Named List return(list(dataset1=dataframe1, dataset2=dataframe2)) }
حزم R المثبتة مسبقا
تتوفر حاليا حزم R المثبتة مسبقا التالية:
| الحزمة | إصدار |
|---|---|
| askpass | 1.1 |
| التأكيد على ذلك | 0.2.1 |
| المنافذ الخلفية | 1.1.4 |
| التمركز | 3.5.1 |
| base64enc | 0.1-3 |
| الهرسك | 1.69.0-1 |
| bindr | 0.1.1 |
| bindrcpp | 0.2.2 |
| البيتوب | 1.0-6 |
| تمهيد | 1.3-22 |
| مكنسه | 0.5.2 |
| المتصل | 3.2.0 |
| الاقحام | 6.0-84 |
| caTools | 1.17.1.2 |
| سيلرانجر | 1.1.0 |
| فصل | 7.3-15 |
| المبادره القطريه | 1.1.0 |
| كليبر | 0.6.0 |
| نظام المجموعة | 2.0.7-1 |
| أدوات الترميز | 0.2-16 |
| مساحة اللون | 1.4-1 |
| المحول البرمجي | 3.5.1 |
| تلوين | 1.3.4 |
| curl | 3.3 |
| data.table | 1.12.2 |
| مجموعات البيانات | 3.5.1 |
| دي بي آي | 1.0.0 |
| دبلير | 1.4.1 |
| هضم | 0.6.19 |
| dplyr | 0.7.6 |
| e1071 | 1.7-2 |
| التقييم | 0.14 |
| فانسي | 0.4.0 |
| فوركاتس | 0.3.0 |
| Foreach | 1.4.4 |
| أجنبي | 0.8-71 |
| خ | 1.3.1 |
| gdata | 2.18.0 |
| الوراثه | 0.0.2 |
| ggplot2 | 3.2.0 |
| جلمنيت | 2.0-18 |
| غراء | 1.3.1 |
| جاور | 0.2.1 |
| المخططات | 3.0.1.1 |
| الرسومات | 3.5.1 |
| grDevices | 3.5.1 |
| شبكة | 3.5.1 |
| gtable | 0.3.0 |
| أدوات اللباس | 3.8.1 |
| ماوي | 2.1.0 |
| هايبر | 0.8 |
| سفينتي | 0.4.2 |
| أدوات أتش تي | 0.3.6 |
| هتر | 1.4.0 |
| إيبرد | 0.9-9 |
| المكررات | 1.0.10 |
| جسونلايت | 1.6 |
| كيرن سموث | 2.23-15 |
| تريكو | 1.23 |
| وصفها | 0.3 |
| شعريه | 0.20-38 |
| الحمم | 1.6.5 |
| لازيفال | 0.2.2 |
| التشحيم | 1.7.4 |
| ماغريتر | 1.5 |
| تخفيض الأسعار | 1 |
| قداس | 7.3-51.4 |
| مصفوفة | 1.2-17 |
| أساليب | 3.5.1 |
| مج سي في | 1.8-28 |
| مايم | 0.7 |
| مقاييس النموذج | 1.2.2 |
| عارض الأزياء | 0.1.4 |
| مونسيل | 0.5.0 |
| nlme | 3.1-140 |
| nnet | 7.3-12 |
| numDeriv | 2016.8-1.1 |
| أوبن سل | 1.4 |
| موازي | 3.5.1 |
| عمود | 1.4.1 |
| pkgconfig | 2.0.2 |
| بلوغر | 0.2.0 |
| رقاقة | 1.8.4 |
| وحدات جميلة | 1.0.2 |
| processx | 3.3.1 |
| برودليم | 2018.04.18 |
| ترقى | 1.2.2 |
| ps | 1.3.0 |
| خرخرة | 0.3.2 |
| كوادبروغ | 1.5-7 |
| كمانتمود | 0.4-15 |
| آر 6 | 2.4.0 |
| عشوائي الغابات | 4.6-14 |
| رجولور بروير | 1.1-2 |
| آر سي بي بي | 1.0.1 |
| آر سي بي رول | 0.3.0 |
| مقروء | 1.3.1 |
| ريدكسل | 1.3.1 |
| الوصفات | 0.1.5 |
| المباراه | 1.0.1 |
| ريبريكس | 0.3.0 |
| إعادة تشكيل2 | 1.4.3 |
| شبكية | 1.12 |
| رلانج | 0.4.0 |
| rmarkdown | 1.13 |
| ROCR | 1.0-7 |
| ربارت | 4.1-15 |
| rstudioapi | 0.1 |
| rvest | 0.3.4 |
| ميزان | 1.0.0 |
| محدد | 0.4-1 |
| مكاني | 7.3-11 |
| المفاتيح | 3.5.1 |
| سكوير م | 2017.10-1 |
| احصائيات | 3.5.1 |
| احصائيات4 | 3.5.1 |
| stringi | 1.4.3 |
| سترينجر | 1.3.1 |
| بقاء | 2.44-1.1 |
| سيس | 3.2 |
| tcltk | 3.5.1 |
| الثرثرة | 2.1.3 |
| مرتب | 0.8.3 |
| مرتب حدد | 0.2.5 |
| تيديفيرس | 1.2.1 |
| الوقتالتاريخ | 3043.102 |
| تينيتكس | 0.13 |
| الأدوات | 3.5.1 |
| tseries | 0.10-47 |
| تي تي آر | 0.23-4 |
| utf8 | 1.1.4 |
| الأدوات المساعدة | 3.5.1 |
| فكترز | 0.1.0 |
| فيريديسلايت | 0.3.0 |
| ضئيله | 0.3-2 |
| يذبل | 2.1.2 |
| إكس فون | 0.8 |
| xml2 | 1.2.0 |
| إكس تي إس | 0.11-2 |
| يامل | 2.2.0 |
| الحماس | 0.1.0 |
| حديقة الحيوانات | 1.8-6 |
الخطوات التالية
راجع مجموعة المكونات المتوفرة ل Azure التعلم الآلي.