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

Bu makalede, Azure Machine Learning tasarımcı 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örevleri gerçekleştirebilirsiniz, ö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üklenen paketleri görmek için aşağıdaki kodu herhangi bir Execute R Script bileşenine de 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üt bileşenleri arasında paylaşılmaz.

Not

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

Uyarı

Excute R Betiği bileşeni, JAVA gerektiren paket ve qdap C++ gerektiren paket gibi drc yerel derleme gerektiren paketlerin yüklenmesini desteklemez. Bunun nedeni, bu bileşenin yönetici olmayan izinlerle ö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'a gidip paketinizde arama yapabilir, işletim sisteminize göre bir ikili dosya indirebilir ve AÇIKLAMA dosyasında Yerleşik: bölümünü işaretleyebilirsiniz. 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 yinelemek 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ğini Yürüt'i yapılandırma

R Betiği Yürüt 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 bir 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 tüm girişleri bağlayın. Girişler isteğe bağlıdır ve veri ve ek R kodu içerebilir.

    • Veri Kümesi1: İ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ümesini bağlayabilirsiniz.

    • 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ış bir 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. Bildirilmemiş değişkenler veya raporlanmayan bileşenler veya işlevler kullanma gibi söz dizimi hataları olmadığından emin olun. Bu makalenin sonunda önceden yüklenmiş paket listesine daha fazla dikkat edin. Listelenmeyen paketleri kullanmak için 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 işlevde kullanılmasa bile giriş noktası işlevinin ve giriş bağımsız değişkenlerine Param<dataframe1>Param<dataframe2>sahip olması gerekir.

    Not

    R Betiği Yürüt bileşenine geçirilen verilere ve dataframe1olarak dataframe2 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 önce açıkça bir veri kümesine 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 hatalardan kaçınmak için Betik Paketi bağlantı noktasını kullanın.

    1. Betiği ve diğer özel kaynakları bir zip dosyasına 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 paketinde 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 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 betikleri kullanarak işlem hattınızı genişletmenin birçok yolu vardır. Bu bölümde ortak 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 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 örnek, .zip dosyasındaki bir veri kümesiniN R Betiği Yürüt bileşenine giriş olarak nasıl kullanılacağını gösterir.

  1. Veri dosyasını CSV biçiminde oluşturun ve mydatafile.csv olarak 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. Sonuçta 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üt 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üt bileşenini ekleyin. Ardından R Betiği metin kutusuna aşağıdaki kodu girerek bileşenin çıkış veri tablosunda bir sütun olarak serileştirilmiş bir nesne A oluşturun:

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

    Tamsayı türüne açık dönüştürme işlemi, serileştirme işlevi verileri tasarımcının desteklemediği R Raw biçiminde çıkış yaptığı için yapılır.

  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ş verileri tablosundan A 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

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

Paket Sürüm
şifre istemek 1.1
iddia et ki 0.2.1
geri aktarımlar 1.1.4
temel 3.5.1
base64enc 0.1-3
BH 1.69.0-1
bağlayıcı 0.1.1
bindrcpp 0.2.2
bit seviyesi işlemleri 1.0-6
başlatma 1.3-22
süpürge 0.5.2
çağıran 3.2.0
şapka işareti 6.0-84
caTools 1.17.1.2
hücresayacı 1.1.0
sınıf 7.3-15
CLI 1.1.0
küçük resim 0.6.0
küme 2.0.7-1
codetools 0.2-16
renk alanı 1.4-1
derleyicisi 3.5.1
Crayon 1.3.4
Curl 3.3
veri tablosu 1.12.2
veri kümeleri 3.5.1
DBİ 1.0.0
dbplyr 1.4.1
düzenlemek 0.6.19
dplyr 0.7.6
e1071 1.7-2
değerlendir 0,14
hayran kitlesi 0.4.0
dışlanmışlar 0.3.0
foreach döngüsü 1.4.4
yabancı 0.8-71
Fs 1.3.1
gdata 2.18.0
Generics 0.0.2
ggplot2 3.2.0
glmnet 2.0-18
tutkal 1.3.1
Gower 0.2.1
gplots 3.0.1.1
grafikler 3.5.1
grDevices 3.5.1
Kılavuz 3.5.1
gtablo 0.3.0
tabureler 3.8.1
liman 2.1.0
daha yüksek 0.8
Hms 0.4.2
HTML araçları 0.3.6
httr 1.4.0
İpred 0.9-9
Yineleyicilerde 1.0.10
jsonlite 1.6
KernSmooth 2.23-15
örgü örme 1.23
Etiketleme 0,3
kafes 0.20-38
lav 1.6.5
lazyeval 0.2.2
Lubridate (R programlama dilinde tarih ve zaman işlemleri için kullanılan bir paket) 1.7.4
magrittr 1.5
işaretleme 1
KÜTLE 7.3-51.4
Matris 1.2-17
yöntemler 3.5.1
mgcv 1.8-28
Mıme 0,7
ModelMetrics 1.2.2
modelleyici 0.1.4
munsell 0.5.0
nlme 3.1-140
nnet 7.3-12
numDeriv 2016.8-1.1
OpenSSL 1.4
paralel 3.5.1
sütun 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
ilerleme 1.2.2
Ps 1.3.0
purrr 0.3.2
dörtlü 1.5-7
quantmod 0.4-15
R6 2.4.0
randomForest algoritması 4.6-14
RColorBrewer 1.1-2
Rcpp 1.0.1
RcppRoll 0.3.0
Okuyucu 1.3.1
readxl (Excel dosyalarını okuma kütüphanesi) 1.3.1
yemek tarifleri 0.1.5
Rövanş 1.0.1
tekrar üretilebilir örnek 0.3.0
yeniden şekillendirme2 1.4.3
yeniden düzenleme 1.12
rlang 0.4.0
rmarkdown 1.13
ROCR 1.0-7
rpart (R dilinde sınıflandırma veya regresyon modelleri için kullanılan bir paket) 4.1-15
rstudioapi 0,1
rvest 0.3.4
Terazi 1.0.0
seçici 0.4-1
uzamsal 7.3-11
Splines 3.5.1
KAREM 2017.10-1
Istatistik 3.5.1
istatistikler4 3.5.1
string 1.4.3
dizeleyici 1.3.1
beka 2.44-1.1
Sistem 3.2
tcltk (grafik kullanıcı arabirimi için bir programlama dili kütüphanesi) 3.5.1
tibble 2.1.3
derleyici 0.8.3
tidyselect 0.2.5
tidyverse 1.2.1
zamanTarih 3043.102
tinytex 0,13
araçlar 3.5.1
tseries 0.10-47
TTR 0.23-4
utf8 1.1.4
Yardımcılar 3.5.1
vctr'lar 0.1.0
viridisLite 0.3.0
bıyık 0.3-2
birlikte 2.1.2
xfun 0.8
xml2 1.2.0
metinler 0.11-2
yaml (YAML veri formatı) 2.2.0
zeallot 0.1.0
hayvanat bahçesi 1.8-6

Sonraki adımlar

Bkz. Azure Machine Learning için kullanılabilen bileşenler kümesi.