Menjalankan komponen Skrip R
Artikel ini menjelaskan cara menggunakan komponen Jalankan Skrip R untuk menjalankan kode R di alur perancang Azure Machine Learning Anda.
Dengan R, Anda dapat melakukan tugas-tugas yang tidak didukung oleh komponen yang ada, seperti:
- Membuat transformasi data kustom
- Menggunakan metrik Anda sendiri untuk mengevaluasi prediksi
- Membangun model menggunakan algoritma yang tidak diimplementasikan sebagai komponen mandiri dalam perancang
Dukungan versi R
Perancang Azure Machine Learning menggunakan distribusi CRAN (Comprehensive R Archive Network) dari R. Versi yang saat ini digunakan adalah CRAN 3.5.1.
Paket R yang didukung
Lingkungan R sudah diinstal sebelumnya dengan lebih dari 100 paket. Untuk daftar lengkap, lihat bagian Paket R yang sudah diinstal sebelumnya.
Anda juga dapat menambahkan kode berikut ke komponen Jalankan Skrip R apa pun, untuk melihat paket yang diinstal.
azureml_main <- function(dataframe1, dataframe2){
print("R script run.")
dataframe1 <- data.frame(installed.packages())
return(list(dataset1=dataframe1, dataset2=dataframe2))
}
Catatan
Jika alur Anda berisi beberapa komponen Jalankan Skrip R yang memerlukan paket yang tidak ada dalam daftar yang sudah diinstal sebelumnya, instal paket di setiap komponen.
Menginstal paket R
Untuk menginstal paket R tambahan, gunakan metode install.packages()
. Paket diinstal untuk setiap komponen Jalankan Skrip R. Paket tersebut tidak dibagikan di komponen Jalankan Skrip R lainnya.
Catatan
JANGAN instal paket R dari bundel skrip. Sebaiknya instal paket langsung di editor skrip.
Tentukan repositori CRAN saat Anda menginstal paket, seperti install.packages("zoo",repos = "https://cloud.r-project.org")
.
Peringatan
Komponen Jalankan Skrip R tidak mendukung penginstalan paket yang memerlukan kompilasi asli, seperti paket qdap
yang memerlukan JAVA dan paket drc
yang memerlukan C++. Hal ini karena komponen ini dijalankan di lingkungan yang sudah diinstal sebelumnya dengan izin non-admin.
Jangan menginstal paket yang sudah dibuat sebelumnya/untuk Windows, karena komponen perancang berjalan di Ubuntu. Untuk memeriksa apakah paket sudah dibuat sebelumnya di windows, Anda bisa membuka CRAN dan mencari paket Anda, mengunduh satu file biner sesuai dengan OS Anda, dan memeriksa bagian Built: dalam file DESKRIPSI. Berikut ini adalah contohnya:
Sampel ini memperlihatkan cara menginstal 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))
}
Catatan
Sebelum Anda menginstal paket, periksa apakah paket sudah ada agar Anda tidak mengulangi penginstalan. Penginstalan berulang dapat menyebabkan waktu habis permintaan layanan web.
Akses ke himpunan data terdaftar
Anda bisa merujuk ke kode sampel berikut untuk mengakses himpunan data terdaftar di ruang kerja Anda:
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))
}
Cara mengonfigurasi Execute R Script
Komponen Jalankan Skrip R berisi kode sampel sebagai titik awal.
Himpunan data yang disimpan dalam perancang secara otomatis dikonversi ke bingkai data R saat dimuat dengan komponen ini.
Tambahkan komponen Jalankan Skrip R ke alur Anda.
Sambungkan input apa pun yang diperlukan skrip. Input bersifat opsional dan dapat mencakup data serta kode R tambahan.
Dataset1: Merujuk input pertama sebagai
dataframe1
. Himpunan data input harus diformat sebagai file CSV, TSV, atau ARFF. Atau Anda dapat menyambungkan himpunan Azure Machine Learning.Dataset2: Merujuk input kedua sebagai
dataframe2
. Himpunan data ini juga harus diformat sebagai file CSV, TSV, atau ARFF, atau sebagai himpunan data Azure Machine Learning.Bundel Skrip: Input ketiga menerima file .zip. File zip dapat berisi beberapa file dan beberapa jenis file.
Dalam kotak teks Skrip R, ketik atau tempelkan skrip R yang valid.
Catatan
Hati-hati saat menulis skrip Anda. Pastikan tidak ada kesalahan sintaks, seperti menggunakan variabel yang tidak dideklarasikan atau komponen atau fungsi yang tidak dilaporkan. Beri perhatian lebih pada daftar paket yang sudah diinstal sebelumnya di akhir artikel ini. Untuk menggunakan paket yang tidak ada dalam daftar, instal paket di skrip Anda. Contohnya
install.packages("zoo",repos = "https://cloud.r-project.org")
.Untuk membantu Anda memulai, kotak teks Skrip R sudah diisi dengan kode sampel, yang dapat Anda edit atau ganti.
# 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)) }
Fungsi titik entri harus memiliki argumen input
Param<dataframe1>
danParam<dataframe2>
, bahkan ketika argumen ini tidak digunakan dalam fungsi.Catatan
Data yang diteruskan ke komponen Jalankan Skrip R direferensikan sebagai
dataframe1
dandataframe2
, yang berbeda dari perancang Azure Machine Learning (referensi perancang sebagaidataset1
,dataset2
). Pastikan data input direferensikan dengan benar di skrip Anda.Catatan
Kode R yang ada mungkin memerlukan perubahan kecil untuk dijalankan dalam alur perancang. Misalnya, data input yang Anda berikan dalam format CSV harus secara eksplisit dikonversi ke himpunan data sebelum Anda dapat menggunakannya dalam kode Anda. Jenis data dan kolom yang digunakan dalam bahasa R juga berbeda dalam beberapa hal mulai dari jenis data dan kolom yang digunakan dalam desainer.
Jika skrip Anda lebih besar dari 16 KB, gunakan port Script Bundle untuk menghindari kesalahan seperti CommandLine exceeds the limit of 16597 characters.
- Gabungkan skrip dan sumber daya kustom lainnya ke file zip.
- Unggah file zip sebagai Himpunan Data File ke studio.
- Seret komponen himpunan data dari daftar Himpunan data di panel kiri komponen di halaman penulisan perancang.
- Hubungkan komponen himpunan data ke port Paket Skrip dari komponen Jalankan Skrip R.
Berikut adalah kode sampel untuk menggunakan skrip dalam bundel skrip:
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))) }
Untuk Random Seed, masukkan nilai untuk digunakan di dalam lingkungan R sebagai nilai awal acak. Parameter ini sama dengan pemanggilan
set.seed(value)
dalam kode R.Kirim alur.
Hasil
Komponen Jalankan Skrip R dapat menampilkan beberapa output, tetapi harus disediakan sebagai bingkai data R. Perancang secara otomatis mengubah bingkai data ke himpunan data agar kompatibel dengan komponen lain.
Pesan dan kesalahan standar dari R ditampilkan ke log komponen.
Jika Anda perlu mencetak hasil dalam skrip R, Anda dapat menemukan hasil cetaknya di 70_driver_log di bagian tab Output +log di panel kanan komponen.
Skrip sampel
Ada banyak cara untuk memperluas alur Anda menggunakan skrip R kustom. Bagian ini menyediakan kode sampel untuk tugas umum.
Menambahkan skrip R sebagai input
Komponen Jalankan Skrip R mendukung file skrip R yang berubah-ubah sebagai input. Untuk menggunakannya, Anda harus mengunggahnya ke ruang kerja sebagai bagian dari file .zip Anda.
Untuk mengunggah file .zip yang berisi kode R ke ruang kerja Anda, buka halaman aset Himpunan Data. Pilih Buat himpunan data, lalu pilih Dari file lokal dan opsi Jenis himpunan data file.
Pastikan bahwa file zip muncul di Himpunan Data Saya di bagian kategori Himpunan data di pohon komponen kiri.
Sambungkan himpunan data ke port input Script Bundle.
Semua file dalam file .zip tersedia selama runtime alur.
Jika file bundel skrip berisi struktur direktori, struktur dipertahankan. Namun, Anda harus mengubah kode Anda untuk menambahkan direktori ./Script Bundle ke jalur.
Proses data
Sampel berikut memperlihatkan cara menskalakan dan menormalkan data input:
# 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))
}
Membaca file .zip sebagai input
Sampel ini menunjukkan cara menggunakan himpunan data dalam file .zip sebagai input ke komponen Jalankan Skrip R.
- Buat file data dalam format CSV, dan beri nama mydatafile.csv.
- Buat file .zip dan tambahkan file CSV ke arsip.
- Unggah file zip ke ruang kerja Azure Machine Learning Anda.
- Hubungkan himpunan data yang dihasilkan ke input ScriptBundle dari komponen Jalankan Skrip R Anda.
- Gunakan kode berikut untuk membaca data CSV dari file zip.
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))
}
Mereplikasi baris
Sampel ini memperlihatkan cara mereplikasi rekaman positif dalam himpunan data untuk menyeimbangkan sampel:
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))
}
Teruskan objek R di antara komponen Jalankan Skrip R
Anda dapat meneruskan objek R antara contoh komponen Jalankan Skrip R dengan menggunakan mekanisme serialisasi internal. Contoh ini mengasumsikan bahwa Anda ingin memindahkan objek R yang diberi nama A
di antara dua komponen Jalankan Skrip R.
Tambahkan komponen Jalankan Skrip R pertama ke alur Anda. Kemudian masukkan kode berikut dalam kotak teks Skrip R untuk membuat objek serial
A
sebagai kolom dalam tabel data output komponen: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)) }
Konversi eksplisit ke jenis bilangan bulat dilakukan karena fungsi serialisasi menghasilkan data dalam format
Raw
R, yang tidak didukung perancang.Tambahkan instans kedua dari komponen Jalankan Skrip R, dan hubungkan ke port output komponen sebelumnya.
Ketik kode berikut dalam kotak teks Skrip R untuk mengekstrak
A
objek dari tabel data input.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)) }
Paket R yang sudah diinstal sebelumnya
Paket R berikut yang sudah diinstal sebelumnya saat ini tersedia:
Paket | Versi |
---|---|
askpass | 1.1 |
assertthat | 0.2.1 |
backports | 1.1.4 |
dasar | 3.5.1 |
base64enc | 0.1-3 |
BH | 1.69.0-1 |
bindr | 0.1.1 |
bindrcpp | 0.2.2 |
bitops | 1.0-6 |
boot | 1.3-22 |
broom | 0.5.2 |
callr | 3.2.0 |
caret | 6.0-84 |
caTools | 1.17.1.2 |
cellranger | 1.1.0 |
kelas | 7.3-15 |
cli | 1.1.0 |
clipr | 0.6.0 |
klaster | 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 |
datasets | 3.5.1 |
DBI | 1.0.0 |
dbplyr | 1.4.1 |
digest | 0.6.19 |
dplyr | 0.7.6 |
e1071 | 1.7-2 |
evaluate | 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 |
graphics | 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 |
Matrix | 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 |
kemajuan | 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 |
alat | 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 |
Langkah berikutnya
Lihat kumpulan komponen yang tersedia untuk Azure Machine Learning.