R Betiği bileşenini yürütme

Bu makalede, Azure Machine Learning tasarımcısı işlem hattınızda R kodu çalıştırmak için R Betiği Yürüt bileşeninin nasıl kullanılacağı açıklanmaktadır.

R ile, mevcut bileşenler tarafından desteklenmeyen görevler yapabilirsiniz, örneğin:

  • Özel veri dönüştürmeleri oluşturma
  • Tahminleri değerlendirmek için kendi ölçümlerinizi kullanma
  • Tasarımcıda tek başına bileşenler olarak uygulanmamış algoritmaları kullanarak model oluşturma

R sürümü desteği

Azure Machine Learning tasarımcısı R'nin CRAN (Kapsamlı R Arşiv Ağı) dağıtımını kullanır. Şu anda kullanılan sürüm CRAN 3.5.1'dir.

Desteklenen R paketleri

R ortamı 100'den fazla paketle önceden yüklenmiştir. Tam liste için Önceden yüklenmiş R paketleri bölümüne bakın.

Yüklü paketleri görmek için herhangi bir R Betiği Yürüt bileşenine aşağıdaki kodu da ekleyebilirsiniz.

azureml_main <- function(dataframe1, dataframe2){
  print("R script run.")
  dataframe1 <- data.frame(installed.packages())
  return(list(dataset1=dataframe1, dataset2=dataframe2))
}

Not

İşlem hattınız önceden yüklenmiş listede olmayan paketlere ihtiyaç duyan birden çok Execute R Script bileşeni içeriyorsa, paketleri her bileşene yükleyin.

R paketlerini yükleme

Ek R paketleri yüklemek için yöntemini kullanın install.packages() . Her R Betiği Yürüt bileşeni için paketler yüklenir. Bunlar diğer R Betiği Yürütme bileşenleri arasında paylaşılamaz.

Not

Betik paketinden R paketinin yüklenmesi ÖNERILMEZ. Paketlerin doğrudan betik düzenleyicisine yüklenmesi önerilir. gibi install.packages("zoo",repos = "https://cloud.r-project.org")paketleri yüklerken CRAN deposunu belirtin.

Uyarı

Excute R Script bileşeni, JAVA gerektiren paket ve drc C++ gerektiren paket gibi qdap yerel derleme gerektiren paketlerin yüklenmesini desteklemez. Bunun nedeni, bu bileşenin yönetici olmayan izinlere sahip önceden yüklenmiş bir ortamda yürütülmesidir. Tasarımcı bileşenleri Ubuntu üzerinde çalıştığından, Windows için önceden oluşturulmuş paketleri yüklemeyin. Bir paketin windows üzerinde önceden oluşturulmuş olup olmadığını denetlemek için CRAN'e gidip paketinizde arama yapabilir, işletim sisteminize göre bir ikili dosya indirebilir ve AÇIKLAMAdosyasındaKi Yerleşik: bölümünü kontrol edebilirsiniz. Aşağıda bir örnek verilmiştir: R paketi açıklaması

Bu örnekte Hayvanat Bahçesi'nin nasıl yükleneceği gösterilmektedir:

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

Not

Bir paketi yüklemeden önce, yükleme işlemini tekrarlamaması için paketin zaten var olup olmadığını denetleyin. Yüklemeleri yinelemek web hizmeti isteklerinin zaman aşımına neden olabilir.

Kayıtlı veri kümesine erişim

Çalışma alanınızdaki kayıtlı veri kümelerine erişmek için aşağıdaki örnek koda başvurabilirsiniz:

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 Betiği Yürütmeyi yapılandırma

Execute R Script bileşeni başlangıç noktası olarak örnek kod içerir.

R bileşeni için giriş diyagramı

