8000 GitHub - PanMour/Report
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

PanMour/Report

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 

Repository files navigation

Παράδειγμα Χρήσης Εφαρμογής

Επεξήγηση Αρχείου diabetes.csv

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

  • Pregnancies: Ο αριθμός των κυήσεων που έχει περάσει η γυναίκα.
  • Glucose: Το επίπεδο γλυκόζης στο αίμα μετά από 2 ώρες σε τεστ ανοχής γλυκόζης.
  • BloodPressure: Η διαστολική αρτηριακή πίεση (mm Hg).
  • SkinThickness: Το πάχος του δέρματος στην περιοχή των τρικεφάλων (mm).
  • Insulin: Το επίπεδο ινσουλίνης στον ορό (μικρογραμμάρια ανά χιλιοστόλιτρο).
  • BMI: Δείκτης μάζας σώματος (βάρος σε κιλά δια του ύψους σε τετραγωνικά μέτρα).
  • DiabetesPedigreeFunction: Μια βαθμολογία που συνοψίζει το ιστορικό διαβήτη στην οικογένεια και την γενετική προδιάθεση.
  • Age: Η ηλικία της γυναίκας.
  • Outcome: Το αποτέλεσμα της διάγνωσης (0 = δεν έχει διαβήτη, 1 = έχει διαβήτη)

Παρόμοια δεδομένα δίνονται από τον χρήστη για να εκπαιδεύσουν το μοντέλο μηχανικής μάθησης.

diabetes_csv picture

Εισαγωγή αρχείου csv στην εφαρμογή:

insert csv picture

Dataframe tab

Το DataFrame είναι μια κεντρική δομή δεδομένων στη βιβλιοθήκη pandas της Python, που χρησιμοποιείται ευρέως για την ανάλυση και τη διαχείριση δεδομένων. Μοιάζει με φύλλο εργασίας στο Excel, με σειρές και στήλες. Κάθε στήλη μπορεί να περιέχει δεδομένα διαφορετικού τύπου.

DataFrame picture

Το Dataframe tab παρέχει δύο επιλογές:

  • α) Χρήση των labels Τα labeled datasets περιλαμβάνουν δεδομένα όπου κάθε δείγμα έχει μια συσχετισμένη ετικέτα ή στόχο που θέλουμε να προβλέψουμε. Αυτά τα δεδομένα είναι κρίσιμα για την εκπαίδευση μοντέλων εποπτευόμενης μάθησης.

Samples_with_labels picture

Labels pictures

Στο συγκρκριμένο παράδειγμα τα labels αντιστοιχούν στη στήλη Outcome η οποιά περιέχει τις δυαδικές τιμές 0,1. Ο λόγος που χρησιμοποιούμε τα labels είναι η εκπαίδευση του μοντέλου μηχανικής μάθησης μας ώστε στο μέλλον μόλις του δωθούν διαφορετικά στοιχεία να μπορεί να τα επεξεργαστεί και να δώσει όσο το δυνατό πιο σωστά αποτελέσματα. Έπειτα από την εκπαίδευση τα labels χρειάζονται για την αξιολόγηση του μοντέλου, συγκρίνοντας τις προβλέψεις του μοντέλου με τα πραγματικά labels για να μετρήσουμε την ακρίβεια και την ευαισθησία του.

  • β) Χωρίς labels

Τα unlabeled datasets περιέχουν μόνο τα χαρακτηριστικά των δειγμάτων χωρίς καμία συσχετισμένη ετικέτα. Αυτά τα δεδομένα χρησιμοποιούνται κυρίως για μεθόδους μη εποπτευόμενης μάθησης. Επιτρέπουν την ομαδοποίηση (clustering) δηλαδή την διαίρεση ενός συνόλου δεδομένων σε ομάδες ώστε τα δεδομένα σε κάθε ομάδα να είναι πιο παρόμοια μεταξύ τους σε σύγκριση με τα δεδομένα από άλλες ομάδες.

no_labels picture

2D Visualization Tab

DRA tab (Dimensionality Reduction Algorithms)

PCA plot Αποτελέσματα - Συμπεράσματα

Αποτελέσματα:

PCA_VIS picture

