Τι είναι μια συνάρτηση στο R;
Μια λειτουργία , σε περιβάλλον προγραμματισμού, είναι ένα σύνολο οδηγιών. Ένας προγραμματιστής δημιουργεί μια λειτουργία για να αποφύγει την επανάληψη της ίδιας εργασίας ή να μειώσει την πολυπλοκότητα.
Μια συνάρτηση πρέπει να είναι
- γραμμένο για την εκτέλεση συγκεκριμένων εργασιών
- μπορεί ή δεν περιλαμβάνει επιχειρήματα
- περιέχει ένα σώμα
- μπορεί ή όχι να επιστρέψει μία ή περισσότερες τιμές.
Μια γενική προσέγγιση σε μια συνάρτηση είναι να χρησιμοποιήσετε το τμήμα ορίσματος ως εισόδους , να τροφοδοτήσετε το μέρος του σώματος και τελικά να επιστρέψετε μια έξοδο . Η σύνταξη μιας συνάρτησης είναι η ακόλουθη:
function (arglist) {#Function body}
Σε αυτό το σεμινάριο, θα μάθουμε
- R σημαντικές ενσωματωμένες λειτουργίες
- Γενικές λειτουργίες
- Μαθηματικές συναρτήσεις
- Στατιστικές συναρτήσεις
- Συνάρτηση εγγραφής σε R
- Πότε πρέπει να γράφουμε τη συνάρτηση;
- Λειτουργεί με κατάσταση
R σημαντικές ενσωματωμένες λειτουργίες
Υπάρχουν πολλές ενσωματωμένες συναρτήσεις στο R. R ταιριάζει με τις παραμέτρους εισόδου σας με τα ορίσματα συνάρτησης, είτε από την τιμή είτε από τη θέση και, στη συνέχεια, εκτελεί το σώμα της συνάρτησης. Τα ορίσματα συνάρτησης μπορούν να έχουν προεπιλεγμένες τιμές: εάν δεν καθορίσετε αυτά τα ορίσματα, το R θα λάβει την προεπιλεγμένη τιμή.
Σημείωση : Μπορείτε να δείτε τον πηγαίο κώδικα μιας συνάρτησης εκτελώντας το ίδιο το όνομα της συνάρτησης στην κονσόλα.
Θα δούμε τρεις ομάδες λειτουργίας σε δράση
- Γενική λειτουργία
- Λειτουργία μαθηματικών
- Στατιστική λειτουργία
Γενικές λειτουργίες
Είμαστε ήδη εξοικειωμένοι με τις γενικές συναρτήσεις όπως οι λειτουργίες cbind (), rbind (), range (), sort (), order (). Κάθε μία από αυτές τις λειτουργίες έχει μια συγκεκριμένη εργασία, παίρνει επιχειρήματα για να επιστρέψει μια έξοδο. Ακολουθούν σημαντικές λειτουργίες που πρέπει να γνωρίζετε
συνάρτηση diff ()
Εάν εργάζεστε σε χρονοσειρές , πρέπει να σταματήσετε τη σειρά λαμβάνοντας τις τιμές καθυστέρησης . Μια στατική διαδικασία επιτρέπει τη σταθερή μέση, διακύμανση και αυτοσυσχέτιση με την πάροδο του χρόνου. Αυτό βελτιώνει κυρίως την πρόβλεψη μιας χρονοσειράς. Μπορεί να γίνει εύκολα με τη λειτουργία diff (). Μπορούμε να δημιουργήσουμε δεδομένα τυχαίων χρονοσειρών με τάση και στη συνέχεια να χρησιμοποιήσουμε τη συνάρτηση diff () για να σταματήσει η σειρά. Η συνάρτηση diff () δέχεται ένα όρισμα, ένα διάνυσμα, και επιστρέφει κατάλληλη καθυστέρηση και επαναλαμβανόμενη διαφορά.
Σημείωση : Συχνά πρέπει να δημιουργούμε τυχαία δεδομένα, αλλά για μάθηση και σύγκριση θέλουμε οι αριθμοί να είναι πανομοιότυποι μεταξύ των μηχανών. Για να διασφαλίσουμε ότι όλοι δημιουργούμε τα ίδια δεδομένα, χρησιμοποιούμε τη συνάρτηση set.seed () με αυθαίρετες τιμές 123. Η συνάρτηση set.seed () δημιουργείται μέσω της διαδικασίας ψευδοτυχαίας γεννήτριας αριθμών που κάνει κάθε σύγχρονο υπολογιστή να έχει την ίδια ακολουθία αριθμών. Αν δεν χρησιμοποιήσουμε τη συνάρτηση set.seed (), όλοι θα έχουμε διαφορετική ακολουθία αριθμών.
set.seed(123)## Create the datax = rnorm(1000)ts <- cumsum(x)## Stationary the seriediff_ts <- diff(ts)par(mfrow=c(1,2))## Plot the seriesplot(ts,)plot(diff(ts),)
συνάρτηση length ()
Σε πολλές περιπτώσεις, θέλουμε να γνωρίζουμε το μήκος ενός διανύσματος για υπολογισμό ή να χρησιμοποιείται σε ένα βρόχο για. Η συνάρτηση length () μετρά τον αριθμό των γραμμών στο διάνυσμα x. Οι ακόλουθοι κωδικοί εισάγουν το σύνολο δεδομένων αυτοκινήτων και επιστρέφουν τον αριθμό των σειρών.
Σημείωση : το μήκος () επιστρέφει τον αριθμό των στοιχείων σε ένα διάνυσμα. Εάν η συνάρτηση μεταβιβάζεται σε πίνακα ή σε πλαίσιο δεδομένων, επιστρέφεται ο αριθμός των στηλών.
dt <- cars## number columnslength(dt)
Παραγωγή:
## [1] 1
## number rowslength(dt[,1])
Παραγωγή:
## [1] 50
Μαθηματικές συναρτήσεις
Το R έχει μια σειρά μαθηματικών συναρτήσεων.
Χειριστής | Περιγραφή |
---|---|
κοιλιακοί (x) | Λαμβάνει την απόλυτη τιμή του x |
log (x, βάση = y) | Λαμβάνει τον λογάριθμο του x με τη βάση y; εάν η βάση δεν έχει καθοριστεί, επιστρέφει τον φυσικό λογάριθμο |
λήξη (x) | Επιστρέφει το εκθετικό του x |
τετραγωνικά (x) | Επιστρέφει την τετραγωνική ρίζα του x |
παραγοντικός (x) | Επιστρέφει το παραγοντικό του x (x!) |
# sequence of number from 44 to 55 both including incremented by 1x_vector <- seq(45,55, by = 1)#logarithmlog(x_vector)
Παραγωγή:
## [1] 3.806662 3.828641 3.850148 3.871201 3.891820 3.912023 3.931826## [8] 3.951244 3.970292 3.988984 4.007333
#exponentialexp(x_vector)
#squared rootsqrt(x_vector)
Παραγωγή:
## [1] 6.708204 6.782330 6.855655 6.928203 7.000000 7.071068 7.141428## [8] 7.211103 7.280110 7.348469 7.416198
#factorialfactorial(x_vector)
Παραγωγή:
## [1] 1.196222e+56 5.502622e+57 2.586232e+59 1.241392e+61 6.082819e+62## [6] 3.041409e+64 1.551119e+66 8.065818e+67 4.274883e+69 2.308437e+71## [11] 1.269640e+73
Στατιστικές συναρτήσεις
Η τυπική εγκατάσταση R περιέχει ένα ευρύ φάσμα στατιστικών λειτουργιών. Σε αυτό το σεμινάριο, θα εξετάσουμε εν συντομία την πιο σημαντική λειτουργία…
Βασικές στατιστικές συναρτήσεις
Χειριστής |
Περιγραφή |
---|---|
μέσος όρος (x) |
Μέση τιμή x |
διάμεσος (x) |
Μέση τιμή x |
var (x) |
Διακύμανση του x |
sd (x) |
Τυπική απόκλιση x |
κλίμακα (x) |
Τυπικές βαθμολογίες (βαθμολογίες z) x |
ποσοτικό (x) |
Τα τεταρτημόρια του x |
περίληψη (x) |
Περίληψη των x: μέση, ελάχιστη, μέγ. Κλπ… |
speed <- dt$speedspeed# Mean speed of cars datasetmean(speed)
Παραγωγή:
## [1] 15.4
# Median speed of cars datasetmedian(speed)
Παραγωγή:
## [1] 15
# Variance speed of cars datasetvar(speed)
Παραγωγή:
## [1] 27.95918
# Standard deviation speed of cars datasetsd(speed)
Παραγωγή:
## [1] 5.287644
# Standardize vector speed of cars datasethead(scale(speed), 5)
Παραγωγή:
## [,1]## [1,] -2.155969## [2,] -2.155969## [3,] -1.588609## [4,] -1.588609## [5,] -1.399489
# Quantile speed of cars datasetquantile(speed)
Παραγωγή:
## 0% 25% 50% 75% 100%## 4 12 15 19 25
# Summary speed of cars datasetsummary(speed)
Παραγωγή:
## Min. 1st Qu. Median Mean 3rd Qu. Max.## 4.0 12.0 15.0 15.4 19.0 25.0
Μέχρι αυτό το σημείο, έχουμε μάθει πολλές ενσωματωμένες συναρτήσεις R.
Σημείωση : Να είστε προσεκτικοί με την κλάση του ορίσματος, δηλαδή αριθμητικά, Boolean ή string. Για παράδειγμα, εάν πρέπει να περάσουμε μια τιμή συμβολοσειράς, πρέπει να περικλείσουμε τη συμβολοσειρά σε εισαγωγικό: "ABC".
Συνάρτηση εγγραφής σε R
Σε ορισμένες περιπτώσεις, πρέπει να γράψουμε τη δική μας λειτουργία, επειδή πρέπει να ολοκληρώσουμε μια συγκεκριμένη εργασία και δεν υπάρχει έτοιμη λειτουργία. Μια συνάρτηση που καθορίζεται από τον χρήστη περιλαμβάνει ένα όνομα , επιχειρήματα και ένα σώμα .
function.name <- function(arguments){computations on the argumentssome other code}
Σημείωση : Μια καλή πρακτική είναι να ονομάσετε μια συνάρτηση που καθορίζεται από το χρήστη διαφορετική από μια ενσωματωμένη συνάρτηση. Αποφεύγει τη σύγχυση.
Μια συνάρτηση ορίσματος
Στο επόμενο απόσπασμα, ορίζουμε μια απλή τετραγωνική συνάρτηση. Η συνάρτηση δέχεται μια τιμή και επιστρέφει το τετράγωνο της τιμής.
square_function<- function(n){# compute the square of integer `n`n^2}# calling the function and passing value 4square_function(4)
Επεξήγηση κώδικα:
- Η συνάρτηση ονομάζεται square_function. μπορεί να ονομαστεί ό, τι θέλουμε.
- Λαμβάνει ένα όρισμα "n". Δεν καθορίσαμε τον τύπο της μεταβλητής, έτσι ώστε ο χρήστης να μπορεί να περάσει έναν ακέραιο, ένα διάνυσμα ή μια μήτρα
- Η συνάρτηση παίρνει την είσοδο "n" και επιστρέφει το τετράγωνο της εισόδου.
Όταν τελειώσετε με τη λειτουργία, μπορούμε να την αφαιρέσουμε με τη συνάρτηση rm ().
# αφού δημιουργήσετε τη συνάρτηση
rm(square_function)square_function
Στην κονσόλα, μπορούμε να δούμε ένα μήνυμα σφάλματος: Σφάλμα: το αντικείμενο "square_function" δεν βρέθηκε που λέει ότι η λειτουργία δεν υπάρχει.
Περιβάλλον Πεδίο
Στο R, το περιβάλλον είναι μια συλλογή αντικειμένων όπως συναρτήσεις, μεταβλητές, πλαίσιο δεδομένων κ.λπ.
Το R ανοίγει ένα περιβάλλον κάθε φορά που ζητείται το Rstudio.
Το διαθέσιμο επίπεδο ανώτερου επιπέδου είναι το παγκόσμιο περιβάλλον , που ονομάζεται R_GlobalEnv. Και έχουμε το τοπικό περιβάλλον.
Μπορούμε να απαριθμήσουμε το περιεχόμενο του τρέχοντος περιβάλλοντος.
ls(environment())
Παραγωγή
## [1] "diff_ts" "dt" "speed" "square_function"## [5] "ts" "x" "x_vector"
Μπορείτε να δείτε όλες τις μεταβλητές και τη συνάρτηση που δημιουργήθηκε στο R_GlobalEnv.
Η παραπάνω λίστα θα διαφέρει για εσάς βάσει του ιστορικού κώδικα που εκτελείτε στο R Studio.
Σημειώστε ότι n, το όρισμα της συνάρτησης square_function δεν βρίσκεται σε αυτό το παγκόσμιο περιβάλλον .
Δημιουργείται ένα νέο περιβάλλον για κάθε λειτουργία. Στο παραπάνω παράδειγμα, η συνάρτηση square_function () δημιουργεί ένα νέο περιβάλλον στο παγκόσμιο περιβάλλον.
Για να ξεκαθαρίσουμε τη διαφορά μεταξύ παγκόσμιου και τοπικού περιβάλλοντος , ας μελετήσουμε το ακόλουθο παράδειγμα
Αυτή η συνάρτηση παίρνει μια τιμή x ως όρισμα και την προσθέτει για να ορίσετε έξω και μέσα στη συνάρτηση
Η συνάρτηση f επιστρέφει την έξοδο 15. Αυτό συμβαίνει επειδή το y ορίζεται στο παγκόσμιο περιβάλλον. Οποιαδήποτε μεταβλητή ορίζεται στο παγκόσμιο περιβάλλον μπορεί να χρησιμοποιηθεί τοπικά. Η μεταβλητή y έχει την τιμή 10 κατά τη διάρκεια όλων των κλήσεων λειτουργίας και είναι προσβάσιμη ανά πάσα στιγμή.
Ας δούμε τι συμβαίνει εάν η μεταβλητή y ορίζεται μέσα στη συνάρτηση.
Πρέπει να ρίξουμε το «y» πριν από την εκτέλεση αυτού του κώδικα χρησιμοποιώντας rm r
Η έξοδος είναι επίσης 15 όταν καλούμε f (5) αλλά επιστρέφει ένα σφάλμα όταν προσπαθούμε να εκτυπώσουμε την τιμή y. Η μεταβλητή y δεν βρίσκεται στο παγκόσμιο περιβάλλον.
Τέλος, το R χρησιμοποιεί τον πιο πρόσφατο μεταβλητό ορισμό για να περάσει μέσα στο σώμα μιας συνάρτησης. Ας εξετάσουμε το ακόλουθο παράδειγμα:
Το R αγνοεί τις τιμές y που ορίζονται έξω από τη συνάρτηση επειδή δημιουργήσαμε ρητά μια μεταβλητή μέσα στο σώμα της συνάρτησης.
Λειτουργία πολλαπλών ορισμάτων
Μπορούμε να γράψουμε μια συνάρτηση με περισσότερα από ένα ορίσματα. Σκεφτείτε τη συνάρτηση που ονομάζεται "φορές". Είναι μια απλή συνάρτηση πολλαπλασιάζοντας δύο μεταβλητές.
times <- function(x,y) {x*y}times(2,4)
Παραγωγή:
## [1] 8
Πότε πρέπει να γράφουμε τη συνάρτηση;
Ο επιστήμονας δεδομένων πρέπει να κάνει πολλές επαναλαμβανόμενες εργασίες. Τις περισσότερες φορές, αντιγράφουμε και επικολλάμε επανειλημμένα κομμάτια κώδικα. Για παράδειγμα, συνιστάται η ομαλοποίηση μιας μεταβλητής προτού εκτελέσουμε έναν αλγόριθμο μηχανικής μάθησης. Ο τύπος για την ομαλοποίηση μιας μεταβλητής είναι:
Γνωρίζουμε ήδη πώς να χρησιμοποιούμε τη συνάρτηση min () και max () στο R. Χρησιμοποιούμε τη βιβλιοθήκη κουβέντων για να δημιουργήσουμε το πλαίσιο δεδομένων. Το Tibble είναι μέχρι στιγμής η πιο βολική λειτουργία για τη δημιουργία ενός συνόλου δεδομένων από το μηδέν.
library(tibble)# Create a data framedata_frame <- tibble(c1 = rnorm(50, 5, 1.5),c2 = rnorm(50, 5, 1.5),c3 = rnorm(50, 5, 1.5),)
Θα προχωρήσουμε σε δύο βήματα για να υπολογίσουμε τη συνάρτηση που περιγράφεται παραπάνω. Στο πρώτο βήμα, θα δημιουργήσουμε μια μεταβλητή που ονομάζεται c1_norm που είναι η επανασύνδεση του c1. Στο δεύτερο βήμα, απλώς αντιγράφουμε και επικολλά τον κώδικα του c1_norm και αλλάζουμε με τα c2 και c3.
Λεπτομέρεια της συνάρτησης με τη στήλη c1:
Nominator:: data_frame $ c1 -min (data_frame $ c1))
Παρονομαστής: max (data_frame $ c1) -min (data_frame $ c1))
Επομένως, μπορούμε να τα διαιρέσουμε για να πάρουμε την κανονικοποιημένη τιμή της στήλης c1:
(data_frame$c1 -min(data_frame$c1))/(max(data_frame$c1)-min(data_frame$c1))
Μπορούμε να δημιουργήσουμε c1_norm, c2_norm και c3_norm:
Create c1_norm: rescaling of c1data_frame$c1_norm <- (data_frame$c1 -min(data_frame$c1))/(max(data_frame$c1)-min(data_frame$c1))# show the first five valueshead(data_frame$c1_norm, 5)
Παραγωγή:
## [1] 0.3400113 0.4198788 0.8524394 0.4925860 0.5067991
Δουλεύει. Μπορούμε να αντιγράψουμε και να επικολλήσουμε
data_frame$c1_norm <- (data_frame$c1 -min(data_frame$c1))/(max(data_frame$c1)-min(data_frame$c1))
στη συνέχεια αλλάξτε το c1_norm σε c2_norm και το c1 σε c2. Κάνουμε το ίδιο για να δημιουργήσουμε το c3_norm
data_frame$c2_norm <- (data_frame$c2 - min(data_frame$c2))/(max(data_frame$c2)-min(data_frame$c2))data_frame$c3_norm <- (data_frame$c3 - min(data_frame$c3))/(max(data_frame$c3)-min(data_frame$c3))
Αφαιρέσαμε τέλεια τις μεταβλητές c1, c2 και c3.
Ωστόσο, αυτή η μέθοδος είναι επιρρεπής σε λάθος. Θα μπορούσαμε να αντιγράψουμε και να ξεχάσουμε να αλλάξουμε το όνομα της στήλης μετά την επικόλληση. Επομένως, μια καλή πρακτική είναι να γράφετε μια συνάρτηση κάθε φορά που πρέπει να επικολλήσετε τον ίδιο κώδικα περισσότερες από δύο φορές. Μπορούμε να αναδιατάξουμε τον κώδικα σε έναν τύπο και να τον καλέσουμε όποτε χρειαστεί. Για να γράψουμε τη δική μας λειτουργία, πρέπει να δώσουμε:
- Όνομα: κανονικοποίηση.
- ο αριθμός των ορισμάτων: Χρειαζόμαστε μόνο ένα όρισμα, το οποίο είναι η στήλη που χρησιμοποιούμε στον υπολογισμό μας.
- Το σώμα: αυτός είναι απλά ο τύπος που θέλουμε να επιστρέψουμε.
Θα προχωρήσουμε βήμα προς βήμα για να δημιουργήσουμε τη λειτουργία κανονικοποίησης.
Βήμα 1) Δημιουργούμε τον υποψήφιο , που είναι. Στο R, μπορούμε να αποθηκεύσουμε τον ονομαστή σε μια μεταβλητή ως εξής:
nominator <- x-min(x)
Βήμα 2) Υπολογίζουμε τον παρονομαστή: . Μπορούμε να επαναλάβουμε την ιδέα του βήματος 1 και να αποθηκεύσουμε τον υπολογισμό σε μια μεταβλητή:
denominator <- max(x)-min(x)
Βήμα 3) Πραγματοποιούμε τη διαίρεση μεταξύ του υποψηφίου και του παρονομαστή.
normalize <- nominator/denominator
Βήμα 4) Για να επιστρέψουμε την τιμή στη λειτουργία κλήσης, πρέπει να περάσουμε κανονικοποίηση της εσωτερικής επιστροφής () για να πάρουμε την έξοδο της συνάρτησης
return(normalize)
Βήμα 5) Είμαστε έτοιμοι να χρησιμοποιήσουμε τη λειτουργία τυλίγοντας τα πάντα μέσα στο βραχίονα.
normalize <- function(x){# step 1: create the nominatornominator <- x-min(x)# step 2: create the denominatordenominator <- max(x)-min(x)# step 3: divide nominator by denominatornormalize <- nominator/denominator# return the valuereturn(normalize)}
Ας δοκιμάσουμε τη λειτουργία μας με τη μεταβλητή c1:
normalize(data_frame$c1)
Λειτουργεί τέλεια. Δημιουργήσαμε την πρώτη μας λειτουργία.
Οι λειτουργίες είναι πιο ολοκληρωμένος τρόπος για να εκτελέσετε μια επαναλαμβανόμενη εργασία. Μπορούμε να χρησιμοποιήσουμε τον τύπο κανονικοποίησης σε διαφορετικές στήλες, όπως παρακάτω:
data_frame$c1_norm_function <- normalize (data_frame$c1)data_frame$c2_norm_function <- normalize (data_frame$c2)data_frame$c3_norm_function <- normalize (data_frame$c3)
Παρόλο που το παράδειγμα είναι απλό, μπορούμε να συμπεράνουμε τη δύναμη ενός τύπου. Ο παραπάνω κώδικας είναι πιο ευανάγνωστος και ειδικά αποφεύγετε τα λάθη κατά την επικόλληση κωδικών.
Λειτουργεί με κατάσταση
Μερικές φορές, πρέπει να συμπεριλάβουμε συνθήκες σε μια συνάρτηση για να επιτρέψουμε στον κώδικα να επιστρέφει διαφορετικές εξόδους.
Σε εργασίες Μηχανικής Μάθησης, πρέπει να χωρίσουμε το σύνολο δεδομένων μεταξύ ενός συνόλου τρένων και ενός δοκιμαστικού συνόλου. Το σετ αμαξοστοιχιών επιτρέπει στον αλγόριθμο να μάθει από τα δεδομένα. Για να ελέγξουμε την απόδοση του μοντέλου μας, μπορούμε να χρησιμοποιήσουμε το σετ δοκιμών για να επιστρέψουμε το μέτρο απόδοσης. Το R δεν έχει συνάρτηση για τη δημιουργία δύο συνόλων δεδομένων. Μπορούμε να γράψουμε τη δική μας λειτουργία για να το κάνουμε αυτό. Η λειτουργία μας παίρνει δύο ορίσματα και ονομάζεται split_data (). Η ιδέα πίσω είναι απλή, πολλαπλασιάζουμε το μήκος του συνόλου δεδομένων (δηλαδή τον αριθμό των παρατηρήσεων) με 0,8. Για παράδειγμα, εάν θέλουμε να διαχωρίσουμε το σύνολο δεδομένων 80/20 και το σύνολο δεδομένων μας περιέχει 100 σειρές, τότε η λειτουργία μας θα πολλαπλασιαστεί 0,8 * 100 = 80. Θα επιλεγούν 80 σειρές για να γίνουν τα εκπαιδευτικά μας δεδομένα.
Θα χρησιμοποιήσουμε το σύνολο δεδομένων airquality για να δοκιμάσουμε τη λειτουργία που ορίζεται από τον χρήστη. Το σύνολο δεδομένων airquality έχει 153 σειρές. Μπορούμε να το δούμε με τον παρακάτω κώδικα:
nrow(airquality)
Παραγωγή:
## [1] 153
Θα προχωρήσουμε ως εξής:
split_data <- function(df, train = TRUE)Arguments:-df: Define the dataset-train: Specify if the function returns the train set or test set. By default, set to TRUE
Η λειτουργία μας έχει δύο επιχειρήματα. Το όρισμα train είναι μια παράμετρος Boolean. Εάν έχει οριστεί σε ΑΛΗΘΕΙΑ, η λειτουργία μας δημιουργεί το σύνολο δεδομένων τρένου, διαφορετικά δημιουργεί το σύνολο δεδομένων δοκιμής.
Μπορούμε να προχωρήσουμε όπως κάναμε τη λειτουργία κανονικοποίησης (). Γράφουμε τον κωδικό σαν να ήταν μόνο ένας κωδικός και στη συνέχεια τυλίγαμε τα πάντα με την κατάσταση στο σώμα για να δημιουργήσουμε τη λειτουργία.
Βήμα 1:
Πρέπει να υπολογίσουμε το μήκος του συνόλου δεδομένων. Αυτό γίνεται με τη συνάρτηση nrow (). Nrow επιστρέφει τον συνολικό αριθμό σειρών στο σύνολο δεδομένων. Καλούμε το μεταβλητό μήκος.
length<- nrow(airquality)length
Παραγωγή:
## [1] 153
Βήμα 2:
Πολλαπλασιάζουμε το μήκος με 0,8. Θα επιστρέψει τον αριθμό των γραμμών που θα επιλέξετε. Θα πρέπει να είναι 153 * 0,8 = 122,4
total_row <- length*0.8total_row
Παραγωγή:
## [1] 122.4
Θέλουμε να επιλέξουμε 122 σειρές μεταξύ των 153 σειρών στο σύνολο δεδομένων airquality. Δημιουργούμε μια λίστα που περιέχει τιμές από 1 έως total_row. Αποθηκεύουμε το αποτέλεσμα στη μεταβλητή που ονομάζεται split
split <- 1:total_rowsplit[1:5]
Παραγωγή:
## [1] 1 2 3 4 5
Το split επιλέγει τις πρώτες 122 σειρές από το σύνολο δεδομένων. Για παράδειγμα, μπορούμε να δούμε ότι ο διαχωρισμός μεταβλητών μας συγκεντρώνει την τιμή 1, 2, 3, 4, 5 και ούτω καθεξής. Αυτές οι τιμές θα είναι το ευρετήριο όταν θα επιλέξουμε τις σειρές για επιστροφή.
Βήμα 3:
Πρέπει να επιλέξουμε τις σειρές στο σύνολο δεδομένων airquality με βάση τις τιμές που είναι αποθηκευμένες στη μεταβλητή split. Αυτό γίνεται έτσι:
train_df <- airquality[split, ]head(train_df)
Παραγωγή:
##[1] Ozone Solar.R Wind Temp Month Day##[2] 51 13 137 10.3 76 6 20##[3] 15 18 65 13.2 58 5 15##[4] 64 32 236 9.2 81 7 3##[5] 27 NA NA 8.0 57 5 27##[6] 58 NA 47 10.3 73 6 27##[7] 44 23 148 8.0 82 6 13
Βήμα 4:
Μπορούμε να δημιουργήσουμε το σύνολο δεδομένων δοκιμής χρησιμοποιώντας τις υπόλοιπες σειρές, 123: 153. Αυτό γίνεται χρησιμοποιώντας - μπροστά από το split.
test_df <- airquality[-split, ]head(test_df)
Παραγωγή:
##[1] Ozone Solar.R Wind Temp Month Day##[2] 123 85 188 6.3 94 8 31##[3] 124 96 167 6.9 91 9 1##[4] 125 78 197 5.1 92 9 2##[5] 126 73 183 2.8 93 9 3##[6] 127 91 189 4.6 93 9 4##[7] 128 47 95 7.4 87 9 5
Βήμα 5:
Μπορούμε να δημιουργήσουμε την κατάσταση μέσα στο σώμα της συνάρτησης. Θυμηθείτε, έχουμε ένα τρένο ορίσματος που είναι ένα σύνολο Boolean σε TRUE από προεπιλογή για να επιστρέψει το σύνολο τρένου. Για να δημιουργήσουμε τη συνθήκη, χρησιμοποιούμε τη σύνταξη if:
if (train ==TRUE){train_df <- airquality[split, ]return(train)} else {test_df <- airquality[-split, ]return(test)}
Αυτό είναι, μπορούμε να γράψουμε τη συνάρτηση. Αρκεί να αλλάξουμε το airquality σε df γιατί θέλουμε να δοκιμάσουμε τη λειτουργία μας σε οποιοδήποτε πλαίσιο δεδομένων, όχι μόνο airquality:
split_data <- function(df, train = TRUE){length<- nrow(df)total_row <- length *0.8split <- 1:total_rowif (train ==TRUE){train_df <- df[split, ]return(train_df)} else {test_df <- df[-split, ]return(test_df)}}
Ας δοκιμάσουμε τη λειτουργία μας στο σύνολο δεδομένων airquality. πρέπει να έχουμε ένα σετ τρένων με 122 σειρές και ένα σετ δοκιμών με 31 σειρές.
train <- split_data(airquality, train = TRUE)dim(train)
Παραγωγή:
## [1] 122 6
test <- split_data(airquality, train = FALSE)dim(test)
Παραγωγή:
## [1] 31 6