Λειτουργίες στον προγραμματισμό R με Παράδειγμα
⚡ Έξυπνη Σύνοψη
Οι συναρτήσεις στην R συσκευάζουν ένα σύνολο εντολών με ένα όνομα, έτσι ώστε μια επαναλαμβανόμενη εργασία να εκτελείται από μία μόνο κλήση. Ενσωματωμένα βοηθήματα μαθηματικών και στατιστικών, συναρτήσεις που ορίζονται από τον χρήστη, περιβαλλοντική σκιαγράφηση.ping, και τα υπό όρους ορίσματα καλύπτονται εδώ με επεξεργασμένα παραδείγματα.

Τι είναι μια συνάρτηση στο R;
A λειτουργία, σε ένα περιβάλλον προγραμματισμού, είναι ένα σύνολο εντολών. Ένας προγραμματιστής δημιουργεί μια συνάρτηση προς αποφυγή επαναλαμβάνοντας την ίδια εργασία, ή να μειώσει περίπλοκο.
Μια συνάρτηση πρέπει να είναι
- γραμμένο για την εκτέλεση μιας συγκεκριμένης εργασίας
- μπορεί να περιλαμβάνει ή όχι επιχειρήματα
- περιέχουν ένα σώμα
- μπορεί να επιστρέψει ή όχι μία ή περισσότερες τιμές.
Μια γενική προσέγγιση σε μια συνάρτηση είναι η χρήση του τμήματος ορίσματος ως είσοδοι, τροφοδοτήστε το Σώμα μέρος και τελικά επιστρέψτε ένα παραγωγή. Η σύνταξη μιας συνάρτησης είναι η εξής:
function (arglist) { #Function body }
R σημαντικές ενσωματωμένες λειτουργίες
Υπάρχουν πολλές ενσωματωμένες συναρτήσεις στο R. Το R αντιστοιχίζει τις παραμέτρους εισόδου με τα ορίσματα συνάρτησής του, είτε κατά τιμή είτε κατά θέση, και στη συνέχεια εκτελεί το σώμα της συνάρτησης. Τα ορίσματα συνάρτησης μπορούν να έχουν προεπιλεγμένες τιμές: εάν δεν καθορίσετε αυτά τα ορίσματα, το R θα λάβει την προεπιλεγμένη τιμή.
Σημείωση:
Είναι δυνατό να δείτε τον πηγαίο κώδικα μιας συνάρτησης εκτελώντας το όνομα της ίδιας της συνάρτησης στην κονσόλα.
Typing Ένα όνομα συνάρτησης χωρίς αγκύλες εκτυπώνει την πηγή του, όπως φαίνεται στην παρακάτω κονσόλα.
Θα δούμε τρεις ομάδες λειτουργιών σε δράση
- Γενική λειτουργία
- Μαθηματική συνάρτηση
- Στατιστική συνάρτηση
Γενικές λειτουργίες
Είμαστε ήδη εξοικειωμένοι με γενικές συναρτήσεις όπως cbind(), rbind(), range(), είδος(), και order(). Κάθε μία από αυτές τις συναρτήσεις έχει μια συγκεκριμένη εργασία, δέχεται ορίσματα για να επιστρέψει μια έξοδο. Ακολουθούν σημαντικές συναρτήσεις που πρέπει να γνωρίζετε-
συνάρτηση diff().
Εάν εργάζεστε σε χρονική σειρά, πρέπει να σταθεροποιήσετε τη σειρά παίρνοντας τους τιμές υστέρησης. Ένα στατική διαδικασία Επιτρέπει σταθερό μέσο όρο, διακύμανση και αυτοσυσχέτιση με την πάροδο του χρόνου. Αυτό βελτιώνει κυρίως την πρόβλεψη μιας χρονοσειράς. Αυτό μπορεί να γίνει με τη συνάρτηση diff(). Μπορούμε να δημιουργήσουμε τυχαία δεδομένα χρονοσειράς με μια τάση και στη συνέχεια να χρησιμοποιήσουμε τη συνάρτηση diff() για να σταθεροποιήσουμε τη σειρά. Η συνάρτηση diff() δέχεται ένα όρισμα, ένα διάνυσμα, και επιστρέφει κατάλληλη διαφορά με χρονική υστέρηση και επαναλήψεις.
ΣημείωσηΣυχνά χρειάζεται να δημιουργούμε τυχαία δεδομένα, αλλά για τη μάθηση και τη σύγκριση θέλουμε οι αριθμοί να είναι ίδιοι σε όλες τις μηχανές. Για να διασφαλίσουμε ότι όλοι παράγουμε τα ίδια δεδομένα, χρησιμοποιούμε τη συνάρτηση set.seed() με αυθαίρετες τιμές 123. Η set.seed() καθορίζει το σημείο εκκίνησης της γεννήτριας ψευδοτυχαίων αριθμών, έτσι ώστε κάθε μηχανή να παράγει την ίδια ακολουθία. Χωρίς την set.seed(), κάθε εκτέλεση επιστρέφει μια διαφορετική ακολουθία.
set.seed(123) ## Create the data x = rnorm(1000) ts <- cumsum(x) ## Stationary the serie diff_ts <- diff(ts) par(mfrow=c(1,2)) ## Plot the series plot(ts, type='l') plot(diff(ts), type='l')
Τα δύο παρακάτω πλαίσια τοποθετούν την αρχική αθροιστική σειρά δίπλα στη διαφοροποιημένη σειρά, η οποία τώρα κυμαίνεται γύρω από έναν σταθερό μέσο όρο.
συνάρτηση length().
Σε πολλές περιπτώσεις, θέλουμε να γνωρίζουμε το μήκος ενός διανύσματος για υπολογισμό ή για χρήση σε έναν βρόχο for. Η συνάρτηση length() μετρά τον αριθμό των γραμμών στο διάνυσμα x. Οι ακόλουθοι κώδικες εισάγουν το σύνολο δεδομένων cars και επιστρέφουν τον αριθμό των γραμμών.
ΣημείωσηΗ συνάρτηση length() επιστρέφει τον αριθμό των στοιχείων σε ένα διάνυσμα. Εάν η συνάρτηση διαβιβαστεί σε ένα μήτρα ή ένα πλαίσιο δεδομένων, επιστρέφεται ο αριθμός των στηλών.
dt <- cars
## number columns
length(dt)
Παραγωγή:
## [1] 1
## number rows
length(dt[,1])
Παραγωγή:
## [1] 50
Μαθηματικές συναρτήσεις
Πέρα από τους γενικούς βοηθούς, η R έχει μια σειρά από μαθηματικές συναρτήσεις που λειτουργούν στοιχείο προς στοιχείο σε ένα διάνυσμα.
| OperaTor | Περιγραφή |
|---|---|
| κοιλιακοί (x) | Παίρνει την απόλυτη τιμή του x |
| log(x,base=y) | Παίρνει τον λογάριθμο του x με βάση το y. εάν η βάση δεν έχει καθοριστεί, επιστρέφει τον φυσικό λογάριθμο |
| exp(x) | Επιστρέφει την εκθετική του x |
| τετραγωνικά (x) | Επιστρέφει την τετραγωνική ρίζα του x |
| παραγοντικό(x) | Επιστρέφει το παραγοντικό του x (x!) |
# sequence of number from 44 to 55 both including incremented by 1 x_vector <- seq(45,55, by = 1) #logarithm log(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
#exponential
exp(x_vector)
#squared root
sqrt(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
#factorial
factorial(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 περιέχει ένα ευρύ φάσμα στατιστικών συναρτήσεων. Σε αυτό το σεμινάριο, θα εξετάσουμε εν συντομία τις πιο σημαντικές.
Βασικές στατιστικές συναρτήσεις
| OperaTor | Περιγραφή |
|---|---|
| μέσος όρος (x) | Ο μέσος όρος του x |
| διάμεσος (x) | Διάμεσος του x |
| var(x) | Διακύμανση του x |
| sd(x) | Τυπική απόκλιση x |
| κλίμακα (x) | Τυπικές βαθμολογίες (z-scores) του x |
| ποσοστό (x) | Τα τεταρτημόρια του x |
| περίληψη(x) | Σύνοψη του x: μέση, ελάχιστη, μέγ. κ.λπ. |
speed <- dt$speed
speed
# Mean speed of cars dataset
mean(speed)
Παραγωγή:
## [1] 15.4
# Median speed of cars dataset
median(speed)
Παραγωγή:
## [1] 15
# Variance speed of cars dataset
var(speed)
Παραγωγή:
## [1] 27.95918
# Standard deviation speed of cars dataset
sd(speed)
Παραγωγή:
## [1] 5.287644
# Standardize vector speed of cars dataset
head(scale(speed), 5)
Παραγωγή:
## [,1] ## [1,] -2.155969 ## [2,] -2.155969 ## [3,] -1.588609 ## [4,] -1.588609 ## [5,] -1.399489
# Quantile speed of cars dataset
quantile(speed)
Παραγωγή:
## 0% 25% 50% 75% 100% ## 4 12 15 19 25
# Summary speed of cars dataset
summary(speed)
Παραγωγή:
## Min. 1st Qu. Median Mean 3rd Qu. Max. ## 4.0 12.0 15.0 15.4 19.0 25.0
Μέχρι αυτό το σημείο, έχουμε μάθει πολλές ενσωματωμένες λειτουργίες R.
Σημείωση: Να είστε προσεκτικοί με το κλάση του επιχειρήματος, δηλαδή αριθμητική, λογική τιμή ή συμβολοσειρά. Για παράδειγμα, αν χρειαστεί να περάσουμε μια τιμή συμβολοσειράς, πρέπει να περικλείουμε τη συμβολοσειρά σε εισαγωγικά: "ABC".
Γράψτε τη συνάρτηση στο R
Σε ορισμένες περιπτώσεις, χρειάζεται να γράψουμε τη δική μας συνάρτηση επειδή πρέπει να ολοκληρώσουμε μια συγκεκριμένη εργασία και δεν υπάρχει έτοιμη συνάρτηση. Μια συνάρτηση που ορίζεται από τον χρήστη περιλαμβάνει ένα όνομα, επιχειρήματα και σε έναν Σώμα.
function.name <- function(arguments) { computations on the arguments some other code }
Σημείωση: Μια καλή πρακτική είναι να ονομάσετε μια συνάρτηση που ορίζεται από το χρήστη διαφορετική από μια ενσωματωμένη συνάρτηση. Αποφεύγει τη σύγχυση.
Συνάρτηση ενός ορίσματος
Στο επόμενο απόσπασμα, ορίζουμε μια απλή τετράγωνη συνάρτηση. Η συνάρτηση δέχεται μια τιμή και επιστρέφει το τετράγωνο της τιμής.
square_function<- function(n) { # compute the square of integer `n` n^2 } # calling the function and passing value 4 square_function(4)
Code εξήγηση
- Η συνάρτηση ονομάζεται square_function. μπορεί να λέγεται όπως θέλουμε.
- Λαμβάνει ένα όρισμα "n". Εμείς δεν καθόρισε τον τύπο της μεταβλητής έτσι ώστε ο χρήστης να μπορεί να περάσει έναν ακέραιο, ένα διάνυσμα ή έναν πίνακα
- Η συνάρτηση παίρνει την είσοδο «n» και επιστρέφει το τετράγωνο της εισόδου. Όταν τελειώσετε με τη χρήση της συνάρτησης, μπορούμε να την αφαιρέσουμε με τη συνάρτηση rm().
# αφού δημιουργήσετε τη συνάρτηση
rm(square_function) square_function
Στην κονσόλα, μπορούμε να δούμε ένα μήνυμα σφάλματος: Σφάλμα: το αντικείμενο 'square_function' δεν βρέθηκε και λέει ότι η συνάρτηση δεν υπάρχει.
Περιβαλλοντική Σκωτσέζικη Εταιρείαping
Στο R, το θετική ατμόσφαιρα είναι μια συλλογή αντικειμένων όπως συναρτήσεις, μεταβλητές, πλαίσια δεδομένων κ.λπ.
Η R ανοίγει ένα περιβάλλον κάθε φορά που ξεκινάει το RStudio.
Το περιβάλλον ανώτατου επιπέδου που είναι διαθέσιμο είναι το παγκόσμιο περιβάλλον, που ονομάζεται R_GlobalEnv. Και έχουμε το τοπικό περιβάλλον.
Μπορούμε να απαριθμήσουμε το περιεχόμενο του τρέχοντος περιβάλλοντος.
ls(environment())
Παραγωγή
## [1] "diff_ts" "dt" "speed" "square_function" ## [5] "ts" "x" "x_vector"
Μπορείτε να δείτε όλες τις μεταβλητές και τη συνάρτηση που δημιουργήθηκαν στο R_GlobalEnv.
Η παραπάνω λίστα θα διαφέρει για εσάς με βάση τον ιστορικό κώδικα που εκτελείτε στο RStudio.
Σημειώστε ότι n, το όρισμα της συνάρτησης square_function δεν βρίσκεται σε αυτό το καθολικό περιβάλλον.
Δημιουργείται ένα νέο περιβάλλον για κάθε συνάρτηση. Στο παραπάνω παράδειγμα, η συνάρτηση square_function() δημιουργεί ένα νέο περιβάλλον μέσα στο παγκόσμιο περιβάλλον.
Για να διευκρινιστεί η διαφορά μεταξύ παγκόσμια και τοπικός περιβάλλον, ας μελετήσουμε το ακόλουθο παράδειγμα
Αυτή η συνάρτηση παίρνει μια τιμή x ως όρισμα και την προσθέτει στον ορισμό y εκτός και εντός της συνάρτησης
Η συνάρτηση f επιστρέφει την έξοδο 15. Αυτό συμβαίνει επειδή το y ορίζεται στο παγκόσμιο περιβάλλον. Οποιαδήποτε μεταβλητή ορίζεται στο παγκόσμιο περιβάλλον μπορεί να χρησιμοποιηθεί τοπικά. Η μεταβλητή y έχει την τιμή 10 κατά τη διάρκεια όλων των κλήσεων συναρτήσεων και είναι προσβάσιμη ανά πάσα στιγμή.
Ας δούμε τι συμβαίνει αν η μεταβλητή y οριστεί μέσα στη συνάρτηση.
Πρέπει να ρίξουμε το `y` πριν εκτελέσουμε αυτόν τον κώδικα χρησιμοποιώντας το rm r
Η έξοδος είναι επίσης 15 όταν καλούμε f(5), αλλά επιστρέφει ένα σφάλμα όταν προσπαθούμε να εκτυπώσουμε την τιμή y. Η μεταβλητή y δεν βρίσκεται στο παγκόσμιο περιβάλλον.
Τέλος, το R χρησιμοποιεί τον πιο πρόσφατο ορισμό μεταβλητής για να περάσει μέσα στο σώμα μιας συνάρτησης. Ας εξετάσουμε το ακόλουθο παράδειγμα:
Το R αγνοεί τις τιμές y που ορίζονται εκτός της συνάρτησης επειδή δημιουργήσαμε ρητά τη μεταβλητή ay μέσα στο σώμα της συνάρτησης.
Λειτουργία πολλαπλών ορισμάτων
Μπορούμε να γράψουμε μια συνάρτηση με περισσότερα από ένα ορίσματα. Εξετάστε τη συνάρτηση που ονομάζεται "χρόνοι". Είναι μια απλή συνάρτηση που πολλαπλασιάζει δύο μεταβλητές.
times <- function(x,y) {
x*y
}
times(2,4)
Παραγωγή:
## [1] 8
Πότε πρέπει να γράψουμε συνάρτηση;
Οι επιστήμονες δεδομένων πρέπει να εκτελούν πολλές επαναλαμβανόμενες εργασίες. Τις περισσότερες φορές, αντιγράφουμε και επικολλούμε κομμάτια κώδικα επαναλαμβανόμενα. Για παράδειγμα, συνιστάται ιδιαίτερα η κανονικοποίηση μιας μεταβλητής πριν εκτελέσουμε μια μάθηση μηχανής αλγόριθμος. Ο τύπος για την κανονικοποίηση μιας μεταβλητής είναι:
Γνωρίζουμε ήδη πώς να χρησιμοποιούμε τη συνάρτηση min() και max() στο R. Χρησιμοποιούμε τη βιβλιοθήκη tibble για να δημιουργήσουμε το πλαίσιο δεδομένων. Το Tibble είναι μέχρι στιγμής η πιο βολική λειτουργία για τη δημιουργία ενός συνόλου δεδομένων από την αρχή.
library(tibble) # Create a data frame data_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:
Υπονοούμενος: : 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 c1
data_frame$c1_norm <- (data_frame$c1 -min(data_frame$c1))/(max(data_frame$c1)-min(data_frame$c1))
# show the first five values
head(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) Δημιουργούμε τον ονομαστή, ο οποίος είναι x – min(x). Στην R, μπορούμε να αποθηκεύσουμε τον ονομαστή σε μια μεταβλητή όπως αυτή:
nominator <- x-min(x)
Βήμα 2) Υπολογίζουμε τον παρονομαστή: max(x) – min(x). Μπορούμε να αναπαράγουμε την ιδέα του βήματος 1 και να αποθηκεύσουμε τον υπολογισμό σε μια μεταβλητή:
denominator <- max(x)-min(x)
Βήμα 3) Εκτελούμε τη διαίρεση μεταξύ παρονομαστή και παρονομαστή.
normalize <- nominator/denominator
Βήμα 4) Για να επιστρέψουμε τιμή στη συνάρτηση κλήσης πρέπει να περάσουμε το normalize inside return() για να πάρουμε την έξοδο της συνάρτησης.
return(normalize)
Βήμα 5) Είμαστε έτοιμοι να χρησιμοποιήσουμε τη συνάρτηση με αναδίπλωσηping όλα όσα βρίσκονται μέσα στην αγκύλη.
normalize <- function(x){ # step 1: create the nominator nominator <- x-min(x) # step 2: create the denominator denominator <- max(x)-min(x) # step 3: divide nominator by denominator normalize <- nominator/denominator # return the value return(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)
Παρόλο που το παράδειγμα είναι απλό, μπορούμε να συμπεράνουμε τη δύναμη ενός τύπου. Ο παραπάνω κώδικας είναι πιο εύκολος στην ανάγνωση και αποφεύγει τα λάθη που προκύπτουν κατά την επικόλληση κώδικα.
Λειτουργίες με κατάσταση
Η συνάρτηση normalize() κάνει πάντα το ίδιο πράγμα. Μερικές φορές, χρειάζεται να συμπεριλάβουμε συνθήκες σε μια συνάρτηση για να επιτρέψουμε στον κώδικα να επιστρέψει διαφορετικές εξόδους.
Στις εργασίες Μηχανικής Εκμάθησης, πρέπει να χωρίσουμε το σύνολο δεδομένων μεταξύ ενός συνόλου τρένου και ενός συνόλου δοκιμής. Το σετ τρένου επιτρέπει στον αλγόριθμο να μάθει από τα δεδομένα. Για να ελέγξουμε την απόδοση του μοντέλου μας, μπορούμε να χρησιμοποιήσουμε το σύνολο δοκιμών για να επιστρέψουμε το μέτρο απόδοσης. Το R δεν έχει συνάρτηση για τη δημιουργία δύο συνόλων δεδομένων. Μπορούμε να γράψουμε τη δική μας συνάρτηση για να το κάνουμε αυτό. Η συνάρτησή μας παίρνει δύο ορίσματα και ονομάζεται split_data(). Η ιδέα πίσω από είναι απλή, πολλαπλασιάζουμε το μήκος του συνόλου δεδομένων (δηλ. τον αριθμό των παρατηρήσεων) με 0.8. Για παράδειγμα, εάν θέλουμε να διαιρέσουμε το σύνολο δεδομένων 80/20 και το σύνολο δεδομένων μας περιέχει 100 σειρές, τότε η συνάρτησή μας θα πολλαπλασιαστεί 0.8*100 = 80. Θα επιλεγούν 80 σειρές για να γίνουν τα εκπαιδευτικά μας δεδομένα.
Θα χρησιμοποιήσουμε το σύνολο δεδομένων ποιότητας αέρα για να δοκιμάσουμε τη λειτουργία που ορίζεται από το χρήστη. Το σύνολο δεδομένων ποιότητας αέρα έχει 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
Η συνάρτησή μας έχει δύο ορίσματα. Η σειρά ορισμάτων είναι μια παράμετρος Boolean. Εάν έχει οριστεί σε TRUE, η συνάρτησή μας δημιουργεί το σύνολο δεδομένων τρένου, διαφορετικά δημιουργεί το δοκιμαστικό σύνολο δεδομένων.
Μπορούμε να προχωρήσουμε όπως κάναμε με τη συνάρτηση normalize(). Γράφουμε τον κώδικα σαν να ήταν μόνο ένας κώδικας μίας χρήσης και στη συνέχεια ενσωματώνουμε όλα όσα περιέχουν τη συνθήκη στο σώμα για να δημιουργήσουμε τη συνάρτηση.
Βήμα 1:
Πρέπει να υπολογίσουμε το μήκος του συνόλου δεδομένων. Αυτό γίνεται με τη συνάρτηση nrow(). Το Nrow επιστρέφει τον συνολικό αριθμό σειρών στο σύνολο δεδομένων. Ονομάζουμε το μεταβλητό μήκος.
length<- nrow(airquality) length
Παραγωγή:
## [1] 153
Βήμα 2:
Πολλαπλασιάζουμε το μήκος επί 0.8. Θα επιστρέψει τον αριθμό των σειρών που θέλετε να επιλέξετε. Θα πρέπει να είναι 153*0.8 = 122.4
total_row <- length*0.8 total_row
Παραγωγή:
## [1] 122.4
Θέλουμε να επιλέξουμε 122 σειρές μεταξύ των 153 σειρών στο σύνολο δεδομένων ποιότητας αέρα. Δημιουργούμε μια λίστα που περιέχει τιμές από 1 έως total_row. Αποθηκεύουμε το αποτέλεσμα στη μεταβλητή που ονομάζεται split
split <- 1:total_row split[1:5]
Παραγωγή:
## [1] 1 2 3 4 5
Το split επιλέγει τις πρώτες 122 σειρές από το σύνολο δεδομένων. Για παράδειγμα, μπορούμε να δούμε ότι η διαίρεση της μεταβλητής μας συγκεντρώνει τις τιμές 1, 2, 3, 4, 5 και ούτω καθεξής. Αυτές οι τιμές θα είναι το ευρετήριο όταν θα επιλέξουμε τις σειρές που θα επιστρέψουμε.
Βήμα 3:
Πρέπει να επιλέξουμε τις σειρές στο σύνολο δεδομένων ποιότητας αέρα με βάση τις τιμές που είναι αποθηκευμένες στη μεταβλητή διαχωρισμού. Αυτό γίνεται ως εξής:
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) }
Αυτό είναι, μπορούμε να γράψουμε τη συνάρτηση. Χρειάζεται μόνο να αλλάξουμε την ποιότητα αέρα σε df γιατί θέλουμε να δοκιμάσουμε τη λειτουργία μας σε οποιοδήποτε πλαίσιο δεδομένων, όχι μόνο ποιότητα αέρα:
split_data <- function(df, train = TRUE){ length<- nrow(df) total_row <- length *0.8 split <- 1:total_row if (train ==TRUE){ train_df <- df[split, ] return(train_df) } else { test_df <- df[-split, ] return(test_df) } }
Ας δοκιμάσουμε τη συνάρτησή μας στο σύνολο δεδομένων ποιότητας αέρα. Θα πρέπει να έχουμε ένα σύνολο δεδομένων με 122 γραμμές και ένα σύνολο δοκιμών με 31 γραμμές.
train <- split_data(airquality, train = TRUE)
dim(train)
Παραγωγή:
## [1] 122 6
test <- split_data(airquality, train = FALSE)
dim(test)
Παραγωγή:
## [1] 31 6