Συμπεράσματα:

  • Συσσώρευση Δεδομένων στα Αριστερά: Υπάρχει μεγάλη συγκέντρωση δεδομένων στα αριστερά του διαγράμματος. Αυτό μπορεί να σημαίνει ότι τα περισσότερα χαρακτηριστικά των δεδομένων συγκεντρώνονται γύρω από συγκεκριμένες τιμές ή ότι δεν υπάρχει μεγάλη ποικιλομορφία στα δεδομένα
  • Εξάπλωση των Δεδομένων: Καθώς κινούμαστε προς τα δεξιά, τα δεδομένα αρχίζουν να διασπείρονται περισσότερο. Αυτή η εξάπλωση δείχνει ότι υπάρχουν λίγα δείγματα που αποκλίνουν αρκετά από τον κύριο όγκο των δεδομένων
  • Ακραίες Τιμές: Υπάρχουν κάποια σημεία που βρίσκονται πολύ μακριά από την κύρια μάζα των δεδομένων, κάτι που μπορεί να υποδηλώνει την ύπαρξη πολύ διαφορετικών δειγμάτων.

t-SNE plot Αποτελέσματα - Συμπεράσματα

Αποτελέσματα:

T-SNE_VIS picture

Συμπεράσματα:

  • Clusters: Υπάρχουν διαχωρισμένες ομάδες (clusters) δεδομένων. Αυτό υποδηλώνει ότι τα δεδομένα έχουν φυσικές ομάδες ή κατηγορίες που είναι διακριτές μεταξύ τους.
  • Διάκριση Μεταξύ Ομάδων: Διαχώρηση σε ομάδες, δείχνοντας ότι τα δεδομένα εντός κάθε ομάδας έχουν παρόμοια χαρακτηριστικά, ενώ οι διαφορετικές ομάδες έχουν αρκετά διακριτά χαρακτηριστικά.
  • Διάταξη των Ομάδων: Μπορούμε να παρατηρήσουμε τρεις κύριες ομάδες στο διάγραμμα. Η μία ομάδα βρίσκεται στο πάνω μέρος, μια δεύτερη ομάδα είναι προς τα αριστερά και κάτω, και η τρίτη ομάδα είναι εκτεταμένη προς τα δεξιά.
  • Απομόνωση Σημείων: Υπάρχουν μερικά σημεία που είναι απομονωμένα από τις κύριες ομάδες. Αυτά μπορεί να είναι εκτοπίσματα (outliers) ή δεδομένα που δεν ανήκουν καθαρά σε καμία από τις κύριες ομάδες.

EDA tab (Exploratory Data Analysis)

Histogram plot Αποτελέσματα - Συμπεράσματα

Αποτελέσματα:

Exploratory_Analysis picture

Συμπεράσματα:

  • Συγκέντρωση Τιμών Κοντά στο Μηδέν: Η πλειονότητα των τιμών φαίνεται να συγκεντρώνεται κοντά στο μηδέν. Αυτό σημαίνει ότι πολλές από τις τιμές στο σύνολο δεδομένων είναι χαμηλές
  • Μικρός Αριθμός Μεγάλων Τιμών: Υπάρχουν λίγες τιμές που είναι σημαντικά μεγαλύτερες από τις υπόλοιπες.
  • Ετερογένεια των Δεδομένων: Το ιστόγραμμα υποδεικνύει ότι τα δεδομένα περιέχουν μια μεγάλη ποικιλία τιμών, αλλά οι περισσότερες είναι συγκεντρωμένες σε μικρό εύρος τιμών.

Density plot Αποτελέσματα - Συμπεράσματα

Αποτελέσματα:

Exploratory_Analysis picture_2

Συμπεράσματα:

  • Συγκέντρωση Κοντά στο Μηδέν: Όπως και στο ιστόγραμμα, η πλειονότητα των τιμών είναι συγκεντρωμένη κοντά στο μηδέν. Η πυκνότητα των τιμών είναι πολύ υψηλή κοντά στο μηδέν και μειώνεται ραγδαία καθώς οι τιμές αυξάνονται.
  • Σπάνιες Μεγάλες Τιμές: Υπάρχουν λίγες τιμές που είναι σημαντικά μεγαλύτερες από τις υπόλοιπες, όπως φαίνεται από τις πολύ μικρές πυκνότητες που εκτείνονται προς τα δεξιά.
  • Αυξημένη Ακρίβεια των Τιμών: Το πυκνογράφημα παρέχει μια ομαλότερη εκδοχή της κατανομής των τιμών σε σύγκριση με το ιστόγραμμα, επιτρέποντας καλύτερη κατανόηση της κατανομής των δεδομένων.

Boxplot plot Αποτελέσματα - Συμπεράσματα

Αποτελέσματα:

Exploratory_Analysis picture_3