Tasarımcıda depolanan veri kümeleri, bu bileşenle birlikte yüklendiğinde otomatik olarak R veri çerçevesine dönüştürülür.

  1. İşlem hattınıza R Betiği Yürüt bileşenini ekleyin.

  2. Betiğin ihtiyaç duyduğu girişleri bağlayın. Girişler isteğe bağlıdır ve veri ve ek R kodu içerebilir.

    • Dataset1: İlk girişe olarak dataframe1başvurun. Giriş veri kümesi CSV, TSV veya ARFF dosyası olarak biçimlendirilmelidir. İsterseniz bir Azure Machine Learning veri kümesine de bağlanabilirsiniz.

    • Dataset2: İkinci girişe olarak dataframe2başvurun. Bu veri kümesinin csv, TSV veya ARFF dosyası ya da Azure Machine Learning veri kümesi olarak da biçimlendirilmesi gerekir.

    • Betik Paketi: Üçüncü giriş .zip dosyaları kabul eder. Sıkıştırılmış dosya birden çok dosya ve birden çok dosya türü içerebilir.

  3. R betiği metin kutusuna geçerli R betiğini yazın veya yapıştırın.

    Not

    Betiğinizi yazarken dikkatli olun. Bildirilmeyen değişkenleri veya içeri aktarılmamış bileşenleri veya işlevleri kullanma gibi söz dizimi hataları olmadığından emin olun. Bu makalenin sonundaki önceden yüklenmiş paket listesine fazla dikkat edin. Listelenmeyen paketleri kullanmak için bunları betiğinize yükleyin. install.packages("zoo",repos = "https://cloud.r-project.org") bunun bir örneğidir.

    Başlamanıza yardımcı olması için R Betiği metin kutusu, düzenleyebileceğiniz veya değiştirebileceğiniz örnek kodla önceden doldurulur.

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

    Bu bağımsız değişkenler Param<dataframe1> işlevde kullanılmasa bile giriş noktası işlevinde ve Param<dataframe2>giriş bağımsız değişkenleri olmalıdır.

    Not

    R Betiğini Yürüt bileşenine geçirilen verilere ve dataframe2olarak dataframe1 başvurulur. Bu, Azure Machine Learning tasarımcısından farklıdır (tasarımcı başvurusu olarak dataset1, dataset2). Betiğinizde giriş verilerine doğru başvuruldığından emin olun.

    Not

    Mevcut R kodunun tasarımcı işlem hattında çalıştırılması için küçük değişiklikler gerekebilir. Örneğin, CSV biçiminde sağladığınız giriş verileri, kodunuzda kullanabilmeniz için veri kümesine açıkça dönüştürülmelidir. R dilinde kullanılan veri ve sütun türleri de tasarımcıda kullanılan veri ve sütun türlerinden bazı açılardan farklılık gösterir.

  4. Betiğiniz 16 KB'tan büyükse, CommandLine'ın 16597 karakter sınırını aşması gibi hataları önlemek için Betik Paketi bağlantı noktasını kullanın.

    1. Betiği ve diğer özel kaynakları zip dosyası olarak paketleyin.
    2. Zip dosyasını Dosya Veri Kümesi olarak stüdyoya yükleyin.
    3. Veri kümesi bileşenini tasarımcı yazma sayfasının sol bileşen bölmesindeki Veri Kümeleri listesinden sürükleyin.
    4. Veri kümesi bileşenini R Betiği Yürüt bileşeninin Betik Paketi bağlantı noktasına bağlayın.

    Betik paketindeki betiği kullanmak için örnek kod aşağıda verilmiştir:

    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. Rastgele Tohum için, R ortamının içinde rastgele tohum değeri olarak kullanılacak bir değer girin. Bu parametre, R kodunda çağırmaya set.seed(value) eşdeğerdir.

  6. İşlem hattını gönderin.

Sonuçlar

R Betiği yürütme bileşenleri birden çok çıkış döndürebilir, ancak R veri çerçeveleri olarak sağlanmalıdır. Tasarımcı, diğer bileşenlerle uyumluluk için veri çerçevelerini otomatik olarak veri kümelerine dönüştürür.

