Entries categorized as 'εργασίες'
Ως 7η (και τελευταία) εργασία, προβλέπεται η υποβολή (παράλληλα με το θέμα) και παρουσίαση στην αίθουσα περίληψης έκτασης 3 διαφανειών από κάθε προηγηθείσα διάλεξη. Με άλλα λόγια, ο καθένας από εσάς πρέπει να αναρτήσει (με καταληκτική ημερομηνία τα μεσάνυχτα της μεθεπόμενης Δευτέρας 26 Μαϊου) και παρουσιάσει στην καταληκτική διάλεξη του μαθήματος, εντός 5 λεπτών, 3 διαφάνειες περίληψης από την διάλεξη που του έχει ανατεθεί, με την εξής (αλφαβητική) κατανομή:
- Μάνος Ανδρουλάκης: Διάλεξη 01
- Ηρώ Ζαχαρίδου: Διάλεξη 02
- Ελευθερία Καναβού: Διάλεξη 03
- Ειρήνη Λυγκώνη: Διάλεξη 04
- Λίνα Μάσσου: Διάλεξη 05
- Αθηνά Πανδή: Διάλεξη 06
- Θεώνη Πετράτου: Διάλεξη 07
- Ειρήνη Σπαρτινού: Ok, εσύ θα μας παρουσιάσεις τα βασικά του weka σε 5′
Categories: εργασίες
Η βαθμολόγηση της Εργασίας 06 έχει ως εξής:
- Λίνα Μάσσου: 5/5
- Ηρώ Ζαχαρίδου: 5/5
- Ανδρουλάκης Μάνος: 5/5
- Πανδή Αθηνά: 5/5
- Ειρήνη Σπαρτινού: 5/5
- Καναβού Ελευθερία: 6/5
- Ειρήνη Λυγκώνη: 5/5
- Θεώνη Πετράτου: 5/5
Categories: εργασίες
Το dataset που εξετάζουμε είναι το soybean.arff. Παρατηρούμε ότι όλα τα attributes είναι της μορφής nominal.



Σκοπός μας είναι να μετασχηματίσουμε τα attributes της μορφής nominal σε attributes της μορφής numeric. Η διαδικασία που ακολουθούμε είναι η εξής:
Filter – Choose – filters – unsupervised – attributes – NominalToBinary – Apply
Έτσι λοιπόν παίρνουμε τα ακόλουθα:



Categories: εργασίες
Στην εργασία αυτή θα μετατρέψουμε nominal attributes ή class σε numeric και αντιστρόφως με την βοήθεια του filter με την βοήθεια του Weka. Το αρχείο με τα δεδομένα labor.arff περιέχει numeric (1,2,3,4,6,8,9,11,12,17), nominal (5,7,10,12,13,14,15,16,) και ενα nominal class attributes.
Όταν θέλω να κάνω classification και συγκεκριμένα να τρέξω κάποιους αλγορίθμους, όπως τον M5Rules παρατηρώ ότι το class attribute (bad or good) το δέχεται σαν binary και δεν τρέχει ο αλγόριθμος. Δεν υπάρχει αλγόριθμος που να αλλάζει το class attribute απο binary σε nominal. Επειδή όμως το class attribute ειναι bad or good (2 κλάσεις μόνο) εύκολα μπορούμε να το μετατρέψουμε σε numeric με την εξής εντολή:
Filter->Choose->filters->unsupervised->atttribute->NominalToBinary
Βάζοντας στα χαρακτηριστικά του αλγορίθμου μόνο για την τελευταία μεταβολή που είναι η τιμή στόχος (AttributesIndices->last)
Παρατηρώ ότι ο αλγόριθμος M5Rules μετά την αλλαγή υλοποιείται με την εξής εντολή:
Classify->Choose->M5Rules
Ακολουθεί το γράφημα με της class attribute που ειναι 0 ή 1.

Αν θέλουμε να αλλάξουμε τώρα και τα υπόλοιπα nominal attributes σε numeric ακολουθώ τα εξής βήματα όπως και παραπάνω:
Filter->Choose->filters->unsupervised->atttribute->NominalToBinary
Όμοια, αν θέλω να μετατρέψω τα numeric attributes σε nominal ακολουθούμε την εξής εντολή:
Filter->Choose->filters->unsupervised->attribute->NumericToNominal
Παντώντας το visualize all προκύπτει το παρακάτω γράφημα:

Categories: εργασίες
Σε αυτήν την εργασία πρέπει να αναρτήσουμε τη διαδικασία με την οποία μετατρέπουμε nominal attributes ή class σε numeric και αντιστρόφως.
Σε εμένα έχει ανατεθεί το αρχείο με τα δεδομένα iris.arff

Σε αυτά τα data έχουμε numeric attributes και nominal class.
Έστω ότι θέλουμε να κάνουμε classification.
Πηγαίνοντας classify -> rules βλέπουμε ότι δεν τρέχουν οι αλγόριθμοι M5Rules και Prism.

O M5Rules επεξεργάζεται μόνο numeric class,

οπότε για να τρέξει στα δεδομένα μας πρέπει να μετατρέψουμε τη nominal class σε numeric. Ο μόνος τρόπος να γίνει αυτό είναι να την κάνουμε binary μέσω του φίλτρου NominalToBinary (Preprocess->choose->filters->unsupervised->attribute->NominalToBinary) και αλλάζοντας τη μεταβλήτη στόχο (Class) από class σε sepallength - για παράδειγμα (μετά επαναφέρουμε το αρχικό class).

Τότε όμως χάνεται η πληροφορία που είχαμε στη μεταβλητή στόχο καθώς το φίλτρο αυτό τη σπάει σε τρεις διαφορετικές numeric (binary) atributes (όσο δηλαδή και το distinct της αρχικής μας nominal class).

O M5Rules, πλέον, τρέχει αλλά έχουμε χάσει τη μεταβλητή στόχο μας, και την πληροφορία που περιέιχε πριν τη μετατροπή.
Καταλήγουμε λοιπόν στο συμπέρασμα πως δεν έχει νόημα η μετατροπή της nominal class σε numeric, απλά δεν θα χρησιμοποιήσουμε τον αλγόριθμο αυτό.
O αλγόριθμος Prism δεν δέχεται numeric attributes,

οπότε πρέπει να μετατρέψουμε τις numeric attributes σε nominal. Αυτό γίνεται μέσω του φίλτρου NumericToNominal (Preprocess->choose->filters->unsupervised->attribute->NumericToNominal).

οπότε μπορούμε, πλέον, να εφαρμόσουμε τον αλγόριθμο Prism.
Categories: άλλο · εργασίες
Εργασια06
Το αρχείο weather-nominal.arff περιέχει όλα τα χαρακτηριστικά σε [nominal,nominal] μορφή.

1. [nominal,nominal]->[numeric,nominal]
Για τη μετατροπή αυτή επιλέγεται από το tab choose (filter):
Filters->unsupervised->Nominal to Binary
Με αυτό τον τρόπο προκύπτουν πλέον 9 μεταβλητές από 5 που υπήρχαν αρχικά και αυτό διότι τα nominal χαρακτηριστικά είναι σκόπιμο να διαιρούνται σε ξεχωριστά binary attributes όταν δεν μπορούν να διαταχθούν το ένα ως προς το άλλο (συνήθης περίπτωση)
<!–[if gte vml 1]> <![endif]–><!–[if !vml]–><!–[endif]–>

2. [nominal,nominal]->[numeric,numeric]
Ακολουθούμε ακριβώς τη διαδικασία του παραπάνω βήματος και επιλέγουμε κπ χαρακτηριστικό διαφορετικό από το play (class attribute) και επιλέγουμε το apply μια ακόμη φορά στο ίδιο φίλτρο (το γνωστό τρικ ).
<!–[if gte vml 1]> <![endif]–><!–[if !vml]–><!–[endif]–>

3. [nominal,nominal]->[numeric,nominal]
Ακολουθούμε μόνο το βήμα 2. δηλαδή Filters->unsupervised->Nominal to Binary, ( με attributeIndices : last), και με το γνωστό τρικ έχουμε την παρακάτω εικόνα