Συμπεράσματα:

  • Μεταβλητότητα Τιμών: Οι μεταβλητές όπως οι Insulin και Glucose παρουσιάζουν μεγάλη μεταβλητότητα στις τιμές τους, ενώ οι DiabetesPedigreeFunction και SkinThickness έχουν μικρότερη μεταβλητότητα.
  • Διαφορές στις Κατανομές:: Οι τιμές της Glucose και της Insulin έχουν μεγαλύτερο εύρος σε σύγκριση με άλλες μεταβλητές, ενώ οι τιμές των Pregnancies και Age έχουν πιο συγκεντρωμένη κατανομή με μικρότερη διασπορά.
  • Εκτός Ορίων Τιμές: Υπάρχουν πολλοί εκτός ορίων τιμές (outliers) ειδικά στις μεταβλητές Insulin, SkinThickness, BloodPressure, και BMI. Αυτό μπορεί να είναι είτε λόγω ακραίων μετρήσεων είτε πιθανώς λανθασμένων δεδομένων.

Machine learning tab

Classifiers Αποτελέσματα - Συμπεράσματα

Ο χρήστης έχειτην δυνατότητα να επιλέξει ανάμεσα σε δύο είδη Machine Learning Algorithm. Είτε classifiers είτε clusters. Έπειτα δίνει τις τιμές που θέλει για τις μεταβλτητές των αλγορίθμων και πατάει το κουμπί "Start Analysis" για να δει τα αποτελέσματα και την σύγκριση των αλγορίθμων.

Classifiers_Analysis

Αποτελέσματα:

Classifiers_Analysis results

Συμπεράσματα: SVM vs KNN:

O SVM και ο KNN είναι δύο αρκετά χρήσιμοι αλγόριθμοι κατηγοριοποίησης, δηλαδή για την εκπαίδευση δεδομένων που παρέχουν labels. Ωστόσο, ύπαρχουν περιπτώσεις που η ακρίβεια και η ποιότητα τους, μπορεί να διαφέρει σε διαφορετικού είδους δεδομένα. SVM χρησιμότητα

Πιο συγκεκριμένα, στην προσέγγιση του support vector machine (SVM) approach βρίσκουμε ένα μονοπάτι για να χωρίσουμε τα δεδομένα σε δύο κλάσεις. Ο αλγόριθμος βρίσκει την ευρύτερη δυνατή διαδρομή (για να μεγιστοποιήσει την ακρίβεια του μέσω της παράμετρος regularization). Τέλος, τα δεδομένα θα πρέπει να έχουν κανονικοποιηθεί. ΚΝΝ χρησιμότητα

Ο KNN είναι ένας απλός αλγόριθμος που κατηγοριοποιεί νέα δεδομένα με βάση την ομοιότητα των χαρακτηριστικών τους, με τα χαρακτηριστικά των k πλησιέστερων γειτόνων της στα train data. Πιο συγκεκριμένα, η παράμετρος k καθορίζει πόσοι γείτονες λαμβάνονται υπόψη για την ομοιότητα αυτή που μπορεί να μετρηθεί με βάση το μέγεθος της απόστασης τους. Σε ποια περίπτωση είναι ο καθένας πιο ιδανικός?

Ο svm αλγόριθμος είναι πιο ακριβείς σε δεδομένα υψηλής διάστασης και αραιά δεδομένα, καθώς και ιδανικός στο ελαχιστοποιεί τα errors και να αποφεύγει το να γίνει overfitting αλλά είναι αρκετά δύσκολος να υλοποιηθεί καθώς χρειάζεται αρκετές διαφοροποιήσεις στην regularization παράμετρό μέχρι να δώσει την βέλτιστη ακρίβεια. Ωστόσο, όμως ο knn είναι αρκετά εύκολος στην κατανόηση του και στην υλοποιήση του καθώς και ιδανικός στο να χειρίζεται αρκετά καλά νέα δεδομένα, αλλά είναι αρκετά αργός και δυσκολεύται στο να βρεί καλά αποτελέσματα σε μεγάλα datasets.

Clusters Αποτελέσματα - Συμπεράσματα

Αποτελέσματα:

Cluster_analysis results

Συμπεράσματα:

Agglomerative Hierachical Clustering vs Affinity Propagation:

O Agglomerative Hierachical Clustering και ο Affinity Propagation είναι δύο πολύ χρήσιμοι αλγόριθμοι ομαδοποίησης δεδομένων, δηλαδή για την εκπαίδευση δεδομένων που δεν παρέχουν labels αλλά βγάζουν οι ίδιοι labels ως αποτέλεσμα. Απο την άλλη μεριά, είναι περιπτώσεις που η ακρίβεια και η ποιότητα τους, μπορεί να διαφέρει σε διαφορετικού είδους δεδομένα. Agglomerative Hierachical Clustering χρησιμότητα