R'den gelen standart iletiler ve hatalar bileşenin günlüğüne döndürülür.

R betiğinde sonuçları yazdırmanız gerekiyorsa, yazdırılan sonuçları bileşenin sağ panelindeki Çıkışlar+günlükler sekmesinin altında 70_driver_log bulabilirsiniz.

Örnek betikler

Özel R betiklerini kullanarak işlem hattınızı genişletmenin birçok yolu vardır. Bu bölümde, yaygın görevler için örnek kod sağlanır.

Giriş olarak R betiği ekleme

R Betiği Yürüt bileşeni, giriş olarak rastgele R betik dosyalarını destekler. Bunları kullanmak için, .zip dosyasının bir parçası olarak çalışma alanınıza yüklemeniz gerekir.

  1. Çalışma alanınıza R kodu içeren bir .zip dosyası yüklemek için Veri kümeleri varlık sayfasına gidin. Veri kümesi oluştur'u ve ardından Yerel dosyadan ve Dosya veri kümesi türü seçeneğini belirleyin.

  2. Sıkıştırılmış dosyanın sol bileşen ağacındaki Veri Kümeleri kategorisinin altındaki Veri Kümelerim'de göründüğünü doğrulayın.

  3. Veri kümesini Betik Paketi giriş bağlantı noktasına bağlayın.

  4. .zip dosyasındaki tüm dosyalar işlem hattı çalışma zamanında kullanılabilir.

    Betik paketi dosyası bir dizin yapısı içeriyorsa, yapı korunur. Ancak ./Script Bundle dizinini yola eklemek için kodunuzu değiştirmeniz gerekir.

Veri işleme

Aşağıdaki örnekte giriş verilerini ölçeklendirme ve normalleştirme adımları gösterilmektedir:

# 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 dosyasını giriş olarak okuma

Bu örnekte, .zip dosyasındaki bir veri kümesiniN R Betiği Yürüt bileşenine giriş olarak nasıl kullanılacağı gösterilmektedir.

  1. Veri dosyasını CSV biçiminde oluşturun ve mydatafile.csvolarak adlandırın.
  2. bir .zip dosyası oluşturun ve CSV dosyasını arşive ekleyin.
  3. Sıkıştırılmış dosyayı Azure Machine Learning çalışma alanınıza yükleyin.
  4. Elde edilen veri kümesini R Betiği Yürüt bileşeninizin ScriptBundle girişine bağlayın.
  5. Sıkıştırılmış dosyadan CSV verilerini okumak için aşağıdaki kodu kullanın.
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))
}

Satırları çoğaltma

Bu örnekte, örneği dengelemek için veri kümesindeki pozitif kayıtların nasıl çoğaltılması gösterilmektedir:

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 Betiği Yürütme bileşenleri arasında R nesneleri geçirme

İç serileştirme mekanizmasını kullanarak R Betiği Yürütme bileşeninin örnekleri arasında R nesneleri geçirebilirsiniz. Bu örnekte, adlı A R nesnesini iki Execute R Script bileşeni arasında taşımak istediğiniz varsayılır.

  1. İşlem hattınıza ilk R Betiği Yürütme bileşenini ekleyin. Ardından, bileşenin çıkış veri tablosunda bir sütun olarak serileştirilmiş bir nesne A oluşturmak için R Betiği metin kutusuna aşağıdaki kodu girin:

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

    Serileştirme işlevi, verileri tasarımcının desteklemediği R Raw biçiminde çıkardığından tamsayı türüne açık dönüştürme gerçekleştirilir.

  2. R Betiği Yürüt bileşeninin ikinci bir örneğini ekleyin ve önceki bileşenin çıkış bağlantı noktasına bağlayın.

  3. Giriş veri tablosundan nesne A ayıklamak için R Betiği metin kutusuna aşağıdaki kodu yazın.

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

Önceden yüklenmiş R paketleri

