Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk azt ismerteti, hogyan futtathat R-kódot az Azure Machine Learning Designer-folyamat R-kódjának futtatásához az R-szkript végrehajtása összetevővel.
Az R használatával olyan feladatokat hajthat végre, amelyeket a meglévő összetevők nem támogatnak, például:
- Egyéni adatátalakítások létrehozása
- Saját metrikák használata az előrejelzések kiértékeléséhez
- Modellek létrehozása a tervezőben nem önálló összetevőként implementált algoritmusokkal
R-verzió támogatása
Az Azure Machine Learning designer az R CRAN (Átfogó R Archív hálózat) disztribúcióját használja. A jelenleg használt verzió a CRAN 3.5.1.
Támogatott R-csomagok
Az R-környezet több mint 100 csomaggal van előtelepítve. A teljes listát az előre telepített R-csomagok című szakaszban találja.
A telepített csomagok megtekintéséhez hozzáadhatja a következő kódot bármely Execute R Script-összetevőhöz.
azureml_main <- function(dataframe1, dataframe2){
print("R script run.")
dataframe1 <- data.frame(installed.packages())
return(list(dataset1=dataframe1, dataset2=dataframe2))
}
Feljegyzés
Ha a folyamat több olyan Végrehajtási R-szkript-összetevőt tartalmaz, amelyeknek olyan csomagokra van szükségük, amelyek nem szerepelnek az előre telepített listában, telepítse a csomagokat minden összetevőbe.
R-csomagok telepítése
További R-csomagok telepítéséhez használja a metódust install.packages() . A csomagok minden végrehajtási R-szkript-összetevőhöz telepítve vannak. A rendszer nem osztja meg őket más Végrehajtási R-szkript-összetevők között.
Feljegyzés
Nem ajánlott az R-csomag telepítése a szkriptcsomagból. Javasoljuk, hogy közvetlenül a szkriptszerkesztőben telepítse a csomagokat.
Adja meg a CRAN-adattárat a csomagok telepítésekor, például install.packages("zoo",repos = "https://cloud.r-project.org").
Figyelmeztetés
Az Excute R Script összetevő nem támogatja a natív fordítást igénylő csomagok telepítését, például qdap a JAVA-t és drc a C++-t igénylő csomagokat. Ennek az az oka, hogy ezt az összetevőt egy előre telepített, nem rendszergazdai engedéllyel rendelkező környezetben hajtja végre a rendszer.
Ne telepítsen olyan csomagokat, amelyek előre beépítettek/windowsosak, mivel a tervező összetevői az Ubuntu-on futnak. Annak ellenőrzéséhez, hogy egy csomag előre készült-e a Windowsra, a CRAN-ban kereshet a csomagban, letölthet egy bináris fájlt az operációs rendszernek megfelelően, és ellenőrizheti a Built: part in the DESCRIPTION fájlt. Az alábbiakban egy példa látható:
Ez a minta a Zoo telepítését mutatja be:
# 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))
}
Feljegyzés
A csomag telepítése előtt ellenőrizze, hogy már létezik-e, hogy ne ismételje meg a telepítést. Az ismétlődő telepítések miatt a webszolgáltatás kérései időtúllépést okozhatnak.
Hozzáférés a regisztrált adatkészlethez
A munkaterület regisztrált adathalmazaihoz való hozzáféréshez tekintse meg az alábbi mintakódot:
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))
}
Az R-szkript végrehajtásának konfigurálása
Az R-szkript végrehajtása összetevő kiindulási pontként mintakódot tartalmaz.
A tervezőben tárolt adathalmazok automatikusan R-adatkeretté alakulnak, amikor betöltik ezt az összetevőt.
Adja hozzá az Execute R Script összetevőt a folyamathoz.
Csatlakoztassa azokat a bemeneteket, amelyekre a szkriptnek szüksége van. A bemenetek nem kötelezőek, és tartalmazhatnak adatokat és további R-kódot.
Adathalmaz1: Hivatkozzon az első bemenetre a következőként
dataframe1: . A bemeneti adatkészletet CSV-, TSV- vagy ARFF-fájlként kell formázni. Vagy csatlakoztathat egy Azure Machine Learning-adatkészletet.Adatkészlet2: Hivatkozzon a második bemenetre a következőként
dataframe2: . Ezt az adatkészletet CSV-, TSV- vagy ARFF-fájlként vagy Azure Machine Learning-adatkészletként is formázni kell.Szkriptcsomag: A harmadik bemenet .zip fájlokat fogad el. A tömörített fájlok több fájlt és több fájltípust tartalmazhatnak.
Az R-szkript szövegmezőbe írja be vagy illessze be az érvényes R-szkriptet.
Feljegyzés
Legyen óvatos a szkript írásakor. Győződjön meg arról, hogy nincsenek szintaxishibák, például be nem jelentett változók vagy nem fontos összetevők vagy függvények használata. A cikk végén különös figyelmet kell fordítani az előre telepített csomaglistára. Ha nem listázott csomagokat szeretne használni, telepítse őket a szkriptbe. Például:
install.packages("zoo",repos = "https://cloud.r-project.org").Az első lépésekhez az R-szkript szövegmezője előre fel van töltve mintakóddal, amelyet szerkesztheti vagy lecserélhet.
# 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)) }A belépési pont függvénynek tartalmaznia kell a bemeneti argumentumokat
Param<dataframe1>, ésParam<dataframe2>akkor is, ha ezeket az argumentumokat nem használják a függvényben.Feljegyzés
Az Execute R Script összetevőnek átadott adatokra a rendszer az Azure Machine Learning Designertől eltérő módon hivatkozik
dataframe1dataframe2(a tervező hivatkozásadataset1: ,dataset2). Győződjön meg arról, hogy a bemeneti adatokra helyesen hivatkozik a szkript.Feljegyzés
Előfordulhat, hogy a meglévő R-kódnak kisebb módosításokra van szüksége a tervezői folyamatban való futtatáshoz. Például a CSV formátumban megadott bemeneti adatokat explicit módon adatkészletté kell konvertálni, mielőtt használhatná azokat a kódban. Az R nyelvben használt adatok és oszloptípusok is eltérnek a tervezőben használt adatoktól és oszloptípusoktól.
Ha a szkript nagyobb, mint 16 KB, használja a Szkriptcsomag portot az olyan hibák elkerüléséhez, mint a CommandLine, amely meghaladja az 16597 karakteres korlátot.
- Kötegelje a szkriptet és más egyéni erőforrásokat egy zip-fájlba.
- Töltse fel a zip-fájlt Fájladatkészletként a stúdióba.
- Húzza az adathalmaz-összetevőt a tervező szerzői lapjának bal oldali összetevőpanelén található Adathalmazok listából.
- Csatlakoztassa az adathalmaz-összetevőt az R-szkriptösszetevő Szkriptköteg portjához.
A szkriptcsomagban a szkriptet a következő mintakód használja fel:
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))) }Véletlenszerű mag esetén adjon meg egy értéket, amelyet az R-környezetben használ a véletlenszerű magértékként. Ez a paraméter egyenértékű az R-kódban való hívással
set.seed(value).Küldje el a folyamatot.
Results (Eredmények)
Az R-szkript-összetevők több kimenetet is visszaadhatnak, de R-adatkeretként kell megadni őket. A tervező automatikusan adathalmazokká alakítja az adatkereteket a többi összetevővel való kompatibilitás érdekében.
Az R normál üzeneteit és hibáit a rendszer visszaadja az összetevő naplójába.
Ha az R-szkriptben kell kinyomtatnia az eredményeket, a kinyomtatott eredményeket az összetevő jobb oldali paneljén, az Outputs+logs lap 70_driver_log találja.
Mintaszkriptek
A folyamat sokféleképpen bővíthető egyéni R-szkriptekkel. Ez a szakasz mintakódot biztosít a gyakori feladatokhoz.
R-szkript hozzáadása bemenetként
Az R-szkript végrehajtása összetevő bemenetként tetszőleges R-szkriptfájlokat támogat. A használatukhoz fel kell töltenie őket a munkaterületre a .zip fájl részeként.
Ha R-kódot tartalmazó .zip fájlt szeretne feltölteni a munkaterületre, nyissa meg az Adathalmazok eszközlapot. Válassza az Adathalmaz létrehozása lehetőséget, majd válassza a Helyi fájlból és a Fájl adatkészlet típusa lehetőséget.
Ellenőrizze, hogy a tömörített fájl megjelenik-e a My Datasets (Saját adathalmazok) kategóriában a bal oldali összetevőfán.
Csatlakoztassa az adathalmazt a Script Bundle bemeneti porthoz.
A .zip fájl összes fájlja elérhető a folyamat futási ideje alatt.
Ha a szkriptcsomagfájl könyvtárstruktúrát tartalmaz, a struktúra megmarad. A kódot azonban módosítania kell, hogy a könyvtárat előre fel lehessen függesztetni a ./Script Bundle könyvtárra.
Adatok feldolgozása
Az alábbi minta bemutatja, hogyan méretezheti és normalizálhatja a bemeneti adatokat:
# 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 fájl beolvasása bemenetként
Ez a minta bemutatja, hogyan használhat adatkészletet egy .zip fájlban az R-szkript végrehajtása összetevő bemeneteként.
- Hozza létre az adatfájlt CSV formátumban, és nevezze el mydatafile.csv.
- Hozzon létre egy .zip fájlt, és adja hozzá a CSV-fájlt az archívumhoz.
- Töltse fel a tömörített fájlt az Azure Machine Learning-munkaterületre.
- Csatlakoztassa az eredményként kapott adatkészletet az Execute R Script összetevő ScriptBundle bemenetéhez.
- Az alábbi kóddal olvassa be a CSV-adatokat a tömörített fájlból.
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))
}
Sorok replikálása
Ez a minta bemutatja, hogyan replikálhat pozitív rekordokat egy adathalmazban a minta egyensúlyának érdekében:
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-objektumok átadása az R-szkript-összetevők végrehajtása között
Az R-objektumok a belső szerializálási mechanizmussal továbbíthatók az R-szkript végrehajtása összetevő példányai között. Ez a példa feltételezi, hogy az R-objektumot A két R-szkript-összetevő között szeretné áthelyezni.
Adja hozzá az első Execute R Script összetevőt a folyamathoz. Ezután írja be a következő kódot az R-szkript szövegmezőbe, és hozzon létre egy szerializált objektumot
Aoszlopként az összetevő kimeneti adattáblájában: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)) }Az egész szám típusra való explicit átalakítás azért történik, mert a szerializációs függvény R
Rawformátumban adja ki az adatokat, amelyet a tervező nem támogat.Adjon hozzá egy második példányt az Execute R Script összetevőhöz, és csatlakoztassa az előző összetevő kimeneti portjához.
Írja be a következő kódot az R-szkript szövegmezőbe, hogy kinyerje az objektumot
Aa bemeneti adattáblából.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)) }
Előre telepített R-csomagok
Jelenleg az alábbi előre telepített R-csomagok érhetők el:
| Csomag | Verzió |
|---|---|
| jelszókérés | 1,1 |
| Meggyőződj arról, hogy | 0.2.1 |
| háttérportolások | 1.1.4 |
| alap | 3.5.1 |
| base64enc | 0.1-3 |
| BH | 1.69.0-1 |
| bindr | 0.1.1 |
| bindrcpp | 0.2.2 |
| bitops | 1.0-6 |
| indítás | 1.3-22 |
| seprű | 0.5.2 |
| hívó | 3.2.0 |
| kalap | 6.0-84 |
| caTools | 1.17.1.2 |
| cellranger | 1.1.0 |
| osztály | 7.3-15 |
| Cli | 1.1.0 |
| Clipr | 0.6.0 |
| fürt | 2.0.7-1 |
| kódtoolok | 0.2-16 |
| színtér | 1.4-1 |
| fordítóprogram | 3.5.1 |
| zsírkréta | 1.3.4 |
| csavarodik | 3.3 |
| adat.táblázat | 1.12.2 |
| adatkészletek | 3.5.1 |
| DBI | 1.0.0 |
| dbplyr | 1.4.1 |
| emészt | 0.6.19 |
| dplyr (adatmanipulációs csomag az R programozási nyelvhez) | 0.7.6 |
| e1071 | 1.7-2 |
| kiértékel | 0,14 |
| fani | 0.4.0 |
| elveszettek | 0.3.0 |
| foreach | 1.4.4 |
| külföldi | 0.8-71 |
| Fs | 1.3.1 |
| gdata | 2.18.0 |
| Generikus | 0.0.2 |
| ggplot2 | 3.2.0 |
| glmnet | 2.0-18 |
| ragasztó | 1.3.1 |
| Gower | 0.2.1 |
| gplots | 3.0.1.1 |
| grafika | 3.5.1 |
| grDevices | 3.5.1 |
| rács | 3.5.1 |
| gtable | 0.3.0 |
| gtoolok | 3.8.1 |
| kikötő | 2.1.0 |
| magasabb | 0,8 |
| Hms | 0.4.2 |
| htmltoolok | 0.3.6 |
| httr | 1.4.0 |
| iPred | 0.9-9 |
| iterátorok | 1.0.10 |
| jsonlite | 1.6 |
| KernSmooth | 2.23-15 |
| knitr | 1.23 |
| címkézés | 0,3 |
| rács | 0.20-38 |
| láva | 1.6.5 |
| lazyeval | 0.2.2 |
| lubridate | 1.7.4 |
| magrittr | 1,5 |
| Markdown | 0 |
| TÖMEG | 7.3-51.4 |
| Mátrix | 1.2-17 |
| metódusok | 3.5.1 |
| mgcv | 1.8-28 |
| MIME | 0,7 |
| ModelMetrics | 1.2.2 |
| modellező | 0.1.4 |
| munsell | 0.5.0 |
| nlme | 3.1-140 |
| nnet | 7.3-12 |
| „numDeriv” | 2016. augusztus - 1.1 |
| openssl (nyílt forráskódú titkosító szoftver) | 1.4 |
| párhuzamos | 3.5.1 |
| pillér | 1.4.1 |
| pkgconfig | 2.0.2 |
| plogr | 0.2.0 |
| rétegelt | 1.8.4 |
| prettyunits | 1.0.2 |
| processx | 3.3.1 |
| prodlim | 2018.04.18 |
| haladás | 1.2.2 |
| Ps | 1.3.0 |
| purrr | 0.3.2 |
| quadprog | 1.5-7 |
| quantmod | 0.4-15 |
| R6 | 2.4.0 |
| véletlen erdő (randomForest) | 4.6-14 |
| RColorBrewer | 1.1-2 |
| Rcpp | 1.0.1 |
| RcppRoll | 0.3.0 |
| olvasó | 1.3.1 |
| readxl (Excel fájlokat olvasó programcsomag) | 1.3.1 |
| receptek | 0.1.5 |
| Visszavágót | 1.0.1 |
| megismételhető példa | 0.3.0 |
| újraformázás2 | 1.4.3 |
| újraértesít | 1.12 |
| rlang | 0.4.0 |
| rmarkdown | 1.13 |
| ROCR | 1.0-7 |
| rpart | 4.1-15 |
| rstudioapi | 0,1 |
| Szüret | 0.3.4 |
| mérleg | 1.0.0 |
| választó | 0.4-1 |
| térbeli | 7.3-11 |
| splinek | 3.5.1 |
| NÉGYZET | 2017.10-1 |
| statisztika | 3.5.1 |
| statisztikák4 | 3.5.1 |
| string | 1.4.3 |
| sztring | 1.3.1 |
| túlélés | 2.44-1.1 |
| sys | 3.2 |
| Tcl/Tk programozási nyelv és eszközkészlet. | 3.5.1 |
| tibble | 2.1.3 |
| tidyr | 0.8.3 |
| tidyselect | 0.2.5 |
| tidyverse | 1.2.1 |
| idődátum | 3043.102 |
| tinytex | 0,13 |
| eszközök | 3.5.1 |
| tseries | 0.10-47 |
| TTR | 0.23-4 |
| utf8 | 1.1.4 |
| eszközök | 3.5.1 |
| vctrs | 0.1.0 |
| viridisLite | 0.3.0 |
| bajusz | 0.3-2 |
| valamivel | 2.1.2 |
| xfun | 0,8 |
| xml2 | 1.2.0 |
| xts | 0.11-2 |
| YAML (adat-szerializációs formátum) | 2.2.0 |
| zeallot | 0.1.0 |
| állatkert | 1.8-6 |
Következő lépések
Tekintse meg az Azure Machine Learning számára elérhető összetevőket.