Πιο συγκεκριμένα, όσον αφορά τον Agglomerative Hierachical Clustering, αρχικά υπολογίζει όλες τις αρχικές αποστάσεις μεταξύ datapoints σε ένα πίνακα με βάση μία ιεραρχία. Έπειτα, ενώνει το ζευγάρι από clusters σε 1 cluster που έχει την κοντινότερη απόσταση μεταξύ datapoints και κάνει update τις αποστάσεις του αρχικού πίνακα. Ο αλγόριθμος επαναλαμβάνεται ώσπου να συναντήσει τον απαιτούμενο αριθμό clusters που χρειαζόμαστε. Affinity Propagation χρησιμότητα

Ο Affinity Propagation είναι ένας απλός αλγόριθμος που κατηγοριοποιεί νέα δεδομένα με βάση την ομοιότητα των χαρακτηριστικών τους, με τα χαρακτηριστικά των k πλησιέστερων γειτόνων της στα train data. Πιο συγκεκριμένα, η παράμετρος k καθορίζει πόσοι γείτονες λαμβάνονται υπόψη για την ομοιότητα αυτή που μπορεί να μετρηθεί με βάση το μέγεθος της απόστασης τους.

Ο Affinity Propagation βασίζεται στην ιδέα της ανταλλαγής μηνυμάτων μεταξύ των datapoints για την εύρεση του συνόλου των κέντρων (exemplars). Αρχικά, όλα τα datapoints στέλνουν και λαμβάνουν μηνύματα σχετικά με το πόσο κατάλληλο είναι κάθε άλλο datapoint για να είναι το κέντρο του. Οι ανταλλαγές αυτών των μηνυμάτων συνεχίζονται, ενημερώνοντας σταδιακά τις προτιμήσεις και την ευθύνη κάθε σημείου. Τελικά, η διαδικασία φτάνει στο τέλος της, έχοντας καθορίσει ποια σημεία θα είναι τα κέντρα και ποια θα ανήκουν σε κάθε cluster. Ο αλγόριθμος επαναλαμβάνεται έως ότου επιτευχθεί μια σταθερή λύση, χωρίς να είναι αναγκαίο να ορίσουμε τον αριθμό των clusters. Σε ποια περίπτωση είναι ο καθένας πιο ιδανικός?

Ο αλγόριθμος Agglomerative Hierarchical Clustering είναι απλός και πιο αποτελεσματικός όταν γνωρίζουμε τον αριθμό των clusters καθώς και όταν έχουμε μικρότερα datasets με καλά διαχωρισμένα clusters, καθώς μπορεί να δημιουργήσει μια σαφή ιεραρχία των δεδομένων. Ωστόσο, δεν είναι τόσο αποδοτικός και ακριβείς σε πολύ μεγάλα datasets.

Από την άλλη πλευρά, ο αλγόριθμος Affinity Propagation είναι πόλυ χρήσιμος όταν δεν γνωρίζουμε τον αριθμό των clusters καθώς είναι ιδανικός και προσφέρει αρκετή ευελιξία όταν έχουμε πολύπλοκα και αρκετά μεγάλα datasets, παρά τους πολλούς υπολογισμούς που πραγματοποιεί λόγω της ανταλλαγής μηνυμάτων.

Info tab

Το info tab προσφέρει ένα σύντομο και περιεκτικό οδηγό χρήσης ενώ ταυτόχρονα περιέχει επεξηγήσης και αναλύσης των λειτουργιών της εφαρμογής.

info

Data Frame

Info_Data_Frame

Visualization

info_Visualization

Machine Learning

info_machine

Info

info_info

Completed Tasks

info_completed tasks

Team Info

info_team_information

Κύκλος Ζωής Έκδοσης Λογισμικού:

Εισαγωγή

Η συγκεκριμένη εφαρμογή έχει αναπτυχθεί για την εξόρυξη και ανάλυση δεδομένων χρησιμοποιώντας την πλατφόρμα Streamlit και υποστηρίζει λειτουργίες όπως φόρτωση δεδομένων, 2D οπτικοποιήσεις, μηχανική μάθηση και παρουσίαση του τρόπου λειτουργίας της. Οι κύριες δυνατότητες περιλαμβάνουν την εύκολη φόρτωση δεδομένων σε μορφή CSV ή Excel, την επισκόπηση και διαχείριση των δεδομένων, τη δημιουργία 2D οπτικοποιήσεων με χρήση αλγορίθμων μείωσης διάστασης όπως PCA και t-SNE, και την εκτέλεση αλγορίθμων μηχανικής μάθησης για κατηγοριοποίηση και ομαδοποίηση, επιτρέποντας τη σύγκριση της απόδοσης διαφορετικών αλγορίθμων.

