You are on page 1of 13

Άσκηση 1 – Καθαρισμός και μετασχηματισμός δεδομένων

Το αρχείο SampleData_Ebola.csv περιέχει δεδομένα από την κρούσματα του φονικού ιού
Ebola σε μερικές χώρες της Αφρικής. Ζητούνται να εφαρμοστούν διαδικασίες καθαρίσματος
και μετασχηματισμού δεδομένων με στόχο να αναδειχθεί η διάδοση του ιού στις
αφρικάνικές χώρες.

a) Να φορτωθεί το αρχείο στο Repository του RapidMiner


b) Να διαπιστωθούν οι ιδιαιτερότητες που μπορεί να έχει και να ληφθούν αποφάσεις
c) Na γίνουν οι τροποποιήσεις σε στήλες και γραμμές
d) Να δημιουργηθούν αποτελεσματικότερα (περισσότερο καθαρά, συνεπή, ολοκληρωμένα)
σύνολα δεδομένων

ΑΑ Βήματα Ενέργεια RapidMiner


1 Δημιουργώ ένα νέο τοπικό
(l ocal) Repository για να έχω
οργανωμένο τον τρόπο που
εργάζομαι και να βρίσκω πιο
εύκολα τα σχετικά αντικείμενα
(δεδομένα, διαδικασίες)
2 Εισάγω τα δεδομένα στο l oca l
repository.

Θα πρέπει να του δείξω σε


ποιο σημείο βρίσκεται το
αρχείο που με ενδιαφέρει.

Ρυθμίζω τις παραμέτρους του


αρχείου.
Είναι σημαντικό να γνωρίζω
ποιο είναι το κωδικοποίηση
(encode) του αρχείου, ποιος
είναι ο διαχωριστικός
χαρακτήρας (σε αυτή την
περίπτωση είναι το ,) κλπ.
Επιλέγω την μορφή των
δεδομένων. Δεν αλλάζει το
περιεχόμενο αλλά τον τρόπο
παρουσίασης.

Επιλέγω το Repository όπου θα


αποθηκεύσω τα δεδομένα

Όταν ολοκληρωθεί το
φόρτωμα των δεδομένων το
εργαλείο προσφέρει μια
προεπισκόπηση.
Ο χαρακτήρας ? σημαίνει
mi s sing va lue (πεδίο χωρίς
τιμή)
Από την επιλογή Sta tistics
μπορούμε να πάρουμε μια
εποπτική εικόνα.
Διαπιστώνουμε τα επόμενα
α) Τα πεδία Da te και Da y
μάλλον προκαλούν πλεονασμό
β) Υπάρχουν εγγραφές σχετικά
με τις περιπτώσεις (Ca s es) και
τους Θανάτους (Deaths)
γ) Υπάρχουν πολλές
περιπτώσεις με mi ssing va lues
δ) Υπάρχουν χώρες εκτός
αφρικής.

Σε αυτό το σημείο θα πρέπει


να πάρουμε αποφάσεις για
κάθε μια από τις
παρατηρήσεις. Οι αποφάσεις
βασίζονται καθαρά στην
διακριτική ευχέρεια του
ερευνητή.

Για το συγκεκριμένο
παράδειγμα λαμβάνουμε τις
επόμενες αποφάσεις
α) Θα διατηρήσουμε την Da te
και θα διαγράψουμε την Da y
β) Θα πρέπει να
δημιουργήσουμε δυο
διαφορετικά σύνολα, ένα για
τις περιπτώσεις (ca s es) και ένα
για τους θανάτους (deaths)
γ) Τα mi s sing values θα τα
μετατρέψω σε μηδεν για να
μπορώ να εκτελέσω πράξεις
δ) Χώρες εκτός Αφρικής θα τις
διαγράψω.

3
Με dra g a nd drop φορτώνω τα
διαθέσιμα δεδομένα και
εμφανίζει τον opera tor
Retri eve
Εισάγουμε τον τελεστή Sel ect
Attri butes για να φτιάξουμε τα
σχετικά υποσύνολα
δεδομένων και να
αφαιρέσουμε τις στήλες που
δεν θέλουμε (αποφάσεις α και
δ).

Στην αριστερή στήλη


βρίσκονται τα χαρακτηριστικά
που δεν επιλέγονται (άρα
εξαιρούνται) σύμφωνα με τις
προηγούμενες αποφάσεις.

Εισάγουμε τον τελεστή Replace