Categories: εργασίες
Tagged: Add new tag, Ergasia06
Στην παρούσα εργάσια ζητείται ο μετασχηματισμός των input και class attribute σε numeric και nominal ανάλογα με τον αλγόριθμο που τρέχουμε κάθε φορά.
Στο αρχείο segment-test.arff τα input attributes είναι numeric και το class attribute είναι nominal.
Αν τρέξουμε στο weka τον αλγόριθμο M5Rules ακολουθώντας τα παρακάτω βήματα
Classify->Choose->rules->M5Rule εμφανίζεται το ακόλουθο μήνυμα

Για να μετατρέψουμε το class attribute σε nominal πάμε
Preprocess->Filter->Choose->unsupervised->attribute->nominal to binary
Παρατηρούμε ότι δεν έχει αλλάξει το class attribute παραμένει nominal. Πρέπει να ορίσουμε άλλη class attribute από το drop down list Class:Class (Nom). Έστω ότι η νέα μεταβλητή στόχος είναι το attribute hue-mean. Εφαρμόζοντας το παραπάνω φίλτρο η νέα μεταβλητή στόχος έγινε numeric έχοντας όμως “σπάσει” σε 7 διαφορετικές binary μεταβλητές,όσα και τα distinct της προηγούμενης class attribute όπως φαίνεται στο παρακάτω σχήμα.

Όπως είδαμε παραπάνω δεν έχει νόημα να μετατρέπουμε την class attribute, γι αυτό τον αλγόριθμο τον επιλέγουμε εξαρχής με βάσει τον τύπο της μεταβλητής στόχου.
Αυτό που είναι εφικτό στο συγκεκριμένο dataset είναι η μετροπή των input attributes από numeric σε nominal. Αν προσπαθήσουμε να τρέξουμε τον αλγόριθμο Prism
Classify->Classifier->Choose->rules->Prism
θα δούμε ότι τα input attributes πρέπει να είναι nominal για να τρέξει. Οπότε ακολουθούμε τα παρακάτω βήματα.
Preprocess->Filter->Choose->NumericToNominal
Αν πατήσουμε το visualize all έχουμε το παρακάτω γράφημα όπου φαίνεται ότι όλες οι μεταβλητές έγιναν nominal.

Categories: εργασίες
Σκοπός της εργασίας είναι η μετατροπή των attributes από numeric σε nominal ή αντιστρόφως, αναλόγως ποιο dataset έχει ο καθένας, ώστε να μπορούν να υλοποιηθούν αλγόριθμοι οι οποίοι απαιτούν συγκεκριμένη μορφή των δεδομένων.
Το dataset με το οποίο θα ασχοληθούμε είναι το contact-lenses. Με μια απλή οπτικοποίηση των δεδομένων από το Edit παρατηρούμε ότι όλα τα attributes μαζί με το class-attribute είναι nominal.
Image1
Oι αλγόριθμοι οι οποίοι παρουσιάζουν πρόβλημα, είναι ο Μ5Rules στο Classify, όπου αν επιχειρήσουμε να τον τρέξουμε μας βγάζει σφάλμα ότι δεν μπορεί να χρησιμοποιήσει nominal class και ο αλγόριθμος Xmeans στο Cluster ο οποίος δεν μπορεί να χρησιμοποιήσει nominal attributes.
Οπότε το μόνο που μπορούμε να κάνουμε αρχικά, είναι να μετατρέψουμε τα nominal attributes σε binary (ώστε να γίνουν numeric).
Αυτό υλοποιείται ως εξής:
Επιλέγουμε FilteràChooseàfiltersàunsupervisedàatttributeàNominalToBinary.
Image 2

