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:
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.
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.
İşlem hattınıza R Betiği Yürüt bileşenini ekleyin.
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
dataframe1
baş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
dataframe2
baş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.
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 veParam<dataframe2>
giriş bağımsız değişkenleri olmalıdır.Not
R Betiğini Yürüt bileşenine geçirilen verilere ve
dataframe2
olarakdataframe1
başvurulur. Bu, Azure Machine Learning tasarımcısından farklıdır (tasarımcı başvurusu olarakdataset1
,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.
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.
- Betiği ve diğer özel kaynakları zip dosyası olarak paketleyin.
- Zip dosyasını Dosya Veri Kümesi olarak stüdyoya yükleyin.
- Veri kümesi bileşenini tasarımcı yazma sayfasının sol bileşen bölmesindeki Veri Kümeleri listesinden sürükleyin.
- 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))) }
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.İş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.
Ç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.
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.
Veri kümesini Betik Paketi giriş bağlantı noktasına bağlayın.
.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.
- Veri dosyasını CSV biçiminde oluşturun ve mydatafile.csvolarak adlandırın.
- bir .zip dosyası oluşturun ve CSV dosyasını arşive ekleyin.
- Sıkıştırılmış dosyayı Azure Machine Learning çalışma alanınıza yükleyin.
- Elde edilen veri kümesini R Betiği Yürüt bileşeninizin ScriptBundle girişine bağlayın.
- 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.
İş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.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.
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 .
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin