Λειτουργίες στον προγραμματισμό R με Παράδειγμα

Τι είναι μια συνάρτηση στο R;

A λειτουργία, σε ένα περιβάλλον προγραμματισμού, είναι ένα σύνολο εντολών. Ένας προγραμματιστής δημιουργεί μια συνάρτηση προς αποφυγή επαναλαμβάνοντας το ίδια εργασία, ή μείωση περίπλοκο.

Μια συνάρτηση πρέπει να είναι

  • γραμμένο για την εκτέλεση καθορισμένων εργασιών
  • μπορεί να περιλαμβάνει ή όχι επιχειρήματα
  • περιέχουν ένα σώμα
  • μπορεί ή όχι να επιστρέψει μία ή περισσότερες τιμές.

Μια γενική προσέγγιση σε μια συνάρτηση είναι η χρήση του τμήματος ορίσματος ως είσοδοι, τροφοδοτήστε το σώμα μέρος και τελικά επιστρέψτε ένα παραγωγή. Η σύνταξη μιας συνάρτησης είναι η εξής:

function (arglist)  {
  #Function body
}

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 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')

Συνάρτηση Diff().

συνάρτηση length().

Σε πολλές περιπτώσεις, θέλουμε να μάθουμε το μήκος ενός διανύσματος για υπολογισμό ή για χρήση σε βρόχο for. Η συνάρτηση length() μετράει τον αριθμό των σειρών στο διάνυσμα x. Οι ακόλουθοι κωδικοί εισάγουν το σύνολο δεδομένων αυτοκινήτων και επιστρέφουν τον αριθμό των σειρών.

Σημείωση: length() επιστρέφει τον αριθμό των στοιχείων σε ένα διάνυσμα. Εάν η συνάρτηση μεταβιβαστεί σε έναν πίνακα ή ένα πλαίσιο δεδομένων, ο αριθμός των στηλών επιστρέφεται.

dt <- cars
## number columns
length(dt)

Παραγωγή:

## [1] 1
## number rows
length(dt[,1])

Παραγωγή:

## [1] 50

Μαθηματικές συναρτήσεις

Το R έχει μια σειρά από μαθηματικές συναρτήσεις.

OperaTor Descriptιόν
κοιλιακοί (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 Descriptιόν
μέσος όρος (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.

Σημείωση: Να είστε προσεκτικοί με την κλάση του ορίσματος, δηλαδή αριθμητικό, Boolean ή συμβολοσειρά. Για παράδειγμα, εάν πρέπει να περάσουμε μια τιμή συμβολοσειράς, πρέπει να περικλείσουμε τη συμβολοσειρά σε εισαγωγικό: "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)

Επεξήγηση κώδικα

  • Η συνάρτηση ονομάζεται 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 είναι όχι σε αυτό το παγκόσμιο περιβάλλον.

A νέος δημιουργείται περιβάλλον για κάθε λειτουργία. Στο παραπάνω παράδειγμα, η συνάρτηση 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

Πότε πρέπει να γράψουμε συνάρτηση;

Ο επιστήμονας δεδομένων πρέπει να κάνει πολλές επαναλαμβανόμενες εργασίες. Τις περισσότερες φορές, αντιγράφουμε και επικολλούμε κομμάτια κώδικα επαναλαμβανόμενα. Για παράδειγμα, η κανονικοποίηση μιας μεταβλητής συνιστάται ιδιαίτερα πριν εκτελέσουμε a μάθηση μηχανής αλγόριθμος. Ο τύπος για την κανονικοποίηση μιας μεταβλητής είναι:

Τύπος για την κανονικοποίηση μιας μεταβλητής

Γνωρίζουμε ήδη πώς να χρησιμοποιούμε τη συνάρτηση 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) Δημιουργούμε το προτείνων υποψήφιο, το οποίο είναι . Στο R, μπορούμε να αποθηκεύσουμε τον nominator σε μια μεταβλητή όπως αυτή:

nominator <- x-min(x)

Βήμα 2) Υπολογίζουμε το παρονομαστής: . Μπορούμε να επαναλάβουμε την ιδέα του βήματος 1 και να αποθηκεύσουμε τον υπολογισμό σε μια μεταβλητή:

denominator <- max(x)-min(x)

Βήμα 3) Εκτελούμε τη διαίρεση μεταξύ παρονομαστή και παρονομαστή.

normalize <- nominator/denominator

Βήμα 4) Για να επιστρέψουμε τιμή στη συνάρτηση κλήσης πρέπει να περάσουμε το normalize inside return() για να πάρουμε την έξοδο της συνάρτησης.

return(normalize)

Βήμα 5) Είμαστε έτοιμοι να χρησιμοποιήσουμε τη λειτουργία τυλίγοντας τα πάντα μέσα στο στήριγμα.

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)

Αν και το παράδειγμα είναι απλό, μπορούμε να συμπεράνουμε τη δύναμη ενός τύπου. Ο παραπάνω κώδικας είναι ευκολότερος στην ανάγνωση και κυρίως αποφεύγονται λάθη κατά την επικόλληση κωδικών.

Λειτουργίες με κατάσταση

Μερικές φορές, χρειάζεται να συμπεριλάβουμε συνθήκες σε μια συνάρτηση για να επιτρέψουμε στον κώδικα να επιστρέψει διαφορετικές εξόδους.

Στις εργασίες Μηχανικής Εκμάθησης, πρέπει να χωρίσουμε το σύνολο δεδομένων μεταξύ ενός συνόλου τρένου και ενός συνόλου δοκιμής. Το σετ τρένου επιτρέπει στον αλγόριθμο να μάθει από τα δεδομένα. Για να ελέγξουμε την απόδοση του μοντέλου μας, μπορούμε να χρησιμοποιήσουμε το σύνολο δοκιμών για να επιστρέψουμε το μέτρο απόδοσης. Το 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, η συνάρτησή μας δημιουργεί το σύνολο δεδομένων τρένου, διαφορετικά δημιουργεί το δοκιμαστικό σύνολο δεδομένων.

Μπορούμε να προχωρήσουμε όπως κάναμε με τη συνάρτηση normalise(). Γράφουμε τον κώδικα σαν να ήταν κωδικός μίας χρήσης και μετά τυλίγουμε τα πάντα με τη συνθήκη στο σώμα για να δημιουργήσουμε τη συνάρτηση.

Βήμα 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