HOWTO · R

Implementieren Sie die Funktion train() in R

Dieses Tutorial zeigt, wie Sie die Zugfunktion in R implementieren und verwenden.

Auf dieser Seite

Für das Klassifikations- und Regressionstraining wird die Methode train() (aus der Caret-Bibliothek) verwendet. Es wird auch verwendet, um die Modelle abzustimmen, indem die Komplexitätsparameter ausgewählt werden.

Dieses Tutorial zeigt, wie Sie die Methode train() aus dem Caret-Paket in R verwenden.

Implementieren Sie die Funktion train() in R

Um die Methode train() zu verwenden, müssen wir zuerst das Caret- und andere erforderliche Pakete installieren. In unserem Fall verwenden wir die Pakete caret und mlbench.

install.packages("caret", dependencies = c("Depends", "Suggests"))
install.packages('mlbench')

Nachdem die Pakete installiert sind, können wir sie laden und verwenden. Wir verwenden den eingebauten Datensatz iris für die Methode train():

# Load Packages
library(caret)
library(mlbench)

# Load IRIS dataset
data(iris)

# Show the first Six lines of the iris data set
head(iris)

Der obige Code lädt die Pakete und den Datensatz und zeigt die ersten sechs Zeilen des Iris-Datensatzes:

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

Als nächstes muss aus dem Datensatz ein Objekt erstellt werden, das später in der Methode train() verwendet wird:

# create binary object
iris$binary  <- ifelse(iris$Species=="setosa",1,0)
iris$Species <- NULL

Eine trainControl()-Methode wird dann verwendet, um die Resampling-Methode zu modifizieren. Diese Methode benötigt mehrere Parameter; die Ausgabe wird in der Methode train() verwendet:

ctrl <- trainControl(method = "repeatedcv",
                        number = 4,
                        savePredictions = TRUE,
                        verboseIter = T,
                        returnResamp = "all")

Schließlich können wir die Methode train() verwenden, um das Datenmodell zu optimieren. Es wird das oben erstellte binäre Objekt verwenden.

Als Parameter haben wir die data, method, family und trControl:

# the train method
iris_train <- train(binary ~.,
                 data=iris,
                 method = "glm",
                 family="binomial",
                 trControl = ctrl)

Ausgang:

+ Fold1.Rep1: parameter=none
- Fold1.Rep1: parameter=none
+ Fold2.Rep1: parameter=none
- Fold2.Rep1: parameter=none
+ Fold3.Rep1: parameter=none
- Fold3.Rep1: parameter=none
+ Fold4.Rep1: parameter=none
- Fold4.Rep1: parameter=none
Aggregating results
Fitting final model on full training set

Das Modell ist jetzt trainiert. Wir können die Leistung auf Faltebene sehen:

# fold level performance
iris_train$resample

Resampling-Ausgang:

          RMSE  Rsquared          MAE parameter   Resample
1 3.929660e-06 1.0000000 6.420415e-07      none Fold1.Rep1
2 2.735382e-13 1.0000000 6.115382e-14      none Fold2.Rep1
3 8.221919e-12 1.0000000 1.397945e-12      none Fold3.Rep1
4 9.119130e-04 0.9999968 1.479318e-04      none Fold4.Rep1

Sobald das Modell trainiert ist, können wir mithilfe der anderen Optionen im Datensatz Zwischenmodelle erstellen.

Vollständiger Beispielcode

Hier ist der vollständige Beispielcode für Ihre Bequemlichkeit:

install.packages("caret", dependencies = c("Depends", "Suggests"))
install.packages('mlbench')

# Load Packages
library(caret)
library(mlbench)

# Load IRIS dataset
data(iris)

# Show the first Six lines of the iris data set
head(iris)

# create binary object
iris$binary  <- ifelse(iris$Species=="setosa",1,0)
iris$Species <- NULL

# use trainControl() method to modify the resampling method
ctrl <- trainControl(method = "repeatedcv",
                        number = 4,
                        savePredictions = TRUE,
                        verboseIter = T,
                        returnResamp = "all")
# the train method
iris_train <- train(binary ~.,
                 data=iris,
                 method = "glm",
                 family="binomial",
                 trControl = ctrl)

# fold level performance
iris_train$resample