mi s sing va lues προκειμένου να
μετατρέψουμε τα mi s sing
va l ues σε μηδέν. Δεν είναι
πάντα δόκιμο αλλά σε αυτή
την περίπτωση θα
ισχυριστούμε ότι η απουσία
τιμής είναι μηδενικό
καταγεγραμμένο κρούσμα.

Εισάγουμε τον τελεστή


Mul ti ply ώστε να αναπτύξουμε
δυο διαφορετικές ροές και να
τεμαχίσουμε σε δυο μέρη τα
αρχικά δεδομένα. Η μια ροή
θα αξιοποιηθεί για να
περιγράψει αποκλειστικά τις
περιπτώσεις (Ca s es) και η
δεύτερη τους θανάτους
(Dea ths).

Χρησιμοποιούμε τον τελεστή


Sel ect Attri butes για να
υποστηρίξουμε τα
χαρακτηριστικά που θα
βρίσκονται σε κάθε ροή /
διαδρομή.
Για παράδειγμα ο πρώτος
τελεστής διατηρεί όλα τα
χαρακτηριστικά που
σχετίζονται με τις περιπτώσεις
(ca s es) και την Da te.
Ομοίως ο s el ect attribute για
την ροή των θανάτων διατηρεί
μόνο τις στήλες Dea ths_* και
την ημερομηνία

4 Επιλέγω να αποθηκεύσω τα
αποτελέσματα κάθε
διαδρομής σε διαφορετικό
σύνολο δεδομένων (ca s es,
dea ths) στο repository ώστε να
είναι διαθέσιμα για άλλες
διαδικασίες και να
αξιοποιηθούν.

Για τον τελεστή Store της


διαδρομής που σχετίζεται με
τις περιπτώσεις (ca s es)
επιλέγω να το αποθηκεύσω
στο myna me_ebola και δίνω
όνομα
Sa mpleData_Ebola_cases για
να μπορώ να το
χρησιμοποιήσω αργότερα.
Ομοίως κάνω επιλογές και για
την άλλη διαδρομή

5 Τρέχοντας την διαδικασία


διαπιστώνω ότι έχουν
δημιουργηθεί δυο
διαφορετικά σύνολα
δεδομένων
6 Τέλος είναι καλό να σώσουμε
και την διαδικασία εντός του
Repository. Είναι καλή
πρακτική να δίνουμε έναν
αριθμό και ένα όνομα.

Ο αριθμός είναι σημαντικός


κωδικοποιεί την σειρά
εκτέλεσης της διαδικασίας

Σε αυτό το σημείο υπάρχει η διαδικασία 0_Clean_and_Split_data που έχει ως input το


αρχικό σύνολο δεδομένων και παράγει 2 αρχεία στην έξοδο (cases και deaths αντίστοιχα)
ενώ όλες οι τιμές που είναι κενές έχουν αντικατασταθεί με το μηδέν.

Μπορούμε να παρατηρήσουμε ότι οι πολλές missing values μπορεί να έχουν προκύψει


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

Επομένως επιλέγουμε να δημιουργήσουμε μια νέα διαδικασία για να μετασχηματίσουμε τα


δεδομένα από ημέρα σε εβδομάδα. Η ενέργεια αυτή ονομάζεται aggregation συνήθως. Η
διαδικασία θα τρέξει για το τις περιπτώσεις (cases) και με ακριβώς τον ίδιο τρόπο μπορεί
να επεκταθεί και στους θανάτους (death). Συνεπώς τα δεδομένα που προέκυψαν από τον
καθαρισμό (SampleData_Ebola_cases) πρόκειται να χρησιμοποιηθούν για τον
μετασχηματισμό.
ΑΑ Βήματα Ενέργεια RapidMiner
1 Σε μια νέα διαδικασία
κάνω Retri ve το σύνολο
δεδομένων
Sa mpleData_Ebola_cases

2 Η στήλη Da te περιέχει
την ημερομηνία που
έγιναν οι μετρήσεις.
Σκοπός μου είναι αντί
για μια ημερομηνία να
έχω την εβδομάδα του
έτους, υποθέτοντας ότι
θα είναι ένας αριθμός
από το 1 εως το 52.

Για να το κάνω αυτό


μπορώ να
χρησιμοποιήσω τον
τελεστή Da te to
Numeri cal που
προσφέρει το εργαλείο

3 Εισάγω τον Da te to
Numeri cal τελεστή και
ρυθμίζω τις επόμενες
παραμέτρους

Attribute name: εξηγώ