Μοντέλο Κύκλου Ζωής Λογισμικού:

Για την επιτυχή κυκλοφορία της εφαρμογής σε ευρύ κοινό, θα ακολουθήσουμε ένα προσαρμοσμένο μοντέλο κύκλου ζωής λογισμικού, εμπνευσμένο από τις αρχές του Agile. Η ανάπτυξη της εφαρμογής θα χωριστεί σε μικρές, διαχειρίσιμες εκδόσεις με διάρκεια 2-4 εβδομάδων, κατά τις οποίες θα προστίθενται νέες λειτουργίες ή θα βελτιώνονται υπάρχουσες, βασισμένες σε ανατροφοδότηση χρηστών. Οι χρήστες θα εμπλέκονται ενεργά στη διαδικασία ανάπτυξης μέσω δοκιμών beta και ανατροφοδότησης, επιτρέποντας την ευελιξία στην προσαρμογή της ανάπτυξης με βάση τις αλλαγές στις απαιτήσεις και τις τεχνολογικές εξελίξεις ενώ ταυτόχρονα για την διευκόλυνση τους κάθε έκδοση θα ξεκινά με τον καθορισμό των στόχων και των προτεραιοτήτων και θα καταλήγει με μια ανασκόπηση της προόδου και των επιτευγμάτων. Το μοντέλο μας θα επιτρέπει την προτεραιοποίηση των λειτουργιών και την αξιολόγηση της απόδοσης και λειτουργικότητας της εφαρμογής σε κάθε στάδιο της ανάπτυξης. Μετά από κάθε έκδοση, η ομάδα θα πραγματοποιεί ανασκοπήσεις για να αξιολογήσει τι πήγε καλά, τι μπορεί να βελτιωθεί και να σχεδιάσει τις αλλαγές για την επόμενη έκδοση και μέσω αυτής της συνεχής ανατροφοδότηση διασφαλίζεται ότι η εφαρμογή εξελίσσεται με βάση τις πραγματικές ανάγκες των χρηστών και τις τεχνολογικές εξελίξεις. Χρησιμοποιώντας πρακτικές συνεχούς ενσωμάτωσης και δοκιμών για την τακτική συγχώνευση των αλλαγών στον κύριο κώδικα και τη διεξαγωγή αυτόματων δοκιμών η ομάδα ανάπτυξης , διασφαλίζει ότι η εφαρμογή παραμένει σταθερή και λειτουργική. Η χρήση εργαλείων ανάλυσης δεδομένων για τη συλλογή και ανάλυση ανατροφοδότησης από τους χρήστες θα βεβαιώνει ότι οι προτάσεις και τα σχόλια των χρηστών θα ενσωματώνονται σε μελλοντικές εκδόσεις για τη βελτίωση της εφαρμογής. Τέλος, καθημερινές συναντήσεις θα εξασφαλίζουν την ενημέρωση της ομάδας σχετικά με την πρόοδο και τυχόν προβλήματα που μπορεί να προκύψουν.

Επικοινωνία μέσω github καθώς και περιγραφή της συνεισφοράς κάθε μέλους της ομάδας

Tasks Completed by each member

Data Frame:

Την ανάπτυξη του Data Frame ανέλαβε και ολοκλήρωσε ο Νικόλας Αναγνωστόπουλος με ΑΜ: inf2021013

Visualization:

Την ανάπτυξη του Visualization ανέλαβε και ολοκλήρωσε ο Αχιλλέας Ζερβός με ΑΜ: inf2021055

Machine Learning:

Την ανάπτυξη του Machine Learning ανέλαβε και ολοκλήρωσε ο Νικόλας Αναγνωστόπουλος με ΑΜ: inf2021013

Info:

Την ανάπτυξη του Info ανέλαβε και ολοκλήρωσε ο Παναγιώτης Μουρελάτος με ΑΜ: inf2021147

Μοντέλο Κύκλου Ζωής Λογισμικού:

Την ανάπτυξη του Κύκλου Ζωής Λογισμικού ανέλαβε και ολοκλήρωσε ο Παναγιώτης Μουρελάτος με ΑΜ: inf2021147

Νικόλας Αναγνωστόπουλος - inf2021013

Παναγιώτης Μουρελάτος - inf2021147

Αχιλλέας Ζερβός - inf2021055

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0