Ich möchte eine Funktion erstellen, die das Trainingsset und das Testset als Argumente akzeptiert, min-max skaliert/normalisiert und gibt den Trainingssatz zurück und verwendet diese same Werte von Minimum und Bereich auf Min-Max-Skala/normalisieren und das Testset zurückgeben.min max Skalierung/Normalisierung in r für Zug- und Testdaten
Bisher ist dies die Funktion Ich habe kommen mit:
min_max_scaling <- function(train, test){
min_vals <- sapply(train, min)
range1 <- sapply(train, function(x) diff(range(x)))
# scale the training data
train_scaled <- data.frame(matrix(nrow = nrow(train), ncol = ncol(train)))
for(i in seq_len(ncol(train))){
column <- (train[,i] - min_vals[i])/range1[i]
train_scaled[i] <- column
}
colnames(train_scaled) <- colnames(train)
# scale the testing data using the min and range of the train data
test_scaled <- data.frame(matrix(nrow = nrow(test), ncol = ncol(test)))
for(i in seq_len(ncol(test))){
column <- (test[,i] - min_vals[i])/range1[i]
test_scaled[i] <- column
}
colnames(test_scaled) <- colnames(test)
return(list(train = train_scaled, test = test_scaled))
}
Die Definition von min max Skalierung auf diese Frage ist ähnlich wie früher SO gefragt - Normalisation of a two column data using min and max values
Meine Fragen sind:
1. Gibt es eine Möglichkeit, die beiden for
Schleifen in der Funktion zu vektorisieren? z.B. Verwenden sapply()
2. Gibt es Pakete, die uns erlauben zu tun, was wir hier tun wollen?
Vielen zu antworten aber ich schaue mir eine Möglichkeit an, nach Daten zu skalieren, indem ich das Minimum dieser Spalte von jeder Zeile subtrahiere und dann durch den Bereich dividiere. Ihre Antwort berücksichtigt nicht die Subtraktion des Minimums. –