مشاركة عبر


تنفيذ مكون البرنامج النصي R

توضح هذه المقالة كيفية استخدام مكون Execute 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() الأسلوب . يتم تثبيت الحزم لكل مكون تنفيذ البرنامج النصي R. لا تتم مشاركتها عبر مكونات 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: جزء في ملف DESCRIPTION . فيما يلي مثال: وصف حزمة R

يوضح هذا النموذج كيفية تثبيت Zoo:

# 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

يحتوي مكون Execute R Script على نموذج التعليمات البرمجية كنقطة بداية.

رسم تخطيطي للمدخلات لمكون R

يتم تحويل مجموعات البيانات المخزنة في المصمم تلقائيا إلى إطار بيانات R عند تحميلها مع هذا المكون.

  1. أضف مكون Execute R Script إلى البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك.

  2. قم بتوصيل أي مدخلات يحتاجها البرنامج النصي. المدخلات اختيارية ويمكن أن تتضمن بيانات ورمز R إضافي.

    • Dataset1: الرجوع إلى الإدخال الأول ك dataframe1. يجب تنسيق مجموعة بيانات الإدخال كملف CSV أو TSV أو ARFF. أو يمكنك توصيل مجموعة بيانات التعلم الآلي من Azure.

    • Dataset2: الرجوع إلى الإدخال الثاني ك dataframe2. يجب أيضا تنسيق مجموعة البيانات هذه كملف CSV أو TSV أو ARFF أو كمجموعة بيانات التعلم الآلي من Azure.

    • حزمة البرنامج النصي: يقبل الإدخال الثالث ملفات .zip. يمكن أن يحتوي الملف المضغوط على ملفات متعددة وأنواع ملفات متعددة.

  3. في مربع نص البرنامج النصي R ، اكتب أو الصق نص 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 ك dataframe1 و dataframe2، والتي تختلف عن مصمم التعلم الآلي من Azure (مرجع المصمم ك dataset1، dataset2). تأكد من الإشارة إلى بيانات الإدخال بشكل صحيح في البرنامج النصي الخاص بك.

    ملاحظة

    قد تحتاج التعليمات البرمجية R الموجودة إلى تغييرات طفيفة لتشغيلها في البنية الأساسية لبرنامج ربط العمليات التجارية للمصمم. على سبيل المثال، يجب تحويل بيانات الإدخال التي تقدمها بتنسيق CSV بشكل صريح إلى مجموعة بيانات قبل أن تتمكن من استخدامها في التعليمات البرمجية الخاصة بك. تختلف أنواع البيانات والأعمدة المستخدمة في لغة R أيضا في بعض الطرق عن أنواع البيانات والأعمدة المستخدمة في المصمم.

  4. إذا كان البرنامج النصي الخاص بك أكبر من 16 كيلوبايت، فاستخدم منفذ حزمة البرنامج النصي لتجنب أخطاء مثل تجاوز CommandLine الحد الأقصى وهو 16597 حرفا.

    1. تجميع البرنامج النصي والموارد المخصصة الأخرى في ملف مضغوط.
    2. قم بتحميل الملف المضغوط كمجموعة بيانات ملف إلى الاستوديو.
    3. اسحب مكون مجموعة البيانات من قائمة Datasets في جزء المكون الأيسر في صفحة تأليف المصمم.
    4. قم بتوصيل مكون مجموعة البيانات بمنفذ حزمة البرنامج النصي لمكون Execute 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)))
    }
    
  5. بالنسبة ل Random Seed، أدخل قيمة لاستخدامها داخل بيئة R كقيمة أولية عشوائية. هذه المعلمة تعادل استدعاء set.seed(value) في التعليمات البرمجية R.

  6. إرسال البنية الأساسية.

النتائج

يمكن أن ترجع مكونات تنفيذ البرنامج النصي R مخرجات متعددة، ولكن يجب توفيرها كإطارات بيانات R. يقوم المصمم تلقائيا بتحويل إطارات البيانات إلى مجموعات بيانات للتوافق مع المكونات الأخرى.

يتم إرجاع الرسائل والأخطاء القياسية من R إلى سجل المكون.

إذا كنت بحاجة إلى طباعة النتائج في البرنامج النصي R، يمكنك العثور على النتائج المطبوعة في 70_driver_log ضمن علامة التبويب Outputs+logs في اللوحة اليمنى للمكون.

نماذج البرامج النصية

هناك العديد من الطرق لتوسيع البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك باستخدام البرامج النصية R المخصصة. يوفر هذا القسم نموذج التعليمات البرمجية للمهام الشائعة.

إضافة برنامج نصي R كمدخل