στο εργαλείο ποια στήλη
να χρησιμοποιήσει
(Da te)
time unit: Του ορίζω το
week ώστε να
αποσπάσει από το πεδίο
ημερομηνίας την
εβδομάδα
week relative to: Του
ορίζω οι εβδομάδες να
είναι αρίθμηση ως προς
το έτος για να αποκτήσω
την ακολουθία 1..52.
keep old attribute: Το
κάνω check για

4 O τελεστής Aggrega te
λειτουργεί όπως το
Group by.. ha ving count
της SQL. Εν συντομία το
SQL που θέλουμε είναι:
SELECT Da te_week,
s um(Cases_Guinea),
s um(Cases_Liberia),
s um(Cases_Mali),
s um(Cases_Nigeria),
s um(Cases_Senegal),
s um(Cases_SierraLeone)
FROM Ta bl e
GROUP BY Da te_week,
Ca s es_Guinea,
Ca s es_Liberia,
Ca s es_Mali,
Ca s es_Nigeria,
Ca s es_Senegal,
Ca s es_SierraLeone

Στο a ggregation
επιλέγουμε τις στήλες
που θα αθροίσουμε,
επομένως φτιάχουμε την
λίστα με τις στήλες και
δίπλα σε κάθε στήλη
ορίζουμε την αθροιστική
συνάρτηση s um
(υπάρχουν και άλλες
διαθέσιμες αλλά αυτή
την στιγμή δεν μας
κάνουν).
Για το Group a ttributes
επιλέγουμε μόνο την
Da te_week που έχει
δημιουργηθεί από τον
προηγούμενο operator.

5 Σε αυτή την φάση


ανάπτυξης της
διαδικασίας θα
χρησιμοποιηθεί το
Vi s ualization για να
δούμε το αποτέλεσμα
του a ggregate result.
Στην δεξιά εικόνα
εμφανίζονται τα
αποτελέσματα από το
εργαλείο, όπου στον x-
άξονα είναι η εβδομάδα
του έτους και τον y-
άξονα το πλήθος των
καταγεγραμμένων
περιπτώσεων.

Το πρόβλημα είναι ότι


χρονολογικά
μεταγενέστερες
ημερομηνίες που έχουν
Da te_week=1 και
Da te_week=2 αφορούν
το 2015 και στο
διάγραμμα εμφανίζονται
αριστερά.

Κατά συνέπεια το
διάγραμμα δεν είναι
σωστό και θα πρέπει οι
παρατηρήσεις που είναι
εντός του 2015 να
μετακινηθούν δεξιά του
διαγράμματος.

6 Τοποθετούμε τον
opera tor Ma p για να
αλλάξουμε τις τιμές του
πεδίου Da ta _Week
σύμφωνα με τον
μετασχηματισμό 153
και 254.
Οι παλαιές τιμές
αναφέρονται στην
ημερομηνία Ja n 2, 2015
και Ja n 5, 2015 οι οποίες
έχουν week_number 1
και 2 αντίστοιχα.
Με τις νέες τιμές
μετακινούνται στο τέλος
της λίστας των
εβδομάδων που ξεκινάει
από τον αριθμό 12 (μέσα
Μαρτίου 2014).

Σημειώστε ότι υπάρχουν


και άλλοι τρόποι για να
γίνει ο μετασχηματισμός
και ο περισσότερο
διαδεδομένος (αν και
πιο περίπλοκος) απαιτεί
την εφαρμογή τελεστών
επανάληψης.

7 Οπτικοποιούμε το
αποτέλεσμα για να
βεβαιωθούμε.
Συνδέουμε την
διαδικασία με την έξοδο

Το γράφημα έχει πλέον


την μορφή της δεξιάς
εικόνας. Οι εβδομάδες
53 και 54 βρίσκονται στο
τέλος του διαγράμματος
οπότε η χρονική εξέλιξη
είναι ακριβής.

8
Αποθηκεύουμε το
αποτέλεσμα του
συνόλου δεδομένων σε
νέο σημείο

9 Αποθηκεύομυε την
διαδικασία με ένα νέο
όνομα
(1_Aggrega te_at_week_l
evel ) στο repository που
έχουμε ξεκινήσει και
εργαζόμαστε
(myna me_ebola)

Σε αυτό το σημείο στο repository υπάρχουν 4 διαφορετικά σύνολα δεδομένων και δυο
διαδικασίες. Με την ίδια λογική μπορεί να αναπτυχθεί μια νέα διαδικασία για την
δημιουργία του data set SampleData_Ebola_deaths_aggregated

You might also like