Aşağıdaki önceden yüklenmiş R paketleri şu anda kullanılabilir:

Paket Sürüm
askpass 1.1
assertthat 0.2.1
backports 1.1.4
base 3.5.1
base64enc 0.1-3
BH 1.69.0-1
bindr 0.1.1
bindrcpp 0.2.2
bitops 1.0-6
başlatma 1.3-22
broom 0.5.2
callr 3.2.0
düzeltme işareti 6.0-84
caTools 1.17.1.2
cellranger 1.1.0
sınıf 7.3-15
cli 1.1.0
küçük resim 0.6.0
cluster 2.0.7-1
codetools 0.2-16
colorspace 1.4-1
compiler 3.5.1
crayon 1.3.4
curl 3.3
data.table 1.12.2
veri kümeleri 3.5.1
DBI 1.0.0
dbplyr 1.4.1
digest 0.6.19
dplyr 0.7.6
e1071 1.7-2
değerlendir 0.14
fansi 0.4.0
forcats 0.3.0
foreach 1.4.4
foreign 0.8-71
Fs 1.3.1
gdata 2.18.0
Generics 0.0.2
ggplot2 3.2.0
glmnet 2.0-18
glue 1.3.1
gower 0.2.1
gplots 3.0.1.1
grafikler 3.5.1
grDevices 3.5.1
grid 3.5.1
gtable 0.3.0
gtools 3.8.1
haven 2.1.0
highr 0,8
hms 0.4.2
htmltools 0.3.6
httr 1.4.0
ipred 0.9-9
iterators 1.0.10
jsonlite 1.6
KernSmooth 2.23-15
knitr 1,23
labeling 0.3
lattice 0.20-38
lava 1.6.5
lazyeval 0.2.2
lubridate 1.7.4
magrittr 1,5
markdown 1
MASS 7.3-51.4
Matris 1.2-17
methods 3.5.1
mgcv 1.8-28
mime 0.7
ModelMetrics 1.2.2
modelr 0.1.4
munsell 0.5.0
nlme 3.1-140
nnet 7.3-12
numDeriv 2016.8-1.1
openssl 1.4
parallel 3.5.1
pillar 1.4.1
pkgconfig 2.0.2
plogr 0.2.0
plyr 1.8.4
prettyunits 1.0.2
processx 3.3.1
prodlim 2018.04.18
progress 1.2.2
Ps 1.3.0
purrr 0.3.2
quadprog 1.5-7
quantmod 0.4-15
R6 2.4.0
randomForest 4.6-14
RColorBrewer 1.1-2
Rcpp 1.0.1
RcppRoll 0.3.0
readr 1.3.1
readxl 1.3.1
recipes 0.1.5
rematch 1.0.1
reprex 0.3.0
reshape2 1.4.3
reticulate 1.12
rlang 0.4.0
rmarkdown 1.13
ROCR 1.0-7
rpart 4.1-15
rstudioapi 0.1
rvest 0.3.4
scales 1.0.0
selectr 0.4-1
spatial 7.3-11
splines 3.5.1
SQUAREM 2017.10-1
stats 3.5.1
stats4 3.5.1
stringi 1.4.3
stringr 1.3.1
survival 2.44-1.1
sys 3.2
tcltk 3.5.1
tibble 2.1.3
tidyr 0.8.3
tidyselect 0.2.5
tidyverse 1.2.1
timeDate 3043.102
tinytex 0.13
araçlar 3.5.1
tseries 0.10-47
TTR 0.23-4
utf8 1.1.4
utils 3.5.1
vctrs 0.1.0
viridisLite 0.3.0
whisker 0.3-2
withr 2.1.2
xfun 0,8
xml2 1.2.0
xts 0.11-2
yaml 2.2.0
zeallot 0.1.0
zoo 1.8-6

Sonraki adımlar

Bkz. Azure Machine Learning'de kullanılabilen bileşenler kümesi .