Yποτίθεται τώρα ότι θα έπρεπε να τρέξει ο αλγόριθμος Xmeans. Όμως, όταν κάνουμε φιλτράρισμα στα δεδομένα, έστω κι αν έχουμε επιλέξει first-last στο AttributesIndices (στα χαρακτηριστικά του αλγορίθμου) πριν κάνουμε τον μετασχηματισμό από nominal σε binary, αλλάζουν όλα πλην του class (βλ. image2). Τελικά, πάλι δεν τρέχει ο Xmeans. Αυτό που μπορούμε να κάνουμε είναι, πριν το φιλτράρισμα, να ορίσουμε άλλο attribute ως class, και έπειτα να επιλέξουμε να γίνει η αλλαγή μόνο στο τελευταίο attribute (το οποίο είναι και το class atttribute). Αυτό όμως πάλι θα μας δημιουργήσει πρόβλημα, καθότι η αρχική nominal μορφή του class είχε 3 distinct values, οπότε και θα δημιουργηθούν 3 καινούργια binary attributes αντί του αρχικού class. Επίσης ως class attribute θα είναι πλέον το τελευταίο. Προφανώς δεν ωφελεί σε κάτι να γίνει η συγκεκριμένη αλλαγή, μιας και έτσι χαλάει εντελώς η μεταβλητή στόχος. Άρα πολύ απλά δεν πρέπει να γίνει οποιαδήποτε αλλαγή στο class attribute και δεν μπορούμε τελικά να χρησιμοποιήσουμε τον συγκεκριμένο αλγόριθμο.
Όσον αφορά τον M5Rules, πρέπει μόνο να αλλάξουμε το class attribute οπότε για τους λόγους που αναφέραμε πριν, κάτι τέτοιο δεν πρέπει να γίνει. Άρα δεν μπορεί να χρησιμοποιηθεί ούτε αυτός ο αλγόριθμος.
Categories: εργασίες
Το dataset που εξετάζουμε είναι το cpu.with.vendor. Έχει 7 input attribute εκ των οποίων ένα (vendor) είναι nominal και τα υπόλοιπα είναι numeric. Το class attribute είναι numeric. ’Αρα είμαστε στην περίπτωση,(both,numeric)
1.Numeric, numeric
Αλλάζουμε μόνο το πρώτο attribute
Για το μετασχηματισμό αυτό χρησιμοποιούμε από τα unsupervised φίλτρα του weka για τα attributes το NominalToBinary.
Εδώ βλέπουμε το ιστόγραμμα για το attribute vendor

Μετά την εφαρμογή του φίλτρου:
Να σημειωθεί πως για κάθε label του nominal attribute δημιουργείται ένα νέο numeric attribute.
‘Ετσι από 8 attribute που είχαμε πριν τώρα έχουμε 37.
2.Numeric, nominal
1 και Αλλάζουμε τον τύπο της κλάσης
Χρησιμοποιούμε από τα unsupervised φίλτρα για τα attributes το Discretize , για να μπορέσει όμως να γίνει η μετατροπή της κλάσης ,ορίζουμε κάποιο άλλο attribute ως class attribute.

Επιλέγοντας findNumBins=True(το παράθυρο εμφανίζεται κάνοντας διπλό κλικ στην «μπάρα» ανάμεσα από «filter” και “apply”) ,το weka ορίζει από μόνο του σε πόσα διαστήματα θα χωρίσει το (-∞,∞).


3.Nominal,nominal
Χρησιμοποιούμε από τα unsupervised φίλτρα για τα attributes το Discretize.
(findNumBins=True)

(bins=10)

4.Nominal, numeric
Discretize για όλα attributes εκτός από το class attribute.

Categories: εργασίες
Παρατηρούμε στο dataset segment challenge ότι όλα τα attributes είναι της μορφής numeric, με εξαίρεση class attribute το οποίο είναι της μορφής nominal. Θα μετασχηματίσουμε το attributes της μορφής numeric σε attributes της μορφής nominal. Για το μετασχηματισμό αυτό ακολουθούμε τα εξής βήματα:
filter -> choose -> unsupervised -> attribute -> numeric to nominal
Με αυτή τη διαδικασία έχουν γίνει όλα τα attributes nominal, όπως φαίνεται και στην παρακάτω εικόνα και οι αλγόριθμοι που χρειάζονται attributes αυτής της μορφής μπορούν πλέον να τρέξουν.

Παρατηρούμε ότι ο αλγόριθμος M5Rules δεν τρέχει. Γι’ αυτό επιλέγουμε διαφορετικό class attribute και στη συνέχεια εφαρμόζουμε το φίλτρο nominal to binary, ορίζοντας στις επιλογές του attributeIndices: last attribute.

Categories: εργασίες