يدعم مكون Execute R Script ملفات البرنامج النصي R العشوائية كمدخلات. لاستخدامها، يجب تحميلها إلى مساحة العمل كجزء من ملف .zip.

  1. لتحميل ملف .zip يحتوي على رمز R إلى مساحة العمل الخاصة بك، انتقل إلى صفحة أصول Datasets . حدد Create dataset، ثم حدد From local file وخيار File dataset type.

  2. تحقق من ظهور الملف المضغوط في مجموعات البيانات الخاصة بي ضمن فئة Datasets في شجرة المكونات اليسرى.

  3. قم بتوصيل مجموعة البيانات بمنفذ إدخال حزمة البرنامج النصي .

  4. تتوفر جميع الملفات في ملف .zip أثناء وقت تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية.

    إذا احتوى ملف حزمة البرنامج النصي على بنية دليل، يتم الاحتفاظ بالبنية. ولكن يجب عليك تغيير التعليمات البرمجية الخاصة بك ل prepend الدليل ./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.

  1. قم بإنشاء ملف البيانات بتنسيق CSV، وقم بتسمية mydatafile.csv.
  2. إنشاء ملف .zip وإضافة ملف CSV إلى الأرشيف.
  3. قم بتحميل الملف المضغوط إلى مساحة عمل التعلم الآلي من Azure.
  4. قم بتوصيل مجموعة البيانات الناتجة بإدخال ScriptBundle لمكون Execute R Script .
  5. استخدم التعليمات البرمجية التالية لقراءة بيانات 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 بين مكونات Execute R Script

يمكنك تمرير كائنات R بين مثيلات مكون Execute R Script باستخدام آلية التسلسل الداخلية. يفترض هذا المثال أنك تريد نقل كائن R المسمى A بين مكوني Execute R Script.

  1. أضف أول مكون 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 ، والتي لا يدعمها المصمم.

  2. أضف مثيلا ثانيا من مكون Execute R Script ، وقم بتوصيله بمنفذ الإخراج للمكون السابق.

  3. اكتب التعليمات البرمجية التالية في مربع النص 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
cellranger 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
حليقه 3.3
data.table 1.12.2
مجموعات البيانات 3.5.1
DBI 1.0.0
dbplyr 1.4.1
هضم 0.6.19
dplyr 0.7.6
e1071 1.7-2
التقييم 0.14
المعجبون 0.4.0
forcats 0.3.0
foreach 1.4.4
أجنبي 0.8-71
خ ⁦⁩⁦⁩1.3.1
بيانات gdata 2.18.0
الوراثه 0.0.2
ggplot2 3.2.0
شبكة glmnet 2.0-18
غراء ⁦⁩⁦⁩1.3.1
جاور 0.2.1
gplots 3.0.1.1
الرسومات 3.5.1
grDevices 3.5.1
شبكة 3.5.1
gtable 0.3.0
gtools 3.8.1
ماوي 2.1.0
أعلى 0.8
سفينتي 0.4.2
htmltools 0.3.6
httr 1.4.0
ipred 0.9-9
المكررات 1.0.10
jsonlite 1.6
KernSmooth 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
mgcv 1.8-28
mime 0.7
ModelMetrics 1.2.2
أداة النمذجة 0.1.4
مونسيل 0.5.0
nlme 3.1-140
nnet 7.3-12
numDeriv 2016.8-1.1
openssl 1.4
موازي 3.5.1
عمود 1.4.1
تكوين pkg 2.0.2
plogr 0.2.0
plyr 1.8.4
وحدات جميلة 1.0.2
عمليةx 3.3.1
prodlim 2018.04.18
ترقى 1.2.2
ps 1.3.0
purrr 0.3.2
quadprog 1.5-7
quantmod 0.4-15
R6 2.4.0
غابة عشوائية 4.6-14
RColorBrewer 1.1-2
Rcpp 1.0.1
RcppRoll 0.3.0
للقراءة ⁦⁩⁦⁩1.3.1
readxl ⁦⁩⁦⁩1.3.1
الوصفات 0.1.5
المباراه 1.0.1
reprex 0.3.0
إعادة الشكل2 1.4.3
إعادة التكهن 1.12
rlang 0.4.0
وضع علامة rmarkdown 1.13
ROCR 1.0-7
جزء r 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
stringr ⁦⁩⁦⁩1.3.1
بقاء 2.44-1.1
sys 3.2
tcltk 3.5.1
ثرثرة 2.1.3
مرتب 0.8.3
تحديد مرتب 0.2.5
تيديفيرس 1.2.1
timeDate 3043.102
نص صغير 0.13
الأدوات 3.5.1
أزرار 0.10-47
TTR 0.23-4
utf8 1.1.4
utils 3.5.1
vctrs 0.1.0
viridisLite 0.3.0
ضئيله 0.3-2
معر 2.1.2
xfun 0.8
xml2 1.2.0
xts 0.11-2
yaml 2.2.0
زايلوت 0.1.0
حديقة الحيوانات 1.8-6

الخطوات التالية

راجع مجموعة المكونات المتوفرة للتعلم الآلي من Azure.