# Δημιουργία μοντέλου παλινδρόμησης με χρήση Scikit-learn: παλινδρόμηση με τέσσερις τρόπους
# Δημιουργία μοντέλου παλινδρόμησης χρησιμοποιώντας το Scikit-learn: παλινδρόμηση με τέσσερις τρόπους
## Σημείωση για αρχάριους
Η γραμμική παλινδρόμηση χρησιμοποιείται όταν θέλουμε να προβλέψουμε μια **αριθμητική τιμή** (για παράδειγμα, τιμή σπιτιού, θερμοκρασία ή πωλήσεις). Λειτουργεί βρίσκοντας μια ευθεία που αντιπροσωπεύει καλύτερα τη σχέση μεταξύ των εισαγόμενων χαρακτηριστικών και της εξόδου.
Η γραμμική παλινδρόμηση χρησιμοποιείται όταν θέλουμε να προβλέψουμε μια **αριθμητική τιμή** (για παράδειγμα, την τιμή ενός σπιτιού, τη θερμοκρασία ή τις πωλήσεις).
Λειτουργεί βρίσκοντας μια ευθεία γραμμή που αντιπροσωπεύει καλύτερα τη σχέση μεταξύ των εισροών και της εξόδου.
Σε αυτό το μάθημα, εστιάζουμε στην κατανόηση της έννοιας πριν εξερευνήσουμε πιο προχωρημένες τεχνικές παλινδρόμησης.
> ### [Αυτό το μάθημα είναι διαθέσιμο και σε R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Εισαγωγή
### Εισαγωγή
Μέχρι τώρα έχετε διερευνήσει τι είναι η παλινδρόμηση με δείγμα δεδομένων από το σύνολο δεδομένων τιμών κολοκύθας που θα χρησιμοποιήσουμε σε όλο αυτό το μάθημα. Επίσης, το έχετε απεικονίσει οπτικά με τη χρήση του Matplotlib.
Μέχρι τώρα έχετε εξερευνήσει τι είναι η παλινδρόμηση με δείγματα δεδομένων που συλλέχθηκαν από το σύνολο δεδομένων τιμών κολοκύθας που θα χρησιμοποιήσουμε σε όλο αυτό το μάθημα. Έχετε επίσης το οπτικοποιήσει χρησιμοποιώντας το Matplotlib.
Τώρα είστε έτοιμοι να εμβαθύνετε στην παλινδρόμηση γιατην Μηχανική Μάθηση. Ενώ η οπτικοποίηση σας επιτρέπει να κατανοήσετε τα δεδομένα, η πραγματική δύναμη της Μηχανικής Μάθησης προέρχεται από το _εκπαίδευση μοντέλων_. Τα μοντέλα εκπαιδεύονται με ιστορικά δεδομένα γιανα συλλάβουν αυτόματα τις εξαρτήσεις δεδομένων, και σας επιτρέπουν να προβλέπετε αποτελέσματα για νέα δεδομένα, τα οποία το μοντέλο δεν έχει δει προηγουμένως.
Τώρα είστε έτοιμοι να εμβαθύνετε στην παλινδρόμηση για Μηχανική Μάθηση. Ενώ η οπτικοποίηση σας επιτρέπει να κατανοήσετε τα δεδομένα, η πραγματική δύναμη της Μηχανικής Μάθησης προέρχεται από _την εκπαίδευση μοντέλων_. Τα μοντέλα εκπαιδεύονται σε ιστορικά δεδομένα γιανα συλλάβουν αυτόματα τις εξαρτήσεις των δεδομένων και σας επιτρέπουν να προβλέπετε αποτελέσματα για νέα δεδομένα που το μοντέλο δεν έχει ξαναδεί.
Σε αυτό το μάθημα, θα μάθετε περισσότερα για δύο τύπους παλινδρόμησης: _βασική γραμμική παλινδρόμηση_ και _πολυωνυμική παλινδρόμηση_, μαζί με κάποια από τα μαθηματικά που βασίζονται αυτές οι τεχνικές. Αυτά τα μοντέλα θα μας επιτρέψουν να προβλέψουμε τις τιμές κολοκύθας ανάλογα με διαφορετικά εισαγόμενα δεδομένα.
Σε αυτό το μάθημα, θα μάθετε περισσότερα για δύο τύπους παλινδρόμησης: _βασική γραμμική παλινδρόμηση_ και _πολυωνυμική παλινδρόμηση_, μαζί με κάποια από τα μαθηματικά που υποστηρίζουν αυτές τις τεχνικές. Αυτά τα μοντέλα θα μας επιτρέψουν να προβλέψουμε τις τιμές της κολοκύθας ανάλογα με διάφορα εισερχόμενα δεδομένα.
[](https://youtu.be/CRxFT8oTDMg "Μηχανική Μάθηση για αρχάριους - Κατανόηση της Γραμμικής Παλινδρόμησης")
[](https://youtu.be/CRxFT8oTDMg "Μηχανική Μάθηση για αρχάριους - Κατανόηση της γραμμικής παλινδρόμησης")
> 🎥 Κάντε κλικ στην εικόνα παραπάνω γιασύντομη επισκόπηση βίντεο σχετικά με τη γραμμική παλινδρόμηση.
> 🎥 Κάντε κλικ στην εικόνα παραπάνω γιαένα σύντομο βίντεο επισκόπησης της γραμμικής παλινδρόμησης.
> Σε όλη τη διάρκεια αυτού του προγράμματος σπουδών, θεωρούμε ελάχιστες γνώσεις μαθηματικών, και στοχεύουμε να το κάνουμε προσβάσιμο για φοιτητές από άλλους κλάδους, οπότε παρατηρήστε τις σημειώσεις, 🧮 επισήμανσεις, διαγράμματα και άλλα εργαλεία μάθησης για βοήθεια στην κατανόηση.
> Καθ' όλη τη διάρκεια αυτού του προγράμματος σπουδών, υποθέτουμε ελάχιστες γνώσεις μαθηματικών και προσπαθούμε να το κάνουμε προσιτό σε φοιτητές από άλλα πεδία, οπότε δώστε προσοχή σε σημειώσεις, 🧮 υπομνήσεις, διαγράμματα και άλλα εργαλεία μάθησης γιανα βοηθήσουν στην κατανόηση.
### Προαπαιτούμενα
Πρέπει να είστε εξοικειωμένοι πια με τη δομή των δεδομένων κολοκύθας που εξετάζουμε. Μπορείτε να τα βρείτε προφορτωμένα και καθαρισμένα στο αρχείο _notebook.ipynb_ αυτού του μαθήματος. Στο αρχείο, η τιμή της κολοκύθας εμφανίζεται ανά μπουσέλ σε νέο πλαίσιο δεδομένων. Βεβαιωθείτε ότι μπορείτε να εκτελέσετε αυτά τα notebooks σε kernels στο Visual Studio Code.
Πρέπει να είστε πλέον εξοικειωμένοι με τη δομή των δεδομένων κολοκύθας που εξετάζουμε. Μπορείτε να τα βρείτε προφορτωμένα και προ-καθαρισμένα στο αρχείο _notebook.ipynb_ αυτού του μαθήματος. Στο αρχείο, η τιμή της κολοκύθας εμφανίζεται ανά μπούσελ σε νέο πλαίσιο δεδομένων. Βεβαιωθείτε ότι μπορείτε να εκτελέσετε αυτά τα notebooks σε πυρήνες στο Visual Studio Code.
### Προετοιμασία
Ως υπενθύμιση, φορτώνετε αυτά τα δεδομένα γιαναθέσετε ερωτήματα πάνω σε αυτά.
Ως υπενθύμιση, φορτώνετε αυτά τα δεδομένα γιανακάνετε ερωτήσεις σχετικά με αυτά.
- Ποια είναι η καλύτερη εποχή να αγοράσουμε κολοκύθες;
- Τι τιμή μπορώ να αναμένω για μια περίπτωση μικρών κολοκύθων;
- Πρέπει να τις αγοράσω σε καλάθια μισού μπουσέλ ή σε συσκευασία 1 1/9 μπουσέλ;
- Ποια είναι η καλύτερη στιγμή γιανα αγοράσετε κολοκύθες;
- Ποια τιμή μπορώ να περιμένω για μια συσκευασία μικρών κολοκυθών;
- Πρέπει να τις αγοράσω σε καλάθια μισού μπούσελ ή σε κουτί 1 1/9 μπούσελ;
Ας συνεχίσουμε να ερευνούμε αυτά τα δεδομένα.
Στο προηγούμενο μάθημα, δημιουργήσατε ένα πλαίσιο δεδομένων Pandas και το γεμίσατε με μέρος του αρχικού συνόλου δεδομένων, τυποποιώντας τις τιμές ανά μπουσέλ. Με αυτόν τον τρόπο, ωστόσο, καταφέρατε να συλλέξετε μόνο περίπου 400 σημεία δεδομένων και μόνο για τους φθινοπωρινούς μήνες.
Στο προηγούμενο μάθημα, δημιουργήσατε ένα Pandas data frame και το συμπληρώσατε με μέρος του αρχικού συνόλου δεδομένων, τυποποιώντας την τιμή ανά μπούσελ. Με αυτόν τον τρόπο, όμως, μαζέψατε μόνο περίπου 400 σημεία δεδομένων και μόνο για τους φθινοπωρινούς μήνες.
Ρίξτε μια ματιά στα δεδομένα που προφορτώσαμε στο συνοδευτικό notebook αυτού του μαθήματος. Τα δεδομένα είναι προφορτωμένα και έχει γίνει αρχικό scatterplot γιανα δείξει δεδομένα ανά μήνα. Ίσως μπορέσουμε να πάρουμε λίγο περισσότερες λεπτομέρειες για τη φύση των δεδομένων με περαιτέρω καθαρισμό.
Ρίξτε μια ματιά στα δεδομένα που έχουμε προφορτώσει στο συνοδευτικό notebook αυτού του μαθήματος. Τα δεδομένα είναι προφορτωμένα και αρχικό scatterplot σχεδιάζεται γιανα δείξει δεδομένα μήνα. Ίσως να πάρουμε λίγες περισσότερες λεπτομέρειες για τη φύση των δεδομένων καθαρίζοντάς τα περισσότερο.
## Μια γραμμική γραμμή παλινδρόμησης
Όπως μάθατε στο Μάθημα 1, ο στόχος μιας άσκησης γραμμικής παλινδρόμησης είναι να μπορέσουμε να σχεδιάσουμε μια γραμμή που:
Όπως μάθατε στο Μάθημα 1, ο στόχος μιας άσκησης γραμμικής παλινδρόμησης είναι να μπορέσετε να σχεδιάσετε μια γραμμή γιανα:
- **Δείχνει τις σχέσεις μεταβλητών**. Δείχνει τη σχέση μεταξύ μεταβλητών
- **Κάνει προβλέψεις**. Κάνει ακριβείς προβλέψεις για το πού θα βρίσκεται ένα νέο δεδομένο σε σχέση με αυτή τη γραμμή.
- **Δείξετε τις σχέσεις μεταξύ μεταβλητών**. Δείξτε τη σχέση μεταξύ των μεταβλητών
- **Κάνετε προβλέψεις**. Κάνετε ακριβείς προβλέψεις για το που θα τοποθετηθεί ένα νέο σημείο δεδομένων σε σχέση με αυτή τη γραμμή.
Είναι τυπικό της **Παλινδρόμησης Ελαχίστων Τετραγώνων** να σχεδιάζει αυτό το είδος γραμμής. Ο όρος "Ελαχίστη Τετραγωνική" αναφέρεται στη διαδικασία ελαχιστοποίησης του συνολικού σφάλματος στο μοντέλο μας. Για κάθε σημείο δεδομένων, μετράμε την κάθετη απόσταση (που ονομάζεται υπολειπόμενο) μεταξύ του πραγματικού σημείου και της γραμμής παλινδρόμησης.
Είναι τυπικό της **Παλινδρόμησης Ελαχίστων Τετραγώνων** να σχεδιάζετε αυτού του τύπου τη γραμμή. Ο όρος "Ελαχίστων Τετραγώνων" αναφέρεται στη διαδικασία ελαχιστοποίησης του συνολικού σφάλματος στο μοντέλο μας. Για κάθε σημείο δεδομένων μετράμε την κατακόρυφη απόσταση (ονομάζεται υπόλοιπο) μεταξύ του πραγματικού σημείου και της γραμμής παλινδρόμησής μας.
Αυτές τις αποστάσεις τις τετραγωνίζουμε για δύο κύριους λόγους:
Τετρώνουμε αυτές τις αποστάσεις για δύο βασικούς λόγους:
1. **Μέγεθος αντί για κατεύθυνση:** Θέλουμε να αντιμετωπίσουμε ένα σφάλμα -5 το ίδιο με ένα σφάλμα +5. Η τετραγωνική μετατρέπει όλες τις τιμές σε θετικές.
1. **Μέγεθος έναντι Κατεύθυνσης:** Θέλουμε ένα σφάλμα -5 να θεωρείται το ίδιο με ένα σφάλμα +5. Η τετραγωνική κάνει όλες τις τιμές θετικές.
2. **Τιμωρία για Εκτός Ορίων Σφάλματα:** Η τετραγωνική δίνει μεγαλύτερο βάρος στα μεγαλύτερα σφάλματα, αναγκάζοντας τη γραμμή να παραμείνει πιο κοντά σε σημεία που είναι μακριά.
2. **Τιμωρία Ακραίων Τιμών:** Το τετράγωνο δίνει μεγαλύτερο βάρος στα μεγαλύτερα σφάλματα, αναγκάζοντας τη γραμμή να παραμείνει πιο κοντά σε σημεία που είναι μακριά.
Έπειτα προσθέτουμε όλες αυτές τις τετραγωνισμένες τιμές μαζί. Ο στόχος μας είναι να βρούμε την συγκεκριμένη γραμμή όπου αυτό το τελικό άθροισμα είναι το μικρότερο δυνατό — εξ ου και το όνομα "Ελαχίστων Τετραγώνων".
Στη συνέχεια, προσθέτουμε όλες αυτές τις τετραγωνισμένες τιμές. Ο στόχος μας είναι να βρούμε τη συγκεκριμένη γραμμή όπου το τελικό άθροισμα είναι το ελάχιστο (η μικρότερη δυνατή τιμή)—εξού και το όνομα "Ελαχίστων Τετραγώνων".
> **🧮 Δείξε μου τα μαθηματικά**
>
> Αυτή η γραμμή, που ονομάζεται _γραμμή της καλύτερης προσαρμογής_, μπορεί να εκφραστεί με [μια εξίσωση](https://en.wikipedia.org/wiki/Simple_linear_regression):
> Αυτή η γραμμή, που ονομάζεται _γραμμή της καλύτερης εφαρμογής_ μπορεί να εκφραστεί με [μια εξίσωση](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
> `X` είναι η 'εξηγηματική μεταβλητή'. `Y` είναι η 'εξαρτημένη μεταβλητή'. Η κλίση της γραμμής είναι `b` και το `a` είναι η τομή στον άξονα y, που αναφέρεται στην τιμή του `Y` όταν `X = 0`.
> Το`X` είναι η 'εξηγηματική μεταβλητή'.Το`Y` είναι η 'εξαρτημένη μεταβλητή'. Η κλίση της γραμμής είναι το `b` και το `a` είναι η διασταύρωση y, που αναφέρεται στην τιμή του `Y` όταν `X = 0`.
>
>
>
> Πρώτα, υπολογίστε την κλίση `b`. Infographic από την [Jen Looper](https://twitter.com/jenlooper)
> Πρώτα, υπολογίστε την κλίση `b`. Infographic από [Jen Looper](https://twitter.com/jenlooper)
>
> Με άλλα λόγια, και αναφερόμενοι στην αρχική ερώτηση των δεδομένων κολοκύθας μας: "προβλέψτε την τιμή μιας κολοκύθας ανά μπουσέλ ανά μήνα", το `X` θα αναφερόταν στην τιμή και το `Y` στον μήνα πώλησης.
> Με άλλα λόγια, και αναφερόμενοι στην αρχική ερώτηση των δεδομένων μας για την κολοκύθα: "προβλέψτε την τιμή μιας κολοκύθας ανά μπούσελ ανά μήνα", το `X` θα αναφερόταν στην τιμή και το `Y` στον μήνα πώλησης.
>
>
>
>
> Υπολογίστε την τιμή του Y. Αν πληρώνετε γύρω στα 4 δολάρια, πρέπει να είναι Απρίλιος! Infographic από την [Jen Looper](https://twitter.com/jenlooper)
> Υπολογίστε την τιμή του Y. Αν πληρώνετε γύρω στα 4 δολάρια, πρέπει να είναι Απρίλιος! Infographic από [Jen Looper](https://twitter.com/jenlooper)
>
> Τα μαθηματικά που υπολογίζουν τη γραμμή πρέπει να δείχνουν την κλίση της γραμμής, η οποία εξαρτάται επίσης από την τομή, ή το σημείο όπου βρίσκεται το `Y` όταν `X = 0`.
> Τα μαθηματικά που υπολογίζουν τη γραμμή πρέπει να δείξουν την κλίση της γραμμής, που επίσης εξαρτάται από τη διασταύρωση, ή πού βρίσκεται το `Y` όταν `X = 0`.
>
> Μπορείτε να δείτε τη μέθοδο υπολογισμού αυτών των τιμών στην ιστοσελίδα [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Επισκεφθείτε επίσης [τον υπολογιστή Ελαχίστων Τετραγώνων](https://www.mathsisfun.com/data/least-squares-calculator.html) γιανα δείτε πώς οιαριθμητικές τιμές επιδρούν στη γραμμή.
> Μπορείτε να δείτε τη μέθοδο υπολογισμού αυτών των τιμών στην ιστοσελίδα [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Επίσης επισκεφτείτε [αυτόν τον Υπολογιστή Ελαχίστων Τετραγώνων](https://www.mathsisfun.com/data/least-squares-calculator.html) γιανα δείτε πώς οιτιμές επηρεάζουν τη γραμμή.
## Συνάφεια
## Συνάφεια (Correlation)
Ένας ακόμη όρος προς κατανόηση είναι ο**Συντελεστής Συσχέτισης** μεταξύ των δοσμένων μεταβλητών X και Y. Χρησιμοποιώντας ένα scatterplot, μπορείτε γρήγορα να οπτικοποιήσετε αυτόν τον συντελεστή. Ένα γράφημα με σημεία δεδομένων συγκεντρωμένα σε μια καθαρή γραμμή έχει υψηλή συσχέτιση, ενώ ένα γράφημα με σημεία δεδομένων σκορπισμένα παντού μεταξύ X και Y έχει χαμηλή συσχέτιση.
Ένας ακόμα όρος που πρέπει να κατανοήσετε είναι ο**Συντελεστής συσχέτισης** μεταξύ των δεδομένων μεταβλητών X και Y. Χρησιμοποιώντας ένα scatterplot, μπορείτε γρήγορα να οπτικοποιήσετε αυτόν τον συντελεστή. Ένα διάγραμμα με σημεία διασκορπισμένα σε μια καθαρή γραμμή έχει υψηλή συσχέτιση, ενώ ένα διάγραμμα με σημεία διασκορπισμένα παντού ανάμεσα σε X και Y έχει χαμηλή συσχέτιση.
Ένα καλό μοντέλο γραμμικής παλινδρόμησης θα είναι αυτό που έχει υψηλό (πιο κοντά στο 1 παρά στο 0) Συντελεστή Συσχέτισης με χρήση της μεθόδου Ελαχίστων Τετραγώνων με γραμμή παλινδρόμησης.
Ένα καλό μοντέλο γραμμικής παλινδρόμησης θα έχει υψηλό (πιο κοντά στο 1 παρά στο 0) Συντελεστή Συσχέτισης χρησιμοποιώντας τη μέθοδο Ελαχίστων Τετραγώνων με μια γραμμή παλινδρόμησης.
✅ Εκτελέστε το notebook που συνοδεύει αυτό το μάθημα και δείτε το scatterplot μήνα προς τιμή. Φαίνεται να υπάρχει υψηλή ή χαμηλή συσχέτιση στα δεδομένα που συνδέουν τον μήνα με την τιμή των πωλήσεων κολοκύθας σύμφωνα με την οπτική σας ερμηνεία του scatterplot; Αλλάζει κάτι αν χρησιμοποιήσετε πιο λεπτομερή μέτρο αντί για`Month`, π.χ. *ημέρα του έτους* (δηλαδή αριθμός ημερών από την αρχή του έτους);
✅ Εκτελέστε το notebook που συνοδεύει αυτό το μάθημα και εξετάστε το διάγραμμα διασποράς Μήνας προς Τιμή. Φαίνεται ότι η συσχέτιση των δεδομένων Μήνα με Τιμή για τις πωλήσεις κολοκύθας έχει υψηλή ή χαμηλή συσχέτιση, σύμφωνα με την οπτική σας ερμηνεία του διαγράμματος; Αλλάζει αυτό αν χρησιμοποιήσετε μια πιο λεπτομερή μέτρηση αντί για`Μήνα`, π.χ. *ημέρα του έτους* (δηλαδή, αριθμός ημερών από την αρχή του έτους);
Στον παρακάτω κώδικα, υποθέτουμε ότι έχουμε καθαρίσει τα δεδομένα και έχουμε αποκτήσει ένα πλαίσιο δεδομένων με το όνομα `new_pumpkins`, παρόμοιο με το εξής:
Στον κώδικα παρακάτω, θα υποθέσουμε ότι έχουμε καθαρίσει τα δεδομένα και έχουμε λάβει ένα πλαίσιο δεδομένων που ονομάζεται `new_pumpkins`, παρόμοιο με το ακόλουθο:
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
> Ο κώδικας για τον καθαρισμό των δεδομένων είναι διαθέσιμος στο [`notebook.ipynb`](notebook.ipynb). Έχουμε πραγματοποιήσει τα ίδια βήματα καθαρισμού όπως στο προηγούμενο μάθημα, και έχουμε υπολογίσει τη στήλη `DayOfYear`με την ακόλουθη έκφραση:
> Ο κώδικας για τον καθαρισμό των δεδομένων είναι διαθέσιμος στο [`notebook.ipynb`](notebook.ipynb). Έχουμε πραγματοποιήσει τα ίδια βήματα καθαρισμού όπως στο προηγούμενο μάθημα και έχουμε υπολογίσει τη στήλη `DayOfYear`χρησιμοποιώντας την ακόλουθη έκφραση:
Τώρα που έχετε κατανοήσει τα μαθηματικά πίσω από τη γραμμική παλινδρόμηση, ας δημιουργήσουμε ένα μοντέλο παλινδρόμησης γιανα δούμε αν μπορούμε να προβλέψουμε ποια συσκευασία κολοκύθας θα έχει τις καλύτερες τιμές. Κάποιος που αγοράζει κολοκύθες για ένα εποχιακό παρτέρι κολοκύθας μπορεί να θέλει αυτή την πληροφορίαγιανα βελτιστοποιήσει τις αγορές του σε συσκευασίες κολοκύθας.
Τώρα που έχετε κατανοήσει τα μαθηματικά πίσω από τη γραμμική παλινδρόμηση, ας δημιουργήσουμε ένα μοντέλο παλινδρόμησης γιανα δούμε αν μπορούμε να προβλέψουμε ποιο πακέτο κολοκύθας θα έχει τις καλύτερες τιμές. Κάποιος που αγοράζει κολοκύθες για ένα φθινοπωρινό παρτέρι κολοκύθας θα ήθελε αυτές τις πληροφορίεςγιανα βελτιστοποιήσει τις αγορές του.
## Αναζήτηση συσχέτισης
[](https://youtu.be/uoRq-lW2eQo "Μηχανική Μάθηση για αρχάριους - Αναζήτηση συσχέτισης: Το κλειδί για τη γραμμική παλινδρόμηση")
> 🎥 Κάντε κλικ στην εικόνα παραπάνω γιασύντομη επισκόπηση βίντεο σχετικά με τη συσχέτιση.
> 🎥 Κάντε κλικ στην εικόνα παραπάνω γιαένα σύντομο βίντεο επισκόπησης για τη συσχέτιση.
Από το προηγούμενο μάθημα πιθανότατα έχετε δει ότι η μέση τιμή ανά μήνα μοιάζει κάπως έτσι:
Από το προηγούμενο μάθημα μάλλον έχετε δει ότι η μέση τιμή για διαφορετικούς μήνες μοιάζει ως εξής:
<imgalt="Μέση τιμή ανά μήνα"src="../../../../translated_images/el/barchart.a833ea9194346d76.webp"width="50%"/>
Αυτό υποδηλώνει ότι πρέπει να υπάρχει κάποια συσχέτιση, και μπορούμε να δοκιμάσουμε να εκπαιδεύσουμε γραμμικό μοντέλο παλινδρόμησης γιανα προβλέψουμε τη σχέση μεταξύ `Month` και `Price`, ή μεταξύ `DayOfYear` και `Price`. Ιδού το scatter plot που δείχνει τη δεύτερη σχέση:
Αυτό υποδηλώνει ότι θα πρέπει να υπάρχει κάποια συσχέτιση και μπορούμε να δοκιμάσουμε να εκπαιδεύσουμε ένα γραμμικό μοντέλο παλινδρόμησης γιανα προβλέψουμε τη σχέση μεταξύ `Month` και `Price`, ή μεταξύ `DayOfYear` και `Price`. Να το scatter plot που δείχνει τη δεύτερη σχέση:
<imgalt="Διάγραμμα διασποράς Τιμής vs. Ημέρα του Έτους" src="../../../../translated_images/el/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="Scatter plot τιμής έναντι ημέρας του έτους" src="../../../../translated_images/el/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
Ας δούμε αν υπάρχει συσχέτιση χρησιμοποιώντας τη συνάρτηση `corr`:
Φαίνεται ότι η συσχέτιση είναι αρκετά μικρή, -0.15 με βάση τον `Month` και -0.17 με βάση τον`DayOfMonth`, αλλά μπορεί να υπάρχει μια άλλη σημαντική σχέση. Φαίνεται ότι υπάρχουν διαφορετικές ομάδες τιμών που αντιστοιχούν σε διαφορετικές ποικιλίες κολοκύθας. Για να επιβεβαιώσουμε αυτή την υπόθεση, ας σχεδιάσουμε κάθε κατηγορία κολοκύθας με διαφορετικό χρώμα. Με τη μετάδοση της παραμέτρου`ax` στη συνάρτηση σχεδίασης `scatter`, μπορούμε να σχεδιάσουμε όλα τα σημεία στο ίδιο γράφημα:
Φαίνεται ότι η συσχέτιση είναι αρκετά μικρή, -0.15 ανά `Month` και -0.17 ανά`DayOfMonth`, αλλά μπορεί να υπάρχει μια άλλη σημαντική σχέση. Φαίνεται ότι υπάρχουν διαφορετικά σύνολα τιμών που αντιστοιχούν σε διαφορετικές ποικιλίες κολοκύθας. Για να επιβεβαιώσουμε αυτήν την υπόθεση, ας σχεδιάσουμε κάθε κατηγορία κολοκύθας με διαφορετικό χρώμα. Δίνοντας μια παράμετρο`ax` στη συνάρτηση σχεδίασης `scatter` μπορούμε να σχεδιάσουμε όλα τα σημεία στο ίδιο γράφημα:
```python
ax=None
@ -139,42 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="Διάγραμμα διασποράς Τιμής vs. Ημέρα του Έτους με χρώματα" src="../../../../translated_images/el/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
<imgalt="Scatter plot τιμής έναντι ημέρας του έτους με χρώματα" src="../../../../translated_images/el/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
Η έρευνά μας υποδηλώνει ότι η ποικιλία έχει μεγαλύτερη επίδραση στην συνολική τιμή από την πραγματική ημερομηνία πώλησης. Το διαπιστώνουμε και με ένα ραβδόγραμμα:
Η έρευνά μας υποδηλώνει ότι η ποικιλία έχει μεγαλύτερη επίδραση στην τελική τιμή από την πραγματική ημερομηνία πώλησης. Αυτό φαίνεται και σε ένα γράφημα ράβδων:
<imgalt="Διάγραμμα διασποράς Τιμής vs. Ημέρα του Έτους για pie pumpkins" src="../../../../translated_images/el/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="Scatter plot τιμής έναντι ημέρας του έτους για κολοκύθες πίτας" src="../../../../translated_images/el/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
Αν τώρα υπολογίσουμε τη συσχέτιση μεταξύ `Price` και `DayOfYear` χρησιμοποιώντας τη συνάρτηση `corr`, θα πάρουμε κάτι σαν`-0.27` - που σημαίνει ότι η εκπαίδευση ενός προβλεπτικού μοντέλου έχει νόημα.
Εάν τώρα υπολογίσουμε τη συσχέτιση μεταξύ `Price` και `DayOfYear` χρησιμοποιώντας τη συνάρτηση `corr`, θα πάρουμε κάτι σαν`-0.27` - που σημαίνει ότι η εκπαίδευση ενός προγνωστικού μοντέλου έχει νόημα.
> Προτού εκπαιδεύσουμε ένα μοντέλο γραμμικής παλινδρόμησης, είναι σημαντικό να βεβαιωθούμε ότι τα δεδομένα μας είναι καθαρά. Η γραμμική παλινδρόμηση δεν λειτουργεί καλά με ελλιπείς τιμές, οπότε έχει νόημανα απαλλαγούμε από όλα τα κενά κελιά:
> Πριν εκπαιδεύσετε ένα μοντέλο γραμμικής παλινδρόμησης, είναι σημαντικό να βεβαιωθείτε ότι τα δεδομένα μας είναι καθαρά. Η γραμμική παλινδρόμηση δεν λειτουργεί καλά με ελλιπή δεδομένα, οπότε είναι λογικόνα απαλλαγούμε από όλα τα κενά κελιά:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
Μια άλλη προσέγγιση θα ήταν νασυμπληρώσουμε αυτές τις κενές τιμές με τις μέσες τιμές των αντίστοιχων στηλών.
Μια άλλη προσέγγιση θα ήταν ναγεμίσετε αυτές τις κενές τιμές με μέσες τιμές από την αντίστοιχη στήλη.
## Απλή γραμμική παλινδρόμηση
[](https://youtu.be/e4c_UP2fSjg "Μηχανική Μάθηση για αρχάριους - Γραμμική και Πολυωνυμική Παλινδρόμηση με χρήση Scikit-learn")
[](https://youtu.be/e4c_UP2fSjg "Μηχανική Μάθηση για αρχάριους - Γραμμική και πολυωνυμική παλινδρόμηση με Scikit-learn")
> 🎥 Κάντε κλικ στην εικόνα παραπάνω γιασύντομη επισκόπηση βίντεο σχετικά με γραμμική και πολυωνυμική παλινδρόμηση.
> 🎥 Κάντε κλικ στην εικόνα παραπάνω γιαένα σύντομο βίντεο επισκόπησης της γραμμικής και πολυωνυμικής παλινδρόμησης.
Για να εκπαιδεύσουμε το μοντέλο μας Γραμμικής Παλινδρόμησης, θα χρησιμοποιήσουμε τη βιβλιοθήκη **Scikit-learn**.
Για να εκπαιδεύσουμε το μοντέλο Γραμμικής Παλινδρόμησης, θα χρησιμοποιήσουμε τη βιβλιοθήκη **Scikit-learn**.
```python
from sklearn.linear_model import LinearRegression
@ -182,70 +183,70 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
Ξεκινάμε με τον διαχωρισμό των εισόδων (χαρακτηριστικά) και της αναμενόμενης εξόδου (ετικέτα) σε ξεχωριστά numpy arrays:
Ξεκινάμε διαχωρίζοντας τις εισερχόμενες τιμές (χαρακτηριστικά) και την αναμενόμενη έξοδο (ετικέτα) σε ξεχωριστά numpy arrays:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Σημειώστε ότι έπρεπε ναπραγματοποιήσουμε `reshape` στα εισαγόμενα δεδομένα ώστε το πακέτο Γραμμικής Παλινδρόμησης να τα κατανοήσει σωστά. Η Γραμμική Παλινδρόμηση αναμένει ως είσοδο έναν πίνακα 2 διαστάσεων, όπου κάθε σειρά του πίνακα αντιστοιχεί σε ένα διάνυσμα χαρακτηριστικών εισόδου. Στη δική μας περίπτωση, καθώς έχουμε μόνο μία είσοδο, χρειάζεται ένας πίνακας με διάσταση N×1, όπου N είναι το μέγεθος του συνόλου δεδομένων.
> Σημειώστε ότι έπρεπε νακάνουμε `reshape` στα δεδομένα εισόδου ώστε το πακέτο Γραμμικής Παλινδρόμησης να τα κατανοήσει σωστά. Η Γραμμική Παλινδρόμηση περιμένει έναν 2D array ως είσοδο, όπου κάθε γραμμή του πίνακα αντιστοιχεί σε διάνυσμα χαρακτηριστικών εισόδου. Στην περίπτωσή μας, αφού έχουμε μόνο μία είσοδο, χρειάζεται ένας πίνακας σχήματος N×1, όπου το Ν είναι το μέγεθος του συνόλου δεδομένων.
Έπειτα, πρέπει να χωρίσουμε τα δεδομένα σε σύνολα εκπαίδευσης και δοκιμής, ώστε να μπορέσουμε να επαληθεύσουμε το μοντέλο μας μετά την εκπαίδευση:
Στη συνέχεια, πρέπει να χωρίσουμε τα δεδομένα σε σύνολα εκπαίδευσης και δοκιμής, ώστε να μπορέσουμε να επαληθεύσουμε το μοντέλο μετά την εκπαίδευση:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Τέλος, η εκπαίδευση του πραγματικού μοντέλου Γραμμικής Παλινδρόμησης γίνεται με δύο μόνο γραμμές κώδικα. Ορίζουμε το αντικείμενο της `LinearRegression` και το εφαρμόζουμε στα δεδομένα μας χρησιμοποιώντας τη μέθοδο `fit`:
Τέλος, η εκπαίδευση του πραγματικού μοντέλου Γραμμικής Παλινδρόμησης παίρνει μόνο δύο γραμμές κώδικα. Ορίζουμε το αντικείμενο `LinearRegression`, και το προσαρμόζουμε στα δεδομένα μας χρησιμοποιώντας τη μέθοδο `fit`:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
Το αντικείμενο `LinearRegression` μετά το `fit`-άρισμα περιέχει όλους τους συντελεστές της παλινδρόμησης, τους οποίους μπορούμε να προσεγγίσουμε χρησιμοποιώντας την ιδιότητα `.coef_`. Στη δική μας περίπτωση, υπάρχει μόνο ένας συντελεστής, που θα πρέπει να είναι περίπου `-0.017`. Αυτό σημαίνει ότι οι τιμές φαίνεται ναμειώνονται λίγο με το χρόνο, αλλά όχι πολύ, περίπου 2 λεπτά την ημέρα. Μπορούμε επίσης να προσεγγίσουμε το σημείο τομής της παλινδρόμησης με τον άξονα Y χρησιμοποιώντας το `lin_reg.intercept_` - θα είναι περίπου `21` στη δική μας περίπτωση, που δείχνει την τιμή στην αρχή του έτους.
Το αντικείμενο `LinearRegression` μετά το `fit`-άρισμα περιέχει όλους τους συντελεστές της παλινδρόμησης, στους οποίους μπορούμε να έχουμε πρόσβαση χρησιμοποιώντας την ιδιότητα `.coef_`. Στην περίπτωσή μας, υπάρχει μόνο ένας συντελεστής, ο οποίος θα πρέπει να είναι περίπου `-0.017`. Αυτό σημαίνει ότι οι τιμές φαίνεται ναπέφτουν λίγο με το χρόνο, αλλά όχι πολύ, περίπου 2 σεντ ανά ημέρα. Μπορούμε επίσης να έχουμε πρόσβαση στο σημείο τομής της παλινδρόμησης με τον άξονα Υ χρησιμοποιώντας το `lin_reg.intercept_` - που θα είναι γύρω στο `21` στην περίπτωσή μας, υποδεικνύοντας την τιμή στην αρχή του έτους.
Για να δούμε πόσο ακριβές είναι το μοντέλο μας, μπορούμε να προβλέψουμε τιμές σε ένα σετ δοκιμής και στη συνέχεια να μετρήσουμε πόσο κοντά είναι οι προβλέψεις μας στις αναμενόμενες τιμές. Αυτό μπορεί να γίνει χρησιμοποιώντας το μέσο τετραγωνικό σφάλμα (MSE), που είναι ο μέσος όρος όλων των τετραγωνικών διαφορών μεταξύ της αναμενόμενης και της προβλεπόμενης τιμής.
Για να δούμε πόσο ακριβές είναι το μοντέλο μας, μπορούμε να προβλέψουμε τις τιμές σε ένα σύνολο δεδομένων δοκιμής και στη συνέχεια να μετρήσουμε πόσο κοντά είναι οι προβλέψεις μας στις αναμενόμενες τιμές. Αυτό μπορεί να γίνει χρησιμοποιώντας το μέτρο root mean square error (RMSE), που είναι η τετραγωνική ρίζα του μέσου όρου όλων των τετραγωνισμένων διαφορών μεταξύ αναμενόμενης και προβλεπόμενης τιμής.
Το σφάλμα μας φαίνεται να είναι περίπου 2 μονάδες, που είναι ~17%. Όχι και τόσο καλό. Ένας άλλος δείκτης ποιότητας μοντέλου είναι ο**συντελεστής προσδιορισμού (coefficient of determination)**, που μπορεί να προκύψει έτσι:
Το σφάλμα μας φαίνεται να είναι γύρω στις 2 μονάδες, που είναι ~17%. Όχι και τόσο καλό. Ένας άλλος δείκτης ποιότητας του μοντέλου είναι ο**συντελεστής καθορισμού** (coefficient of determination), ο οποίος μπορεί να ληφθεί ως εξής:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
Αν η τιμή είναι 0, σημαίνει ότι το μοντέλο δεν λαμβάνει υπόψη τα δεδομένα εισόδου και λειτουργεί ως ο*χειρότερος γραμμικός προβλέπων*, που απλώς είναι η μέση τιμή του αποτελέσματος. Η τιμή 1 σημαίνει ότι μπορούμε να προβλέψουμε τέλεια όλες τις αναμενόμενες εξόδους. Στη δική μας περίπτωση, ο συντελεστής είναι περίπου 0.06, που είναι αρκετά χαμηλός.
Αν η τιμή είναι 0, σημαίνει ότι το μοντέλο δεν λαμβάνει υπόψη τα εισερχόμενα δεδομένα και λειτουργεί ως ο*χειρότερος γραμμικός προβλέπων*, δηλαδή απλά η μέση τιμή του αποτελέσματος. Η τιμή 1 σημαίνει ότι μπορούμε να προβλέψουμε τέλεια όλες τις αναμενόμενες εξόδους. Στην περίπτωσή μας, ο συντελεστής είναι περίπου 0.06, που είναι αρκετά χαμηλός.
Μπορούμε επίσης να σχεδιάσουμε τα δεδομένα δοκιμής μαζί με τη γραμμή παλινδρόμησης γιανα δούμε καλύτερα πώς λειτουργεί η παλινδρόμηση στη δική μας περίπτωση:
Μπορούμε επίσης να σχεδιάσουμε τα δεδομένα δοκιμής μαζί με τη γραμμή παλινδρόμησης γιανα δούμε καλύτερα πώς λειτουργεί η παλινδρόμηση στην περίπτωσή μας:
Ένας άλλος τύπος Γραμμικής Παλινδρόμησης είναι η Πολυωνυμική Παλινδρόμηση. Ενώ μερικές φορές υπάρχει γραμμική σχέση μεταξύ των μεταβλητών - όσο μεγαλύτερη είναι η κολοκύθα σε όγκο, τόσο υψηλότερη η τιμή - κάποιες φορές αυτές οι σχέσεις δεν μπορούν να σχεδιαστούν ως επίπεδο ή ευθεία γραμμή.
Ένας άλλος τύπος γραμμικής παλινδρόμησης είναι η Πολυωνυμική Παλινδρόμηση. Ενώ μερικές φορές υπάρχει γραμμική σχέση μεταξύ των μεταβλητών - όσο μεγαλύτερη είναι η κολοκύθα σε όγκο, τόσο υψηλότερη η τιμή - κάποιες φορές αυτές οι σχέσεις δεν μπορούν να σχεδιαστούν ως επίπεδο ή ευθεία γραμμή.
✅ Εδώ είναι [μερικά ακόμα παραδείγματα](https://online.stat.psu.edu/stat501/lesson/9/9.8) δεδομένων που θα μπορούσαν να χρησιμοποιήσουν Πολυωνυμική Παλινδρόμηση
✅ Εδώ είναι [μερικά ακόμα παραδείγματα](https://online.stat.psu.edu/stat501/lesson/9/9.8) δεδομένων που θα μπορούσαν να χρησιμοποιήσουν Πολυωνυμική Παλινδρόμηση.
Κοιτάξτε ξανά τη σχέση μεταξύ Ημερομηνίας και Τιμής. Φαίνεται αυτό το διάγραμμα διασποράς να πρέπει απαραίτητα να αναλυθεί από μια ευθεία γραμμή; Δεν μπορούν οι τιμές να κυμαίνονται; Σε αυτή την περίπτωση, μπορείτε να δοκιμάσετε πολυωνυμική παλινδρόμηση.
Ρίξτε άλλη μια ματιά στη σχέση μεταξύ της Ημερομηνίας και της Τιμής. Αυτό το διασποράς φαίνεται να πρέπει κατ’ ανάγκη να αναλυθεί με μια ευθεία γραμμή; Δεν μπορεί η τιμή να κυμαίνεται; Σε αυτή την περίπτωση, μπορείτε να δοκιμάσετε πολυωνυμική παλινδρόμηση.
✅ Οι πολυώνυμοι είναι μαθηματικές εκφράσεις που μπορεί να αποτελούνται από μία ή περισσότερες μεταβλητές και συντελεστές
✅ Τα πολυώνυμα είναι μαθηματικές εκφράσεις που μπορεί να αποτελούνται από μία ή περισσότερες μεταβλητές και συντελεστές.
Η πολυωνυμική παλινδρόμηση δημιουργεί μια καμπύλη γραμμή γιανα ταιριάξει καλύτερα τα μη γραμμικά δεδομένα. Στη δική μας περίπτωση, αν συμπεριλάβουμε την τετραγωνική μεταβλητή `DayOfYear` στα δεδομένα εισόδου, θα μπορούμε να προσαρμόσουμε τα δεδομένα μας με μια παραβολική καμπύλη, που θα έχει ένα ελάχιστο σε κάποιο σημείο μέσα στο έτος.
Η πολυωνυμική παλινδρόμηση δημιουργεί μια καμπύλη γραμμή γιανα ταιριάξει καλύτερα δεδομένα που δεν είναι γραμμικά. Στην περίπτωσή μας, αν συμπεριλάβουμε μια μεταβλητή `DayOfYear` υψωμένη στο τετράγωνο στα εισερχόμενα δεδομένα, θα μπορούσαμε να προσαρμόσουμε τα δεδομένα μας με μια παραβολική καμπύλη, που θα έχει ένα ελάχιστο σε ένα συγκεκριμένο σημείο μέσα στο έτος.
Το Scikit-learn περιλαμβάνει ένα χρήσιμο [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) γιανα συνδυάσετε διάφορα βήματα της επεξεργασίας δεδομένων μαζί. Ένα **pipeline** είναι μια αλυσίδα **εκτιμητών (estimators)**. Στη δική μας περίπτωση, θα δημιουργήσουμε ένα pipeline που πρώτα προσθέτει πολυωνυμικά χαρακτηριστικά στο μοντέλο μας, και στη συνέχεια εκπαιδεύει την παλινδρόμηση:
Η Scikit-learn περιλαμβάνει ένα χρήσιμο [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) γιανα συνδυάζει διαφορετικά βήματα επεξεργασίας δεδομένων μαζί. Ένα **pipeline** είναι μια αλυσίδα **εκτιμητών (estimators)**. Στην περίπτωσή μας, θα δημιουργήσουμε ένα pipeline που πρώτα προσθέτει πολυωνυμικά χαρακτηριστικά στο μοντέλο μας και στη συνέχεια εκπαιδεύει την παλινδρόμηση:
```python
from sklearn.preprocessing import PolynomialFeatures
Η χρήση του `PolynomialFeatures(2)` σημαίνει ότι θα συμπεριλάβουμε όλους τους πολυώνυμους δεύτερου βαθμού από τα δεδομένα εισόδου. Στη δική μας περίπτωση αυτό θα σημαίνει μόνο`DayOfYear`<sup>2</sup>, αλλά με δύο μεταβλητές εισόδου X και Y, αυτό θα προσθέσει X<sup>2</sup>, XY και Y<sup>2</sup>. Μπορούμε επίσης να χρησιμοποιήσουμε πολυώνυμους υψηλότερου βαθμού αν θέλουμε.
Η χρήση του `PolynomialFeatures(2)` σημαίνει ότι θα συμπεριλάβουμε όλα τα πολυώνυμα δευτέρου βαθμού από τα εισερχόμενα δεδομένα. Στην περίπτωσή μας, θα σημαίνει απλά`DayOfYear`<sup>2</sup>, αλλά δεδομένων δύο εισερχόμενων μεταβλητών X και Y, αυτό θα προσθέσει X<sup>2</sup>, XY και Y<sup>2</sup>. Μπορούμε επίσης να χρησιμοποιήσουμε πολυώνυμα υψηλότερου βαθμού αν το επιθυμούμε.
Τα pipelines μπορούν να χρησιμοποιηθούν με τον ίδιο τρόπο όπως το αρχικό αντικείμενο `LinearRegression`, δηλαδή μπορούμε να`fit` το pipeline και στη συνέχεια να χρησιμοποιήσουμε `predict`γιανα πάρουμε τα αποτελέσματα πρόβλεψης. Εδώ είναι το γράφημα που δείχνει τα δεδομένα δοκιμής και την καμπύλη προσέγγισης:
Τα pipelines μπορούν να χρησιμοποιηθούν με τον ίδιο τρόπο όπως το αρχικό αντικείμενο `LinearRegression`, δηλαδή μπορούμε νακάνουμε `fit`στο pipeline και στη συνέχεια να χρησιμοποιήσουμε `predict`γιανα πάρουμε τα αποτελέσματα της πρόβλεψης. Εδώ είναι το γράφημα που δείχνει τα δεδομένα δοκιμής και την προσεγγιστική καμπύλη:
Χρησιμοποιώντας Πολυωνυμική Παλινδρόμηση, μπορούμε να πετύχουμε λίγο μικρότερο MSE και υψηλότερο συντελεστή προσδιορισμού, αλλά όχι σημαντικά. Πρέπει να λάβουμε υπόψη και άλλα χαρακτηριστικά!
Χρησιμοποιώντας πολυωνυμική παλινδρόμηση, μπορούμε να πετύχουμε ελαφρώς χαμηλότερο MSE και μεγαλύτερο συντελεστή καθορισμού, αλλά όχι σημαντικά. Πρέπει να λάβουμε υπόψη και άλλα χαρακτηριστικά!
> Μπορείτε να δείτε ότι οι ελάχιστες τιμές των κολοκυθών παρατηρούνται κάπου γύρω από το Halloween. Πώς μπορεί να το εξηγήσετε;
> Μπορείτε να δείτε ότι οι ελάχιστες τιμές των κολοκυθών παρατηρούνται κάπου γύρω στο Halloween. Πώς μπορείτε να εξηγήσετε αυτό;
🎃 Συγχαρητήρια, μόλις δημιουργήσατε ένα μοντέλο που μπορεί να βοηθήσει στην πρόβλεψη της τιμής των κολοκυθών για πίτες. Μπορείτε πιθανώςνα επαναλάβετε την ίδια διαδικασία για όλους τους τύπους κολοκύθας, αλλά αυτό θα ήταν κουραστικό. Ας μάθουμε τώρα πώς να λάβουμε υπόψη την ποικιλία κολοκύθας στο μοντέλο μας!
🎃 Συγχαρητήρια, μόλις δημιουργήσατε ένα μοντέλο που μπορεί να βοηθήσει στην πρόβλεψη της τιμής για τις κολοκύθες τύπου πίτας. Πιθανότατα μπορείτενα επαναλάβετε την ίδια διαδικασία για όλους τους τύπους κολοκύθας, αλλά αυτό θα ήταν κουραστικό. Ας μάθουμε τώρα πώς να λαμβάνουμε υπόψη τη ποικιλία κολοκύθας στο μοντέλο μας!
## Κατηγορικά Χαρακτηριστικά
Σε έναν ιδανικό κόσμο, θέλουμε να μπορούμε να προβλέψουμε τιμές για διαφορετικές ποικιλίες κολοκύθας χρησιμοποιώντας το ίδιο μοντέλο. Ωστόσο, η στήλη `Variety`διαφέρει κάπως από στήλες όπως το `Month`, επειδή περιέχει μη αριθμητικές τιμές. Τέτοιες στήλες λέγονται **κατηγορικές**.
Σε έναν ιδανικό κόσμο, θέλουμε να μπορούμε να προβλέπουμε τιμές για διαφορετικές ποικιλίες κολοκύθας χρησιμοποιώντας το ίδιο μοντέλο. Ωστόσο, η στήλη `Variety` είναι κάπως διαφορετική από στήλες όπως το `Month`, επειδή περιέχει μη αριθμητικές τιμές. Τέτοιες στήλες ονομάζονται **κατηγορικές**.
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 Κάντε κλικ στην εικόνα παραπάνω για μια σύντομη βιντεοπαρουσίαση για τη χρήση κατηγορικών χαρακτηριστικών.
> 🎥 Πατήστε την εικόνα παραπάνω για μια σύντομη βίντεο-επισκόπηση της χρήσης κατηγορικών χαρακτηριστικών.
Εδώ μπορείτε να δείτε πώς η μέση τιμή εξαρτάται από την ποικιλία:
<imgalt="Average price by variety" src="../../../../translated_images/el/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
<imgalt="Μέση τιμή ανά ποικιλία" src="../../../../translated_images/el/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
Για να λάβουμε υπόψη την ποικιλία, πρέπει πρώτανα την μετατρέψουμε σε αριθμητική μορφή ή να την **κωδικοποιήσουμε (encode)**. Υπάρχουν αρκετοί τρόποι να το κάνουμε:
Για να λάβουμε υπόψη την ποικιλία, αρχικά πρέπει να την μετατρέψουμε σε αριθμητική μορφή ή να την **κωδικοποιήσουμε**. Υπάρχουν διάφοροι τρόποι να το κάνουμε:
* Η απλή **αριθμητική κωδικοποίηση** θα κατασκευάσει έναν πίνακα με τις διαφορετικές ποικιλίες και στη συνέχεια θα αντικαταστήσει το όνομα της ποικιλίας με ένα δείκτη σε αυτόν τον πίνακα. Αυτό δεν είναι η καλύτερη ιδέα για γραμμική παλινδρόμηση, επειδή αυτή παίρνει την πραγματική αριθμητική τιμή του δείκτη και την προσθέτει στο αποτέλεσμα, πολλαπλασιάζοντάς την με κάποιο συντελεστή. Στη δική μας περίπτωση, η σχέση μεταξύ του αριθμού του δείκτη και της τιμής είναι σαφώς μη γραμμική, ακόμα κιαν βεβαιωθούμε ότι οι δείκτες είναι ταξινομημένοι με κάποιο συγκεκριμένο τρόπο.
* Η**one-hot κωδικοποίηση** θα αντικαταστήσει τη στήλη `Variety` με 4 διαφορετικές στήλες, μία για κάθε ποικιλία. Κάθε στήλη θα περιέχει `1`αν η αντίστοιχη σειρά ανήκει σε εκείνη την ποικιλία, και `0` διαφορετικά. Αυτό σημαίνει ότι θα υπάρχουν τέσσερις συντελεστές στη γραμμική παλινδρόμηση, ένας για κάθε ποικιλία κολοκύθας, υπεύθυνος για την "αρχική τιμή" (ή μάλλον "πρόσθετη τιμή") για εκείνη την συγκεκριμένη ποικιλία.
* Απλή **αριθμητική κωδικοποίηση** θα δημιουργήσει έναν πίνακα διαφορετικών ποικιλιών και στη συνέχεια θα αντικαταστήσει το όνομα της ποικιλίας με έναν δείκτη σε αυτόν τον πίνακα. Αυτό δεν είναι η καλύτερη ιδέα για γραμμική παλινδρόμηση, επειδή η γραμμική παλινδρόμηση λαμβάνει την πραγματική αριθμητική τιμή του δείκτη και την προσθέτει στο αποτέλεσμα, πολλαπλασιάζοντας την με κάποιο συντελεστή. Στην περίπτωσή μας, η σχέση μεταξύ του αριθμού δείκτη και της τιμής είναι σαφώς μη γραμμική, ακόμα καιαν φροντίσουμε οι δείκτες να είναι ταξινομημένοι με κάποιο συγκεκριμένο τρόπο.
* Η**one-hot κωδικοποίηση** θα αντικαταστήσει τη στήλη `Variety` με 4 διαφορετικές στήλες, μία για κάθε ποικιλία. Κάθε στήλη θα περιέχει `1`αν η αντίστοιχη γραμμή ανήκει σε μια συγκεκριμένη ποικιλία, και `0` αλλιώς. Αυτό σημαίνει ότι θα υπάρχουν τέσσερις συντελεστές στη γραμμική παλινδρόμηση, ένας για κάθε ποικιλία κολοκύθας, υπεύθυνος για την "αρχική τιμή" (ή μάλλον την "επιπλέον τιμή") για αυτή τη συγκεκριμένη ποικιλία.
Ο παρακάτω κώδικας δείχνει πώς μπορούμε να κάνουμε one-hot κωδικοποίηση σε μια ποικιλία:
Ο παρακάτω κώδικας δείχνει πώς μπορούμε να κάνουμε one-hot κωδικοποίηση μιας ποικιλίας:
Για να εκπαιδεύσουμε τη γραμμική παλινδρόμηση χρησιμοποιώντας την one-hot κωδικοποιημένη ποικιλία ως είσοδο, απλά πρέπει νααρχικοποιήσουμε σωστά τα δεδομένα `X` και `y`:
Για να εκπαιδεύσουμε τη γραμμική παλινδρόμηση χρησιμοποιώντας one-hot κωδικοποιημένη ποικιλία ως είσοδο, απλά πρέπει ναορίσουμε σωστά τα δεδομένα `X` και `y`:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
Το υπόλοιπο του κώδικα είναι το ίδιο με αυτό που χρησιμοποιήσαμε παραπάνω γιανα εκπαιδεύσουμε τη Γραμμική Παλινδρόμηση. Αν το δοκιμάσετε, θα δείτε ότι το μέσο τετραγωνικό σφάλμα είναι περίπου το ίδιο, αλλά ο συντελεστής προσδιορισμού αυξάνεται πολύ (~77%). Για να πάρουμε ακόμα πιο ακριβείς προβλέψεις, μπορούμε να λάβουμε υπόψη περισσότερα κατηγορικά χαρακτηριστικά, καθώς και αριθμητικά, όπως `Month` ή `DayOfYear`. Για να πάρουμε ένα μεγάλο πίνακα χαρακτηριστικών, μπορούμε να χρησιμοποιήσουμε τη`join`:
Ο υπόλοιπος κώδικας είναι ο ίδιος όπως αυτός που χρησιμοποιήσαμε παραπάνω γιανα εκπαιδεύσουμε τη γραμμική παλινδρόμηση. Αν το δοκιμάσετε, θα δείτε ότι το μέσο τετραγωνικό σφάλμα είναι περίπου το ίδιο, αλλά παίρνουμε πολύ υψηλότερο συντελεστή καθορισμού (~77%). Για να πάρουμε ακόμα πιο ακριβείς προβλέψεις, μπορούμε να λάβουμε υπόψη και περισσότερα κατηγορικά χαρακτηριστικά, καθώς και αριθμητικά χαρακτηριστικά, όπως το `Month` ή το `DayOfYear`. Για να δημιουργήσουμε έναν μεγάλο πίνακα χαρακτηριστικών, μπορούμε να χρησιμοποιήσουμε το`join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -319,11 +320,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
Εδώ λαμβάνουμε επίσης υπόψη τον τύπο`City` και `Package`, που μας δίνει MSE 2.84 (10%) και συντελεστή προσδιορισμού 0.94!
Εδώ λαμβάνουμε υπόψη επίσης το `City` και τον τύπο`Package`, που μας δίνει MSE 2.84 (10%) και συντελεστή καθορισμού 0.94!
## Όλα μαζί
Για ναδημιουργήσουμε το καλύτερο μοντέλο, μπορούμε να χρησιμοποιήσουμε συνδυασμένα δεδομένα (one-hot κωδικοποιημένα κατηγορικά + αριθμητικά) από το παραπάνω παράδειγμα μαζί με την Πολυωνυμική Παλινδρόμηση. Εδώ είναι ο πλήρης κώδικας για τη διευκόλυνσή σας:
Για ναφτιάξουμε το καλύτερο μοντέλο, μπορούμε να χρησιμοποιήσουμε συνδυασμένα (one-hot κωδικοποιημένα κατηγορικά + αριθμητικά) δεδομένα από το παραπάνω παράδειγμα μαζί με την πολυωνυμική παλινδρόμηση. Εδώ είναι ο πλήρης κώδικας για τη διευκόλυνσή σας:
```python
# ρύθμιση δεδομένων εκπαίδευσης
@ -336,14 +337,14 @@ y = new_pumpkins['Price']
# δημιουργία διαχωρισμού εκπαίδευσης-δοκιμής
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# ρύθμιση και εκπαίδευση της αλυσίδας επεξεργασίας
Αυτό θα μας δώσει τον καλύτερο συντελεστή προσδιορισμού σχεδόν 97%, και MSE=2.23 (~8% σφάλμα πρόβλεψης).
Αυτό θα μας δώσει τον καλύτερο συντελεστή καθορισμού κοντά στο 97%, και MSE=2.23 (~8% σφάλμα πρόβλεψης).
| Μοντέλο | MSE | Συντελεστής προσδιορισμού |
|-------|-----|---------------|
| Γραμμική με `DayOfYear` | 2.77 (17.2%) | 0.07 |
| Πολυωνυμική με `DayOfYear` | 2.73 (17.0%) | 0.08 |
| Γραμμική με `Variety` | 5.24 (19.7%) | 0.77 |
| Όλα τα χαρακτηριστικά Γραμμική | 2.84 (10.5%) | 0.94 |
| Όλα τα χαρακτηριστικά Πολυωνυμική | 2.23 (8.25%) | 0.97 |
| Μοντέλο | MSE | Συντελεστής καθορισμού |
|---------|-----|------------------------|
| Γραμμική `DayOfYear` | 2.77 (17.2%) | 0.07 |
| Πολυωνυμική `DayOfYear` | 2.73 (17.0%) | 0.08 |
| Γραμμική `Variety` | 5.24 (19.7%) | 0.77 |
| Γραμμική με όλα τα χαρακτηριστικά | 2.84 (10.5%) | 0.94 |
| Πολυωνυμική με όλα τα χαρακτηριστικά | 2.23 (8.25%) | 0.97 |
🏆 Μπράβο! Δημιουργήσατε τέσσερα μοντέλα παλινδρόμησης σε ένα μάθημα, και βελτιώσατε την ποιότητα του μοντέλου στο 97%. Στην τελική ενότητα για την Παλινδρόμηση θα μάθετε για τη Λογιστική Παλινδρόμηση γιανα προσδιορίσετε κατηγορίες.
🏆 Μπράβο! Δημιουργήσατε τέσσερα μοντέλα παλινδρόμησης σε ένα μάθημα και βελτιώσατε την ποιότητα του μοντέλου στο 97%. Στο τελικό κεφάλαιο για την Παλινδρόμηση θα μάθετε για τη λογιστική παλινδρόμηση για την κατηγοριοποίηση.
---
## 🚀Πρόκληση
Δοκιμάστε διάφορες μεταβλητές σε αυτό το σημειωματάριο γιανα δείτε πώς η συσχέτιση αντιστοιχεί στην ακρίβεια του μοντέλου.
Δοκιμάστε διάφορες μεταβλητές σε αυτό το notebook γιανα δείτε πώς η συσχέτιση σχετίζεται με την ακρίβεια του μοντέλου.
## [Κουίζ μετά το μάθημα](https://ff-quizzes.netlify.app/en/ml/)
## [Τεστ μετά το μάθημα](https://ff-quizzes.netlify.app/en/ml/)
## Επανάληψη & Αυτοεκπαίδευση
## Ανασκόπηση & Αυτο-μελέτη
Σε αυτό το μάθημα μάθαμε για τη Γραμμική Παλινδρόμηση. Υπάρχουν κι άλλοι σημαντικοί τύποι Παλινδρόμησης. Διαβάστε για τις τεχνικές Stepwise, Ridge, Lasso και Elasticnet. Ένα καλό μάθημα γιαμελέτη είναι το [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
Σε αυτό το μάθημα μάθαμε για τη γραμμική παλινδρόμηση. Υπάρχουν και άλλοι σημαντικοί τύποι παλινδρόμησης. Διαβάστε για τις τεχνικές Stepwise, Ridge, Lasso και Elasticnet. Ένα καλό μάθημα γιανα μάθετε περισσότερα είναι το [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Καθήκον
## Εργασία
[Δημιουργήστε ένα Μοντέλο](assignment.md)
[Κατασκευή μοντέλου](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Αποποίηση Ευθύνης**:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ καταβάλλουμε προσπάθεια για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη γλώσσα του θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
**Αποποίηση ευθυνών**:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτοματοποιημένες μεταφράσεις μπορεί να περιέχουν σφάλματα ή ανακρίβειες. Το αρχικό έγγραφο στην μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε καμία ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
Σε αυτό το μάθημα, θα χρησιμοποιήσετε το σύνολο δεδομένων που αποθηκεύσατε από το προηγούμενο μάθημα, γεμάτο ισορροπημένα και καθαρά δεδομένα σχετικά με κουζίνες.
Σε αυτό το μάθημα, θα χρησιμοποιήσετε το σύνολο δεδομένων που αποθηκεύσατε από το προηγούμενο μάθημα, γεμάτο με ισορροπημένα, καθαρά δεδομένα σχετικά με τις κουζίνες.
Θα χρησιμοποιήσετε αυτό το σύνολο δεδομένων με μια ποικιλία ταξινομητών γιανα_προβλέψετε μια εθνική κουζίνα βάσει μιας ομάδας συστατικών_. Κατά τη διάρκεια αυτής της διαδικασίας, θα μάθετε περισσότερα για τους τρόπους με τους οποίους οι αλγόριθμοι μπορούν να αξιοποιηθούν για εργασίες ταξινόμησης.
Θα χρησιμοποιήσετε αυτό το σύνολο δεδομένων με διάφορους ταξινομητές γιανα_προβλέψετε μια συγκεκριμένη εθνική κουζίνα βασισμένη σε μια ομάδα συστατικών_. Καθώς το κάνετε, θα μάθετε περισσότερα για μερικούς από τους τρόπους με τους οποίους οι αλγόριθμοι μπορούν να αξιοποιηθούν για εργασίες ταξινόμησης.
Υποθέτοντας ότι ολοκληρώσατε το [Μάθημα 1](../1-Introduction/README.md), βεβαιωθείτε ότι υπάρχει ένα αρχείο _cleaned_cuisines.csv_ στον βασικό φάκελο `/data`για αυτά τα τέσσερα μαθήματα.
Υποθέτοντας ότι ολοκληρώσατε το [Μάθημα 1](../1-Introduction/README.md), βεβαιωθείτε ότι υπάρχει ένα αρχείο _cleaned_cuisines.csv_ στο ριζικό φάκελο `/data`για αυτά τα τέσσερα μαθήματα.
## Άσκηση - πρόβλεψη εθνικής κουζίνας
@ -40,14 +40,14 @@
import numpy as np
```
1. Χωρίστε τις συντεταγμένες X και y σε δύο dataframes για εκπαίδευση. Το`cuisine` μπορεί να είναι το dataframe ετικετών:
1. Χωρίστε τις συντεταγμένες X και y σε δύο πλαίσια δεδομένων για εκπαίδευση. Το`cuisine` μπορεί να είναι το πλαίσιο δεδομένων των ετικετών:
```python
cuisines_label_df = cuisines_df['cuisine']
cuisines_label_df.head()
```
Θα φαίνεται έτσι:
Θα μοιάζει έτσι:
```output
0 indian
@ -58,14 +58,14 @@
Name: cuisine, dtype: object
```
1. Αφαιρέστε τη στήλη `Unnamed: 0` και τη στήλη `cuisine`, χρησιμοποιώντας τη μέθοδο`drop()`. Αποθηκεύστε τα υπόλοιπα δεδομένα ως χαρακτηριστικά προς εκπαίδευση:
1. Αφαιρέστε τη στήλη `Unnamed: 0` και τη στήλη `cuisine`, χρησιμοποιώντας το `drop()`. Αποθηκεύστε τα υπόλοιπα δεδομένα ως χαρακτηριστικά που μπορούν να εκπαιδευτούν:
Τώρα είστε έτοιμοι να εκπαιδεύσετε το μοντέλο σας!
## Επιλογή ταξινομητή
## Επιλογή του ταξινομητή σας
Τώρα που τα δεδομένα σας είναι καθαρά και έτοιμα για εκπαίδευση, πρέπει να αποφασίσετε ποιον αλγόριθμο θα χρησιμοποιήσετε για τη δουλειά.
Τώρα που τα δεδομένα σας είναι καθαρά και έτοιμα για εκπαίδευση, πρέπει να αποφασίσετε ποιος αλγόριθμος να χρησιμοποιηθεί για την εργασία.
Το Scikit-learn κατατάσσει την ταξινόμηση στην κατηγορία της Εποπτευόμενης Μάθησης, και σε αυτήν την κατηγορία θα βρείτε πολλούς τρόπους γιαταξινόμηση. [Η ποικιλία](https://scikit-learn.org/stable/supervised_learning.html) είναι αρκετά εντυπωσιακή με την πρώτη ματιά. Οι παρακάτω μέθοδοι περιλαμβάνουν τεχνικές ταξινόμησης:
Το Scikit-learn ομαδοποιεί την ταξινόμηση κάτω από την Επιβλεπόμενη Μάθηση, και σε αυτή την κατηγορία θα βρείτε πολλούς τρόπους ταξινόμησης. [Η ποικιλία](https://scikit-learn.org/stable/supervised_learning.html) είναι αρκετά μπερδεμένη με την πρώτη ματιά. Οι ακόλουθες μέθοδοι περιλαμβάνουν τεχνικές ταξινόμησης:
- Γραμμικά Μοντέλα
- Μηχανές Υποστήριξης Διανυσμάτων
- Support Vector Machines
- Στοχαστική Κατάβαση Κλίσης
- Πλησιέστεροι Γείτονες
- Γκαουσιανές Διαδικασίες
- Δέντρα Αποφάσεων
- Μέθοδοι Συνόλου (ταξινομητής ψηφοφορίας)
- Αλγόριθμοι πολυκατηγορίας και πολλαπλών εξόδων (ταξινόμηση πολυκατηγορίας και πολυετικετών, ταξινόμηση πολυκατηγορίας-πολλαπλών εξόδων)
- Κοντινότεροι Γείτονες
- Gaussian Processes
- Δέντρα Απόφασης
- Μέθοδοι συνόλου (voting Classifier)
- Αλγόριθμοι πολυκατηγορίας και πολλαπλής εξόδου (ταξινόμηση πολυκατηγορίας και πολυετικετών, πολυκατηγορία-πολλαπλή έξοδος)
> Μπορείτε επίσης να χρησιμοποιήσετε [νευρωνικά δίκτυα για ταξινόμηση δεδομένων](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification), αλλά αυτό είναι εκτός του πεδίου αυτού του μαθήματος.
### Ποιον ταξινομητή να επιλέξετε;
Λοιπόν, ποιον ταξινομητή πρέπει να επιλέξετε; Συχνά, η δοκιμή πολλών και η αναζήτηση ενός καλού αποτελέσματος είναι ένας τρόπος να δοκιμάσετε. Το Scikit-learn προσφέρει μια [σύγκριση δίπλα-δίπλα](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) σε ένα δημιουργημένο σύνολο δεδομένων, συγκρίνοντας τους KNeighbors, SVC με δύο τρόπους, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB και QuadraticDiscriminationAnalysis, δείχνοντας τα αποτελέσματα οπτικοποιημένα:
Λοιπόν, ποιον ταξινομητή πρέπει να επιλέξετε; Συχνά, το να δοκιμάσετε αρκετούς και να ψάξετε για ένα καλό αποτέλεσμα είναι ένας τρόπος δοκιμής. Το Scikit-learn προσφέρει μια [παράλληλη σύγκριση](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) σε δημιουργημένο σύνολο δεδομένων, συγκρίνοντας τους KNeighbors, SVC με δύο τρόπους, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB και QuadraticDiscrinationAnalysis, δείχνοντας τα αποτελέσματα οπτικοποιημένα:
> Διαγράμματα που δημιουργήθηκαν στην τεκμηρίωση του Scikit-learn
> Το AutoML λύνει αυτό το πρόβλημα εύκολα, εκτελώντας αυτές τις συγκρίσεις στο cloud, επιτρέποντάς σας να επιλέξετε τον καλύτερο αλγόριθμο για τα δεδομένα σας. Δοκιμάστε το [εδώ](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
> Το AutoML λύνει αυτό το πρόβλημα επιδέξια εκτελώντας αυτές τις συγκρίσεις στο cloud, επιτρέποντάς σας να επιλέξετε τον καλύτερο αλγόριθμο για τα δεδομένα σας. Δοκιμάστε το [εδώ](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### Μια καλύτερη προσέγγιση
Ένας καλύτερος τρόπος από το να μαντεύετε τυχαία είναι να ακολουθήσετε τις ιδέες που περιγράφονται σε αυτό το [ML Cheat Sheet](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott). Εδώ, ανακαλύπτουμε ότι,για το πρόβλημα πολυκατηγορίας μας, έχουμε κάποιες επιλογές:
Μια καλύτερη μέθοδος από το άγριο μάντεμα είναι να ακολουθήσετε τις ιδέες αυτού του ληξιαρίου [ML Cheat sheet](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) που μπορείτε να κατεβάσετε. Εδώ, ανακαλύπτουμε ότι για το πρόβλημα πολυκατηγορίας που έχουμε, υπάρχουν μερικές επιλογές:

> Ένα τμήμα του Algorithm Cheat Sheet της Microsoft, που περιγράφει επιλογές ταξινόμησης πολυκατηγορίας

> Μια ενότητα του Algorithm Cheat Sheet της Microsoft, που περιγράφει τις επιλογές πολυκατηγορικής ταξινόμησης
✅ Κατεβάστε αυτό το cheat sheet, εκτυπώστε το και κρεμάστε το στον τοίχο σας!
✅ Κατεβάστε αυτό το cheat sheet, τυπώστε το και κρεμάστε το στον τοίχο σας!
### Λογική
### Λογική σκέψη
Ας δούμε αν μπορούμε να σκεφτούμε διαφορετικές προσεγγίσεις δεδομένων των περιορισμών που έχουμε:
Ας δούμε αν μπορούμε να σκεφτούμε διαφορετικές προσεγγίσεις με βάση τους περιορισμούς που έχουμε:
- **Τα νευρωνικά δίκτυα είναι πολύ βαριά**. Δεδομένου του καθαρού αλλά ελάχιστου συνόλου δεδομένων μας και του γεγονότος ότι εκτελούμε την εκπαίδευση τοπικά μέσω notebooks, τα νευρωνικά δίκτυα είναι υπερβολικά βαριά για αυτήν την εργασία.
- **Δεν χρησιμοποιούμε ταξινομητή δύο κατηγοριών**. Δεν χρησιμοποιούμε ταξινομητή δύο κατηγοριών, οπότε αυτό αποκλείει το one-vs-all.
- **Το δέντρο αποφάσεων ή η λογιστική παλινδρόμηση θα μπορούσαν να λειτουργήσουν**. Ένα δέντρο αποφάσεων θα μπορούσε να λειτουργήσει, ή η λογιστική παλινδρόμηση για δεδομένα πολυκατηγορίας.
- **Τα πολυκατηγορικά ενισχυμένα δέντρα αποφάσεων λύνουν διαφορετικό πρόβλημα**. Το πολυκατηγορικό ενισχυμένο δέντρο αποφάσεων είναι πιο κατάλληλο για μη παραμετρικές εργασίες, π.χ. εργασίες σχεδιασμένες για δημιουργία κατατάξεων, οπότε δεν είναι χρήσιμο για εμάς.
- **Τα νευρωνικά δίκτυα είναι πολύ βαριά**. Δεδομένου του καθαρού, αλλά μικρού συνόλου δεδομένων, και του γεγονότος ότι εκτελούμε την εκπαίδευση τοπικά μέσω notebooks, τα νευρωνικά δίκτυα είναι πολύ βαριά για αυτή την εργασία.
- **Δεν χρησιμοποιούμε ταξινομητή δύο κατηγοριών**. Δεν χρησιμοποιούμε ταξινομητή δύο κατηγοριών, οπότε αποκλείεται το one-vs-all.
- **Ένα δέντρο απόφασης ή λογιστική παλινδρόμηση μπορεί να δουλέψει**. Ένα δέντρο απόφασης μπορεί να λειτουργήσει, ή λογιστική παλινδρόμηση για δεδομένα πολυκατηγορίας.
- **Τα πολυκατηγορικά ενισχυμένα δέντρα απόφασης επιλύουν διαφορετικό πρόβλημα**. Το πολυκατηγορικό ενισχυμένο δέντρο απόφασης είναι πιο κατάλληλο για μη παραμετρικά καθήκοντα, π.χ. καθήκοντα που σχεδιάζονται για κατασκευή κατατάξεων, οπότε δεν είναι χρήσιμο για εμάς.
### Χρήση του Scikit-learn
### Χρήση Scikit-learn
Θα χρησιμοποιήσουμε το Scikit-learn γιανα αναλύσουμε τα δεδομένα μας. Ωστόσο, υπάρχουν πολλοί τρόποι να χρησιμοποιήσετε τη λογιστική παλινδρόμηση στο Scikit-learn. Ρίξτε μια ματιά στις [παραμέτρους που μπορείτενα περάσετε](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Θα χρησιμοποιήσουμε το Scikit-learn γιανα αναλύσουμε τα δεδομένα μας. Ωστόσο, υπάρχουν πολλοί τρόποι να χρησιμοποιήσετε τη λογιστική παλινδρόμηση στο Scikit-learn. Ρίξτε μια ματιά στις [παραμέτρους που πρέπεινα περάσετε](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Ουσιαστικά υπάρχουν δύο σημαντικές παράμετροι - `multi_class` και `solver` - που πρέπει να καθορίσουμε όταν ζητάμε από το Scikit-learn να εκτελέσει λογιστική παλινδρόμηση. Η τιμή του `multi_class` εφαρμόζει μια συγκεκριμένη συμπεριφορά. Η τιμή του solver καθορίζει ποιον αλγόριθμο θα χρησιμοποιήσει. Δεν μπορούν όλοι οι solvers να συνδυαστούν με όλες τις τιμές του`multi_class`.
Ουσιαστικά υπάρχουν δύο σημαντικές παράμετροι - `multi_class` και `solver` - που πρέπει να καθορίσουμε όταν ζητάμε από το Scikit-learn να εκτελέσει λογιστική παλινδρόμηση. Η τιμή `multi_class` επιβάλλει μια συγκεκριμένη συμπεριφορά. Η τιμή του `solver` είναι ποιος αλγόριθμος θα χρησιμοποιηθεί. Δεν μπορούν όλοι οι solvers να συνδυαστούν με όλες τις τιμές `multi_class`.
Σύμφωνα με την τεκμηρίωση, στην περίπτωση πολυκατηγορίας, ο αλγόριθμος εκπαίδευσης:
- **Χρησιμοποιεί το σχήμα one-vs-rest (OvR)**, αν η επιλογή `multi_class`έχει οριστεί σε `ovr`
- **Χρησιμοποιεί την απώλεια cross-entropy**, αν η επιλογή `multi_class`έχει οριστεί σε `multinomial`. (Επί του παρόντος η επιλογή `multinomial` υποστηρίζεται μόνο από τους solvers‘lbfgs’, ‘sag’, ‘saga’ και ‘newton-cg’.)"
- **Χρησιμοποιεί το σχήμα one-vs-rest (OvR)**, αν η επιλογή `multi_class`είναι ορισμένη σε `ovr`
- **Χρησιμοποιεί την απώλεια cross-entropy**, αν η επιλογή `multi_class`είναι ορισμένη σε `multinomial`. (Προς το παρόν η επιλογή `multinomial` υποστηρίζεται μόνο από τους λύτες‘lbfgs’, ‘sag’, ‘saga’ και ‘newton-cg’)."
> 🎓 Το 'σχήμα' εδώ μπορεί να είναι είτε 'ovr' (one-vs-rest) είτε 'multinomial'. Δεδομένου ότι η λογιστική παλινδρόμηση έχει σχεδιαστεί γιανα υποστηρίζει δυαδική ταξινόμηση, αυτά τα σχήματα της επιτρέπουν να χειρίζεται καλύτερα εργασίες ταξινόμησης πολυκατηγορίας. [πηγή](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 Το 'σχήμα' μπορεί να είναι είτε 'ovr' (one-vs-rest) είτε 'multinomial'. Επειδή η λογιστική παλινδρόμηση είναι σχεδιασμένη κυρίως για δυαδική ταξινόμηση, αυτά τα σχήματα της επιτρέπουν να χειριστεί καλύτερα τα καθήκοντα πολυκατηγορικής ταξινόμησης. [πηγή](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 Ο 'solver' ορίζεται ως "ο αλγόριθμος που θα χρησιμοποιηθεί στο πρόβλημα βελτιστοποίησης". [πηγή](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
> 🎓 Ο 'λύτης' ορίζεται ως "ο αλγόριθμος που χρησιμοποιείται στο πρόβλημα βελτιστοποίησης". [πηγή](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Το Scikit-learn προσφέρει αυτόν τον πίνακα γιανα εξηγήσει πώς οιsolvers χειρίζονται διαφορετικές προκλήσεις που παρουσιάζονται από διαφορετικές δομές δεδομένων:
Το Scikit-learn προσφέρει αυτόν τον πίνακα γιανα εξηγήσει πώς οιλύτες χειρίζονται διαφορετικές προκλήσεις που παρουσιάζονται από διαφορετικούς τύπους δομών δεδομένων:
Δεδομένου ότι χρησιμοποιείτε την περίπτωση πολυκατηγορίας, πρέπει να επιλέξετε ποιο _σχήμα_ θα χρησιμοποιήσετε και ποιον_solver_ θα ορίσετε. Χρησιμοποιήστε τη LogisticRegression με ρύθμιση multiclass και τον solver **liblinear**για εκπαίδευση.
Επειδή χρησιμοποιείτε την περίπτωση πολυκατηγορίας, πρέπει να επιλέξετε ποιο _σχήμα_ θα χρησιμοποιήσετε και ποιο_λύτη_ θα ορίσετε. Χρησιμοποιήστε το LogisticRegression με ρύθμιση πολυκατηγορίας και τον **liblinear** λύτηγια εκπαίδευση.
1. Δημιουργήστε μια λογιστική παλινδρόμηση με το multi_class ορισμένο σε `ovr` και τον solver ορισμένο σε `liblinear`:
1. Δημιουργήστε ένα logistic regression με `multi_class` ορισμένο σε `ovr` και τον λύτη σε `liblinear`:
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
✅ Δοκιμάστε έναν διαφορετικό solver όπως το `lbfgs`, που συχνά ορίζεται ως προεπιλογή
> Σημείωση, χρησιμοποιήστε τη συνάρτηση Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) γιανα ισοπεδώσετε τα δεδομένα σας όταν χρειάζεται.
Η ακρίβεια είναι καλή, πάνω από **80%**!
✅ Δοκιμάστε έναν διαφορετικό λύτη όπως `lbfgs`, που συχνά ορίζεται ως προεπιλογή
1. Μπορείτε να δείτε αυτό το μοντέλο σε δράση δοκιμάζοντας μία γραμμή δεδομένων (#50):
> Σημείωση, χρησιμοποιήστε τη συνάρτηση [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) της Pandas γιανα ισιώσετε τα δεδομένα σας όταν χρειάζεται.
Η ακρίβεια είναι καλή και πάνω από **80%**!
1. Μπορείτε να δείτε αυτό το μοντέλο σε δράση δοκιμάζοντας μια γραμμή δεδομένων (#50):
Σε αυτό το μάθημα, χρησιμοποιήσατε τα καθαρισμένα δεδομένα σαςγιανα δημιουργήσετε ένα μοντέλο μηχανικής μάθησης που μπορεί να προβλέψει μια εθνική κουζίνα βάσει μιας σειράς συστατικών. Αφιερώστε λίγο χρόνο γιανα διαβάσετε τις πολλές επιλογές που παρέχει το Scikit-learn για την ταξινόμηση δεδομένων. Εξετάστε πιο βαθιά την έννοια του 'solver' γιανα κατανοήσετε τι συμβαίνει πίσω από τις σκηνές.
Σε αυτό το μάθημα, χρησιμοποιήσατε τα καθαρισμένα σας δεδομένα γιανα δημιουργήσετε ένα μοντέλο μηχανικής μάθησης που μπορεί να προβλέψει μια εθνική κουζίνα βάσει μιας σειράς συστατικών. Αφιερώστε λίγο χρόνο γιανα διαβάσετε τις πολλές επιλογές που παρέχει το Scikit-learn για την ταξινόμηση δεδομένων. Εμβαθύνετε στην έννοια του 'solver' γιανα κατανοήσετε τι συμβαίνει πίσω από τις σκηνές.
## [Κουίζ μετά το μάθημα](https://ff-quizzes.netlify.app/en/ml/)
Εξετάστε λίγο περισσότερο τα μαθηματικά πίσω από την λογιστική παλινδρόμηση σε [αυτό το μάθημα](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
## Εργασία
Εμβαθύνετε λίγο περισσότερο στα μαθηματικά πίσω από την λογιστική παλινδρόμηση σε [αυτό το μάθημα](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
## Ανάθεση
[Μελετήστε τους solvers](assignment.md)
[Μελετήστε τους λύτες](assignment.md)
---
**Αποποίηση ευθύνης**:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Αποποίηση Ευθυνών**:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ επιδιώκουμε την ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το αρχικό έγγραφο στην μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για οποιεσδήποτε παρεξηγήσεις ή λανθασμένες ερμηνείες προκύψουν από τη χρήση αυτής της μετάφρασης.
> Αυτό το αποθετήριο περιλαμβάνει πάνω από 50 μεταφράσεις γλωσσών, που αυξάνουν σημαντικά το μέγεθος λήψης. Για να κάνετε κλώνο χωρίς μεταφράσεις, χρησιμοποιήστε το sparse checkout:
> Αυτό το αποθετήριο περιλαμβάνει πάνω από 50 μεταφράσεις γλωσσών που αυξάνουν σημαντικά το μέγεθος λήψης. Για κλωνοποίηση χωρίς μεταφράσεις, χρησιμοποιήστε sparse checkout:
>
> **Bash / macOS / Linux:**
> ```bash
@ -33,62 +33,63 @@
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> Αυτό σας δίνει όλα όσα χρειάζεστε γιανα ολοκληρώσετε το μάθημα με πολύ πιο γρήγορη λήψη.
> Αυτό σας παρέχει όλα όσα χρειάζεστε γιανα ολοκληρώσετε το μάθημα με πολύ πιο γρήγορη λήψη.
Διαρκεί μια σειρά Discord "Μάθετε με AI" που τρέχει, μάθετε περισσότερα και συμμετάσχετε στο [Learn with AI Series](https://aka.ms/learnwithai/discord) από 18 - 30 Σεπτεμβρίου 2025. Θα λάβετε συμβουλές και κόλπα για τη χρήση του GitHub Copilot για Data Science.
Έχουμε μια σειρά στο Discord γιανα μάθετε με AI σε εξέλιξη, μάθετε περισσότερα και ενταχθείτε μαζί μας στο [Learn with AI Series](https://aka.ms/learnwithai/discord) από 18 έως 30 Σεπτεμβρίου, 2025. Θα λάβετε συμβουλές και κόλπα για τη χρήση του GitHub Copilot για Data Science.

# Μηχανική Μάθηση για Αρχάριους - Ένα Πρόγραμμα Σπουδών
# Μηχανική Μάθηση για Αρχάριους - Μία Εκπαιδευτική Ακολουθία
> 🌍 Ταξιδέψτε γύρω από τον κόσμο εξερευνώντας τη Μηχανική Μάθηση μέσα από τους πολιτισμούς του κόσμου 🌍
> 🌍 Ταξιδέψτε γύρω από τον κόσμο καθώς εξερευνούμε τη Μηχανική Μάθηση μέσω των παγκόσμιων πολιτισμών 🌍
Οι Cloud Advocates της Microsoft χαίρονται να προσφέρουν ένα πρόγραμμα 12 εβδομάδων, 26 μαθημάτων, που αφορά τη **Μηχανική Μάθηση**. Σε αυτό το πρόγραμμα, θα μάθετε για εκείνο που μερικές φορές αποκαλείται **κλασική μηχανική μάθηση**, χρησιμοποιώντας κυρίως τη βιβλιοθήκη Scikit-learn και αποφεύγοντας το deep learning, που καλύπτεται στο [Πρόγραμμα Σπουδών Τεχνητής Νοημοσύνηςγια Αρχάριους](https://aka.ms/ai4beginners). Συνδυάστε αυτά τα μαθήματα με το [Πρόγραμμα Σπουδών «Επιστήμη Δεδομένων για Αρχάριους»](https://aka.ms/ds4beginners), επίσης!
Οι Cloud Advocates της Microsoft χαίρονται να προσφέρουν μια 12-εβδομάδων, 26-μαθημάτων εκπαιδευτική ακολουθία που αφορά τη **Μηχανική Μάθηση**. Σε αυτήν την ακολουθία, θα μάθετε για αυτό που συχνά ονομάζεται **κλασική μηχανική μάθηση**, χρησιμοποιώντας κυρίως τη βιβλιοθήκη Scikit-learn και αποφεύγοντας το deep learning, το οποίο καλύπτεται στην [εκπαιδευτική ακολουθία AIγια Αρχάριους](https://aka.ms/ai4beginners). Συνδυάστε αυτά τα μαθήματα με την ακολουθία μας ['Data Science για Αρχάριους'](https://aka.ms/ds4beginners), επίσης!
Ταξιδέψτε μαζί μας γύρω από τον κόσμο καθώς εφαρμόζουμε αυτές τις κλασικές τεχνικές σε δεδομένα από πολλές περιοχές του κόσμου. Κάθε μάθημα περιλαμβάνει κουίζ πριν και μετά το μάθημα, γραπτές οδηγίες για την ολοκλήρωση του μαθήματος, λύση, ανάθεση εργασίας και άλλα. Η παιδαγωγική μας με βάση έργα σας επιτρέπει να μαθαίνετε ενώ κατασκευάζετε, ένας αποδεδειγμένος τρόπος ώστε οι νέες δεξιότητες να μένουν.
Ταξιδέψτε μαζί μας στον κόσμο καθώς εφαρμόζουμε αυτές τις κλασικές τεχνικές σε δεδομένα από πολλές περιοχές του κόσμου. Κάθε μάθημα περιλαμβάνει κουίζ πριν και μετά το μάθημα, γραπτές οδηγίες για την ολοκλήρωση του μαθήματος, λύση, ανάθεση και πολλά άλλα. Η παιδαγωγική μας που βασίζεται σε έργα σας επιτρέπει να μαθαίνετε ενώ χτίζετε, ένας αποδεδειγμένος τρόπος γιανα "κολλήσουν" οι νέες δεξιότητες.
**✍️ Θερμές ευχαριστίες στους δημιουργούς μας** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu και Amy Boyd
**✍️ Θερμές ευχαριστίες στους συγγραφείς μας** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu και Amy Boyd
**🎨 Ευχαριστίες επίσης στους εικονογράφους μας** Tomomi Imura, Dasani Madipalli, και Jen Looper
**🎨 Ευχαριστίες επίσης στους εικονογράφους μας** Tomomi Imura, Dasani Madipalli και Jen Looper
**🙏 Ειδικές ευχαριστίες 🙏 στους Microsoft Student Ambassador δημιουργούς, αξιολογητές, και συντελεστές περιεχομένου**, ιδιαίτερα στους Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, και Snigdha Agarwal
**🙏 Ειδικές ευχαριστίες 🙏 στους Microsoft Student Ambassador συγγραφείς, αξιολογητές και συνεισφέροντες περιεχομένου**, κυρίως Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, και Snigdha Agarwal
**🤩 Επιπλέον ευγνωμοσύνη στους Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, και Vidushi Gupta για τα μαθήματα R!**
**🤩 Επιπλέον ευγνωμοσύνη στους Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi και Vidushi Gupta για τα μαθήματα R!**
# Ξεκινώντας
Ακολουθήστε τα βήματα:
1. **Κλωνοποιήστε το Αποθετήριο**: Κάντε κλικ στο κουμπί "Fork" στην πάνω δεξιά γωνία αυτής της σελίδας.
2. **Κλωνοποιήστε το Αποθετήριο**: `git clone https://github.com/microsoft/ML-For-Beginners.git`
1. **Κάντε Fork το Αποθετήριο**: Πατήστε το κουμπί "Fork" στην πάνω δεξιά γωνία αυτής της σελίδας.
2. **Κλωνοποιήστε το Αποθετήριο**: `git clone https://github.com/microsoft/ML-For-Beginners.git`
> [Βρείτε όλα τα πρόσθετα υλικά για αυτό το μάθημα στη συλλογή Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> [βρείτε όλα τα πρόσθετα υλικά για αυτό το μάθημα στη συλλογή μας Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **Χρειάζεστε βοήθεια;** Ελέγξτε τον [Οδηγό Αντιμετώπισης Προβλημάτων](TROUBLESHOOTING.md) για λύσεις σε κοινά ζητήματα εγκατάστασης, ρύθμισης και εκτέλεσης μαθημάτων.
> 🔧 **Χρειάζεστε βοήθεια;** Ελέγξτε τον [Οδηγό Αντιμετώπισης Προβλημάτων](TROUBLESHOOTING.md) για λύσεις σε κοινά προβλήματα εγκατάστασης, ρύθμισης και εκτέλεσης μαθημάτων.
**[Φοιτητές](https://aka.ms/student-page)**, γιανα χρησιμοποιήσετε αυτό το πρόγραμμα σπουδών, κάντε fork ολόκληρο το repo στον δικό σας λογαριασμό GitHub και ολοκληρώστε τις ασκήσεις μόνοι σας ή με ομάδα:
**[Φοιτητές](https://aka.ms/student-page)**, γιανα χρησιμοποιήσετε αυτήν την εκπαιδευτική ακολουθία, κάντε fork ολόκληρο το αποθετήριο στον δικό σας λογαριασμό GitHub και ολοκληρώστε τις ασκήσεις μόνοι σας ή με μια ομάδα:
- Ξεκινήστε με ένα κουίζ προ-διάλεξης.
- Διαβάστε τη διάλεξη και ολοκληρώστε τις δραστηριότητες, σταματώντας και αναλογιζόμενοι σε κάθε έλεγχο γνώσης.
- Προσπαθήστε να δημιουργήσετε τα έργα κατανοώντας τα μαθήματα παράνα τρέχετε τον κώδικα λύσης· όμως αυτός ο κώδικας είναι διαθέσιμος στους φακέλους `/solution` σε κάθε μάθημα προσανατολισμένο σε έργο.
- Διαβάστε τη διάλεξη και ολοκληρώστε τις δραστηριότητες, κάνοντας παύσεις και σκεπτόμενοι σε κάθε έλεγχο γνώσης.
- Προσπαθήστε να δημιουργήσετε τα έργα κατανοώντας τα μαθήματα αντίνα τρέχετε τον κώδικα λύσης· ο κώδικας αυτός είναι διαθέσιμος στους φακέλους `/solution` σε κάθε μάθημα προσανατολισμένο σε έργο.
- Κάντε το κουίζ μετά τη διάλεξη.
- Ολοκληρώστε την πρόκληση.
- Ολοκληρώστε την ανάθεση εργασίας.
- Μετά την ολοκλήρωση ενός συνόλου μαθημάτων, επισκεφθείτε το [Πίνακα Συζητήσεων](https://github.com/microsoft/ML-For-Beginners/discussions) και "μάθετε φωναχτά" συμπληρώνοντας τον κατάλληλο πίνακα αξιολόγησης PAT. Ένα 'PAT' είναι εργαλείο αξιολόγησης προόδου που συμπληρώνετε γιανα προάγετε τη μάθησή σας. Μπορείτε επίσης να αντιδράσετε σε άλλα PAT ώστε να μάθουμε μαζί.
- Ολοκληρώστε την ανάθεση.
- Μετά την ολοκλήρωση ενός συνόλου μαθημάτων, επισκεφτείτε το [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) και "μάθετε δυνατά" συμπληρώνοντας το αντίστοιχο PAT rubric. Το 'PAT' είναι ένα Εργαλείο Αξιολόγησης Προόδου, που συμπληρώνετε γιανα προωθήσετε τη μάθησή σας. Μπορείτε επίσης να αντιδράσετε σε άλλα PATs γιανα μαθαίνουμε μαζί.
> Για περαιτέρω μελέτη, προτείνουμε να ακολουθήσετε αυτά τα [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) μαθήματα και διαδρομές μάθησης.
> Για περαιτέρω μελέτη, προτείνουμε να ακολουθήσετε αυτές τις [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) ενότητες και διαδρομές μάθησης.
**Καθηγητές**, έχουμε [περιλάβει ορισμένες προτάσεις](for-teachers.md) για το πώς να χρησιμοποιήσετε αυτό το πρόγραμμα σπουδών.
**Καθηγητές**, έχουμε [συμπεριλάβει κάποιες προτάσεις](for-teachers.md) για το πώς να χρησιμοποιήσετε αυτήν την εκπαιδευτική ακολουθία.
---
## Βίντεο επίδειξης
## Βίντεο περιηγήσεις
Μερικά από τα μαθήματα διατίθενται ως σύντομα βίντεο. Μπορείτε να τα βρείτε όλα μέσα στα μαθήματα ή στη [λίστα αναπαραγωγής ML for Beginners στο κανάλι Microsoft Developer στο YouTube](https://aka.ms/ml-beginners-videos), κάνοντας κλικ στην εικόνα παρακάτω.
Μερικά από τα μαθήματα είναι διαθέσιμα ως σύντομα βίντεο. Μπορείτε να τα βρείτε όλα ενσωματωμένα στα μαθήματα, ή στη [playlist ML for Beginners στο κανάλι Microsoft Developer YouTube](https://aka.ms/ml-beginners-videos) κάνοντας κλικ στην εικόνα παρακάτω.
[](https://aka.ms/ml-beginners-videos)
> 🎥 Κάντε κλικ στην εικόνα παραπάνω για βίντεο σχετικά με το έργο και όσους το δημιούργησαν!
> 🎥 Κάντε κλικ στην παραπάνω εικόνα για ένα βίντεο σχετικά με το έργο και τους ανθρώπους που το δημιούργησαν!
---
## Παιδαγωγική
Έχουμε επιλέξει δύο παιδαγωγικές αρχές κατά την κατασκευή αυτού του προγράμματος σπουδών: να είναι πρακτικό και **βασισμένο σε έργα** και να περιλαμβάνει **συχνά κουίζ**. Επιπλέον, αυτό το πρόγραμμα έχει ένα κοινό **θέμα** γιανα δώσει συνοχή.
Έχουμε επιλέξει δύο παιδαγωγικές αρχές κατά την κατασκευή αυτής της ακολουθίας: να είναι πρακτική **βασισμένη σε έργα** και να περιλαμβάνει **συχνά κουίζ**. Επιπλέον, αυτή η ακολουθία έχει ένα κοινό **θέμα** γιανα της δώσει συνοχή.
Με την εξασφάλιση ότι το περιεχόμενο ευθυγραμμίζεται με έργα, η διαδικασία γίνεται πιο ελκυστική για τους μαθητές και η διατήρηση των εννοιών ενισχύεται. Επιπλέον, ένα κουίζ χαμηλού ρίσκου πριν το μάθημα θέτει την πρόθεση του μαθητή στο να μάθει ένα θέμα, ενώ ένα δεύτερο κουίζ μετά το μάθημα εξασφαλίζει περαιτέρω διατήρηση. Αυτό το πρόγραμμα σχεδιάστηκε γιανα είναι ευέλικτο και διασκεδαστικό και μπορεί να ολοκληρωθεί ολόκληρο ή μερικώς. Τα έργα ξεκινούν μικρά και γίνονται ολοένα πιο πολύπλοκα μέχρι το τέλος του κύκλου των 12 εβδομάδων. Το πρόγραμμα περιλαμβάνει επίσης επίμετρο για πραγματικές εφαρμογές της Μηχανικής Μάθησης, που μπορούν να χρησιμοποιηθούν ως επιπλέον βαθμολογία ή ως βάση για συζήτηση.
Εξασφαλίζοντας ότι το περιεχόμενο ευθυγραμμίζεται με έργα, η διαδικασία γίνεται πιο ελκυστική για τους μαθητές και η διατήρηση των εννοιών θα ενισχυθεί. Επιπλέον, ένα κουίζ χαμηλού ρίσκου πριν από το μάθημα θέτει την πρόθεση του μαθητή προς τη μάθηση ενός θέματος, ενώ ένα δεύτερο κουίζ μετά το μάθημα εξασφαλίζει περαιτέρω διατήρηση. Αυτή η ακολουθία σχεδιάστηκε γιανα είναι ευέλικτη και διασκεδαστική και μπορεί να παρακολουθηθεί ολόκληρη ή εν μέρει. Τα έργα ξεκινούν μικρά και γίνονται όλο και πιο σύνθετα μέχρι το τέλος του 12-εβδομάδων κύκλου. Αυτή η ακολουθία περιλαμβάνει επίσης ένα επίμετρο σχετικά με πραγματικές εφαρμογές της ML, που μπορεί να χρησιμοποιηθεί ως επιπλέον μόρια ή ως βάση για συζήτηση.
> Βρείτε τους [Κανόνες Συμπεριφοράς](CODE_OF_CONDUCT.md), [Οδηγίες Συμμετοχής](CONTRIBUTING.md), [Μεταφράσεις](..), και [Οδηγό Αντιμετώπισης Προβλημάτων](TROUBLESHOOTING.md). Καλωσορίζουμε τα εποικοδομητικά σχόλιά σας!
> Βρείτε τους [Κανόνες Συμπεριφοράς](CODE_OF_CONDUCT.md), [Συμβολή](CONTRIBUTING.md), [Μεταφράσεις](..) και [Οδηγό Αντιμετώπισης Προβλημάτων](TROUBLESHOOTING.md). Καλωσορίζουμε τις εποικοδομητικές σας προτάσεις!
> **Μια σημείωση σχετικά με τις γλώσσες**: Αυτά τα μαθήματα γράφονται κυρίως σε Python, αλλά πολλά είναι επίσης διαθέσιμα σε R. Για να ολοκληρώσετε ένα μάθημα R, πηγαίνετε στον φάκελο `/solution` και αναζητήστε μαθήματα R. Περιλαμβάνουν την επέκταση .rmd που αντιπροσωπεύει ένα αρχείο **R Markdown**, το οποίο μπορεί να οριστεί απλά ως ενσωμάτωση `κομματιών κώδικα` (μίας R ή άλλων γλωσσών) και μιας `επικεφαλίδας YAML` (που καθοδηγεί το πώς να μορφοποιηθούν τα αποτελέσματα όπως PDF) σε ένα `έγγραφο Markdown`. Ως εκ τούτου, χρησιμεύει ως προτύπο πλαισίου συγγραφής για την επιστήμη δεδομένων, αφού σας επιτρέπει να συνδυάσετε τον κώδικά σας, το αποτέλεσμα του, και τις σκέψεις σας, επιτρέποντάς σας να τα καταγράψετε σε Markdown. Επιπλέον, τα έγγραφα R Markdown μπορούν να απεικονιστούν σε μορφές όπως PDF, HTML ή Word.
> **Μια σημείωση σχετικά με τα κουίζ**: Όλα τα κουίζ περιέχονται στον [φάκελο Quiz App](../../quiz-app), για συνολικά 52 κουίζ με τρεις ερωτήσεις το καθένα. Σύνδεσμοι προς αυτά υπάρχουν μέσα στα μαθήματα, αλλά η εφαρμογή κουίζ μπορεί να τρέξει τοπικά· ακολουθήστε τις οδηγίες στον φάκελο `quiz-app`για τοπική φιλοξενία ή ανάπτυξη στο Azure.
| Αριθμός Μαθήματος | Θέμα | Ομαδοποίηση Μαθήματος | Στόχοι Μάθησης | Συνδεδεμένο Μάθημα | Συγγραφέας |
| 01 | Εισαγωγή στη μηχανική μάθηση | [Introduction](1-Introduction/README.md) | Μάθετε τις βασικές έννοιες πίσω από τη μηχανική μάθηση | [Μάθημα](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Η ιστορία της μηχανικής μάθησης | [Introduction](1-Introduction/README.md) | Μάθετε την ιστορία που στηρίζει αυτόν τον τομέα | [Μάθημα](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | Δικαιοσύνη και μηχανική μάθηση | [Introduction](1-Introduction/README.md) | Ποια είναι τα σημαντικά φιλοσοφικά ζητήματα σχετικά με τη δικαιοσύνη που θα πρέπει να λάβουν υπόψη οι μαθητές κατά την κατασκευή και εφαρμογή μοντέλων ΜΜ; | [Μάθημα](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Τεχνικές για μηχανική μάθηση | [Introduction](1-Introduction/README.md) | Ποιες τεχνικές χρησιμοποιούν οι ερευνητές ΜΜγιατην κατασκευή μοντέλων ΜΜ; | [Μάθημα](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| 05 | Εισαγωγή στην παλινδρόμηση | [Regression](2-Regression/README.md) | Ξεκινήστε με Python και Scikit-learn για μοντέλα παλινδρόμησης | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Τιμές κολοκύθας Βόρειας Αμερικής 🎃 | [Regression](2-Regression/README.md) | Οπτικοποιήστε και καθαρίστε δεδομένα προετοιμασίαςγιαΜΜ| [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Τιμές κολοκύθας Βόρειας Αμερικής 🎃 | [Regression](2-Regression/README.md) | Δημιουργήστε γραμμικά και πολυωνυμικά μοντέλα παλινδρόμησης | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau |
| 09 | Μια Web Εφαρμογή 🔌 | [Web App](3-Web-App/README.md) | Δημιουργήστε μια ιστοσελίδα για χρήση του εκπαιδευμένου μοντέλου σας | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Εισαγωγή στην ταξινόμηση | [Classification](4-Classification/README.md) | Καθαρίστε, προετοιμάστε και οπτικοποιήστε τα δεδομένα σας· εισαγωγή στην ταξινόμηση | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau |
| 11 | Νόστιμες Ασιατικές και Ινδικές κουζίνες 🍜 | [Classification](4-Classification/README.md) | Εισαγωγή στους ταξινομητές | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen and Cassie • Eric Wanjau |
| 12 | Νόστιμες Ασιατικές και Ινδικές κουζίνες 🍜 | [Classification](4-Classification/README.md) | Περισσότεροι ταξινομητές | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen and Cassie • Eric Wanjau |
| 13 | Νόστιμες Ασιατικές και Ινδικές κουζίνες 🍜 | [Classification](4-Classification/README.md) | Δημιουργήστε μια προτείνουσα web εφαρμογή με το μοντέλο σας | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Εισαγωγή στην ομαδοποίηση | [Clustering](5-Clustering/README.md) | Καθαρίστε, προετοιμάστε και οπτικοποιήστε τα δεδομένα σας· Εισαγωγή στην ομαδοποίηση | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Εξερεύνηση των μουσικών γούστων της Νιγηρίας 🎧 | [Clustering](5-Clustering/README.md) | Εξερευνήστε τη μέθοδο ομαδοποίησης K-Means | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Εισαγωγή στην επεξεργασία φυσικής γλώσσας ☕️ | [Natural language processing](6-NLP/README.md) | Μάθετε τα βασικά για την Επεξεργασία φυσικής γλώσσας δημιουργώντας ένα απλό bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Συνήθεις εργασίες NLP ☕️ | [Natural language processing](6-NLP/README.md) | Εμβαθύνετε τις γνώσεις σας πάνω σε NLP κατανοώντας τις συνηθισμένες εργασίες που απαιτούνται κατά τη διαχείριση γλωσσικών δομών | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Μετάφραση και ανάλυση συναισθήματος ♥️ | [Natural language processing](6-NLP/README.md) | Μετάφραση και ανάλυση συναισθήματος με τη Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Ρομαντικά ξενοδοχεία της Ευρώπης ♥️ | [Natural language processing](6-NLP/README.md) | Ανάλυση συναισθήματος με κριτικές ξενοδοχείων 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Ρομαντικά ξενοδοχεία της Ευρώπης ♥️ | [Natural language processing](6-NLP/README.md) | Ανάλυση συναισθήματος με κριτικές ξενοδοχείων 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Εισαγωγή στην πρόβλεψη χρονοσειρών | [Time series](7-TimeSeries/README.md) | Εισαγωγή στην πρόβλεψη χρονοσειρών | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 23 | ⚡️ Παγκόσμια Κατανάλωση Ενέργειας ⚡️ - πρόβλεψη χρονοσειρών με SVR | [Time series](7-TimeSeries/README.md) | Πρόβλεψη χρονοσειρών με Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Εισαγωγή στην ενισχυτική μάθηση | [Reinforcement learning](8-Reinforcement/README.md) | Εισαγωγή στην ενισχυτική μάθηση με Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Βοηθήστε τον Πέτρο να αποφύγει τον λύκο! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Ενισχυτική μάθηση Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Επίμετρο | Πραγματικά σενάρια και εφαρμογές ΜΜ | [ML in the Wild](9-Real-World/README.md) | Ενδιαφέρουσες και αποκαλυπτικές πραγματικές εφαρμογές της κλασικής μηχανικής μάθησης | [Μάθημα](9-Real-World/1-Applications/README.md) | Ομάδα |
| Επίμετρο | Εντοπισμός σφαλμάτων μοντέλων ΜΜ με τον πίνακα ελέγχου RAI | [ML in the Wild](9-Real-World/README.md) | Εντοπισμός σφαλμάτων μοντέλων μηχανικής μάθησης χρησιμοποιώντας τα στοιχεία του πίνακα ελέγχου Responsible AI | [Μάθημα](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [βρείτε όλους τους επιπλέον πόρουςγια αυτό το μάθημα στη συλλογή μας Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> **Μια σημείωση για τις γλώσσες**: Αυτά τα μαθήματα είναι κυρίως γραμμένα σε Python, αλλά πολλά είναι επίσης διαθέσιμα σε R. Για να ολοκληρώσετε ένα μάθημα σε R, πηγαίνετε στον φάκελο `/solution` και αναζητήστε μαθήματα R. Περιλαμβάνουν κατάληξη .rmd που αντιπροσωπεύει ένα **R Markdown** αρχείο το οποίο μπορεί να οριστεί απλά ως ενσωμάτωση `κομματιών κώδικα` (σε R ή άλλες γλώσσες) και μια `κεφαλίδα YAML` (που καθοδηγεί πώς να μορφοποιηθούν τα αποτελέσματα όπως PDF) σε ένα `έγγραφο Markdown`. Ως τέτοιο, χρησιμεύει ως ένα επιδεικτικό πλαίσιο συγγραφής για την επιστήμη δεδομένων καθώς σας επιτρέπει να συνδυάσετε τον κώδικα σας, τα αποτελέσματά του και τις σκέψεις σας επιτρέποντάς σας να τα καταγράψετε σε Markdown. Επιπλέον, τα έγγραφα R Markdown μπορούν να αποδοθούν σε μορφές εξόδου όπως PDF, HTML ή Word.
> **Μια σημείωση για τα κουίζ**: Όλα τα κουίζ περιέχονται στο φάκελο [Quiz App folder](../../quiz-app), με συνολικά 52 κουίζ, το καθένα με τρεις ερωτήσεις. Συνδέονται από τα μαθήματα αλλά η εφαρμογή κουίζ μπορεί να εκτελεστεί τοπικά· ακολουθήστε τις οδηγίες στο φάκελο `quiz-app`γιανα το φιλοξενήσετε τοπικά ή να το αναπτύξετε στο Azure.
| Αριθμός Μαθήματος | Θέμα | Ομαδοποίηση Μαθήματος | Στόχοι Μάθησης | Συνδεδεμένο Μάθημα | Συγγραφέας |
| 01 | Εισαγωγή στη μηχανική μάθηση | [Εισαγωγή](1-Introduction/README.md) | Μάθετε τις βασικές έννοιες πίσω από τη μηχανική μάθηση | [Μάθημα](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Η ιστορία της μηχανικής μάθησης | [Εισαγωγή](1-Introduction/README.md) | Μάθετε την ιστορία που υποστηρίζει αυτόν τον τομέα | [Μάθημα](1-Introduction/2-history-of-ML/README.md) | Jen και Amy |
| 03 | Δικαιοσύνη και μηχανική μάθηση | [Εισαγωγή](1-Introduction/README.md) | Ποια είναι τα σημαντικά φιλοσοφικά ζητήματα γύρω από τη δικαιοσύνη που πρέπει να λάβουν υπόψη οι μαθητές όταν δημιουργούν και εφαρμόζουν μοντέλα ΜΜ; | [Μάθημα](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Τεχνικές μηχανικής μάθησης | [Εισαγωγή](1-Introduction/README.md) | Ποιες τεχνικές χρησιμοποιούν οι ερευνητές ΜΜγιανα δημιουργήσουν μοντέλα ΜΜ; | [Μάθημα](1-Introduction/4-techniques-of-ML/README.md) | Chris και Jen |
| 05 | Εισαγωγή στην παλινδρόμηση | [Παλινδρόμηση](2-Regression/README.md) | Ξεκινήστε με Python και Scikit-learn για μοντέλα παλινδρόμησης | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Τιμές κολοκύθας Βόρειας Αμερικής 🎃 | [Παλινδρόμηση](2-Regression/README.md) | Οπτικοποιήστε και καθαρίστε δεδομένα σε προετοιμασία γιαΜΜ | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Τιμές κολοκύθας Βόρειας Αμερικής 🎃 | [Παλινδρόμηση](2-Regression/README.md) | Δημιουργήστε γραμμικά και πολυωνυμικά μοντέλα παλινδρόμησης | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen και Dmitry • Eric Wanjau |
| 08 | Τιμές κολοκύθας Βόρειας Αμερικής 🎃 | [Παλινδρόμηση](2-Regression/README.md) | Δημιουργήστε ένα μοντέλο λογιστικής παλινδρόμησης | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Μια Web Εφαρμογή 🔌 | [Web App](3-Web-App/README.md) | Δημιουργήστε μια εφαρμογή web γιανα χρησιμοποιήσετε το εκπαιδευμένο μοντέλο σας | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Εισαγωγή στην ταξινόμηση | [Ταξινόμηση](4-Classification/README.md) | Καθαρισμός, προετοιμασία και οπτικοποίηση των δεδομένων σας· εισαγωγή στην ταξινόμηση | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen και Cassie • Eric Wanjau |
| 11 | Νόστιμες ασιατικές και ινδικές κουζίνες 🍜 | [Ταξινόμηση](4-Classification/README.md) | Εισαγωγή στους ταξινομητές | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen και Cassie • Eric Wanjau |
| 12 | Νόστιμες ασιατικές και ινδικές κουζίνες 🍜 | [Ταξινόμηση](4-Classification/README.md) | Περισσότεροι ταξινομητές | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen και Cassie • Eric Wanjau |
| 13 | Νόστιμες ασιατικές και ινδικές κουζίνες 🍜 | [Ταξινόμηση](4-Classification/README.md) | Δημιουργήστε μια εφαρμογή σύστασης web χρησιμοποιώντας το μοντέλο σας | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Εισαγωγή στις ομαδοποιήσεις | [Ομαδοποίηση](5-Clustering/README.md) | Καθαρισμός, προετοιμασία και οπτικοποίηση δεδομένων· Εισαγωγή στις ομαδοποιήσεις | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Εξερεύνηση Νιγηριανών Μουσικών Γούστων 🎧 | [Ομαδοποίηση](5-Clustering/README.md) | Εξερευνήστε τη μέθοδο ομαδοποίησης K-Means | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Εισαγωγή στην επεξεργασία φυσικής γλώσσας ☕️ | [Επεξεργασία φυσικής γλώσσας](6-NLP/README.md) | Μάθετε τα βασικά της ΕΦΓ δημιουργώντας ένα απλό bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Κοινές εργασίες NLP ☕️ | [Επεξεργασία φυσικής γλώσσας](6-NLP/README.md) | Εμβαθύνετε τις γνώσεις σας στην ΕΦΓ κατανοώντας κοινές εργασίες που απαιτούνται όταν χειρίζεστε δομές γλώσσας | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Μετάφραση και ανάλυση συναισθήματος ♥️ | [Επεξεργασία φυσικής γλώσσας](6-NLP/README.md) | Μετάφραση και ανάλυση συναισθήματος με την Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md)| Stephen |
| 19 | Ρομαντικά ξενοδοχεία της Ευρώπης ♥️ | [Επεξεργασία φυσικής γλώσσας](6-NLP/README.md) | Ανάλυση συναισθήματος με κριτικές ξενοδοχείων 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md)| Stephen |
| 20 | Ρομαντικά ξενοδοχεία της Ευρώπης ♥️ | [Επεξεργασία φυσικής γλώσσας](6-NLP/README.md) | Ανάλυση συναισθήματος με κριτικές ξενοδοχείων 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md)| Stephen |
| 22 | ⚡️ Παγκόσμια χρήση ενέργειας ⚡️ - πρόβλεψη χρονικών σειρών με ARIMA | [Χρονικές σειρές](7-TimeSeries/README.md) | Πρόβλεψη χρονικών σειρών με ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md)| Francesca |
| 23 | ⚡️ Παγκόσμια χρήση ενέργειας ⚡️ - πρόβλεψη χρονικών σειρών με SVR | [Χρονικές σειρές](7-TimeSeries/README.md) | Πρόβλεψη χρονικών σειρών με Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md)| Anirban |
| 24 | Εισαγωγή στην ενισχυτική μάθηση | [Ενισχυτική μάθηση](8-Reinforcement/README.md) | Εισαγωγή στην ενισχυτική μάθηση με Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Βοηθήστε τον Peter να αποφύγει τον λύκο! 🐺 | [Ενισχυτική μάθηση](8-Reinforcement/README.md) | Gym ενισχυτικής μάθησης | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Υστερόγραφο | Πραγματικά σενάρια και εφαρμογές ΜΜ | [ΜΜ στην πράξη](9-Real-World/README.md) | Ενδιαφέρουσες και αποκαλυπτικές πραγματικές εφαρμογές της κλασικής ΜΜ | [Μάθημα](9-Real-World/1-Applications/README.md) | Ομάδα |
| Υστερόγραφο | Αποσφαλμάτωση μοντέλων ΜΜ με το RAI dashboard | [ΜΜ στην πράξη](9-Real-World/README.md) | Αποσφαλμάτωση μοντέλων Μηχανικής Μάθησης με συστατικά πίνακα ελέγχου Responsible AI | [Μάθημα](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [βρείτε όλα τα επιπρόσθετα υλικάγια αυτό το μάθημα στη συλλογή μας του Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## Πρόσβαση εκτός σύνδεσης
Μπορείτε να τρέξετε αυτή την τεκμηρίωση εκτός σύνδεσης χρησιμοποιώντας το [Docsify](https://docsify.js.org/#/). Κάντε fork αυτό το αποθετήριο, [εγκαταστήστε το Docsify](https://docsify.js.org/#/quickstart) στον τοπικό σας υπολογιστή και στη συνέχεια στον ριζικό φάκελο αυτού του αποθετηρίου πληκτρολογήστε `docsify serve`. Ο ιστότοπος θα φιλοξενηθεί στη θύρα 3000 στο localhost σας: `localhost:3000`.
Μπορείτε να τρέξετε αυτή τη τεκμηρίωση εκτός σύνδεσης χρησιμοποιώντας το [Docsify](https://docsify.js.org/#/). Κάντε fork σε αυτό το αποθετήριο, [εγκαταστήστε το Docsify](https://docsify.js.org/#/quickstart) στον τοπικό σας υπολογιστή, και στη συνέχεια στον ριζικό φάκελο αυτού του αποθετηρίου, πληκτρολογήστε `docsify serve`. Η ιστοσελίδα θα σερβιριστεί στη θύρα 3000 στο localhost σας: `localhost:3000`.
## PDFs
## PDF
Βρείτε ένα pdf του αναλυτικού προγράμματος με συνδέσμους [εδώ](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
Βρείτε ένα pdf του προγράμματος σπουδών με συνδέσμους [εδώ](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
## 🎒 Άλλα μαθήματα
## 🎒 Άλλα Μαθήματα
Η ομάδα μας παράγει και άλλα μαθήματα! Ρίξτε μια ματιά:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agents
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Σειρά για Γενετική Τεχνητή Νοημοσύνη
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
---
### Βασική Μάθηση
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Σειρά Copilot
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
Αν κολλήσετε ή έχετε ερωτήσεις σχετικά με την κατασκευή εφαρμογών Τεχνητής Νοημοσύνης. Ενταχθείτε με άλλους μαθητές και έμπειρους προγραμματιστές σε συζητήσεις για το MCP. Είναι μια υποστηρικτική κοινότητα όπου οι ερωτήσεις είναι ευπρόσδεκτες και η γνώση μοιράζεται ελεύθερα.
Εάν κολλήσετε ή έχετε ερωτήσεις ενώ μαθαίνετε Μηχανική Μάθηση ή δημιουργείτε εφαρμογές Τεχνητής Νοημοσύνης, μην ανησυχείτε — η βοήθεια είναι διαθέσιμη.
Εάν συναντήσετε σφάλματα, λάθη ή έχετε προτάσεις για βελτιώσεις, μπορείτε επίσης να ανοίξετε ένα **Issue** σε αυτό το αποθετήριο γιανα αναφέρετε το πρόβλημα.
Για σχόλια προϊόντος ή γιανα αναζητήσετε υπάρχουσες αναρτήσεις της κοινότητας, επισκεφθείτε το Φόρουμ Προγραμματιστών:
- Επανεξετάστε τα σημειωματάρια μετά από κάθε μάθημα για καλύτερη κατανόηση.
- Εξασκηθείτε στην υλοποίηση αλγορίθμων μόνοι σας.
- Εξερευνήστε πραγματικά σύνολα δεδομένων χρησιμοποιώντας τις έννοιες που μάθατε.
- Εξερευνήστε πραγματικά σύνολα δεδομένων χρησιμοποιώντας τις εννοιές που μάθατε.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Αποποίηση ευθυνών**:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας υπηρεσία μετάφρασης με τεχνητή νοημοσύνη [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ καταβάλλουμε προσπάθειεςγια ακρίβεια, παρακαλούμε ναγνωρίζετε ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη γλώσσα του πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική μετάφραση από ανθρώπους. Δεν είμαστε υπεύθυνοι για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ προσπαθούμεγια ακρίβεια, παρακαλούμε να είστε ενήμεροι ότι οι αυτόματες μεταφράσεις μπορεί να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η επίσημη πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν ευθυνόμαστε για τυχόν παρανοήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
> ### [Den här lektionen finns tillgänglig i R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
> ### [Denna lektion finns tillgänglig på R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Introduktion
Hittills har du utforskat vad regression är med hjälp av exempeldata från pumpaprisdatasetet som vi kommer använda i hela denna lektion. Du har också visualiserat det med Matplotlib.
Hittills har du utforskat vad regression är med exempeldata hämtad från pumpapriser datasetet som vi kommer att använda genom hela denna lektion. Du har också visualiserat det med hjälp av Matplotlib.
Nu är du redo att fördjupa dig i regression för ML. Medan visualisering hjälper dig att förstå data, kommer den verkliga styrkan i maskininlärning från _tränade modeller_. Modeller tränas på historisk data för att automatiskt fånga databeroenden, och de låter dig förutsäga utfall för nya data som modellen inte har sett tidigare.
Nu är du redo att gå djupare in i regression för maskininlärning. Medan visualisering låter dig göra data begripligt, kommer den verkliga styrkan i maskininlärning från _träning av modeller_. Modeller tränas på historisk data för att automatiskt fånga databeroenden, och de låter dig förutsäga resultat för ny data som modellen inte har sett tidigare.
I denna lektion kommer du att lära dig mer om två typer av regression: _grundläggande linjär regression_ och _polynomregression_, tillsammans med en del av matematiken bakom dessa tekniker. Dessa modeller kommer att låta oss förutsäga pumpapris beroende på olika indata.
I denna lektion kommer du att lära dig mer om två typer av regression: _grundläggande linjär regression_ och _polynomregression_, tillsammans med något av matematiken bakom dessa tekniker. Dessa modeller kommer att göra det möjligt för oss att förutsäga pumpapris beroende på olika indata.
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 Klicka på bilden ovan för en kort videoöversikt av linjär regression.
> 🎥 Klicka på bilden ovan för en kort videoöversikt över linjär regression.
> Genom hela detta utbildningsprogram antar vi minimala kunskaper i matematik och strävar efter att göra det tillgängligt för studenter från andra områden, så håll utkik efter anteckningar, 🧮 markeringar, diagram och andra inlärningsverktyg för att underlätta förståelsen.
> Genom hela detta läroplan antar vi minimala matematiska förkunskaper, och strävar efter att göra det tillgängligt för studenter från andra fält, så håll utkik efter anteckningar, 🧮 utropstecken, diagram och andra lärverktyg som hjälper till vid förståelsen.
### Förkunskaper
Du bör nu vara bekant med strukturen i pumpadata som vi undersöker. Den finns förladdad och förberedd rengjord i denna lektions _notebook.ipynb_-fil.
I filen visas pumpapriset per bushel i en ny data frame. Se till att du kan köra dessa notebooks i kärnor i Visual Studio Code.
Du bör nu vara bekant med strukturen på pumpadatan som vi undersöker. Du hittar den förladdad och förrensad i detta lektions _notebook.ipynb_-fil. I filen visas pumpapriset per skålpund i en ny dataframe. Se till att du kan köra dessa notebooks i kernels i Visual Studio Code.
### Förberedelse
Som en påminnelse laddar du in denna data för att kunna ställa frågor om den.
Som en påminnelse, laddar du in denna data för att kunna ställa frågor om den.
- När är bästa tidpunkten att köpa pumpor?
- Vilket pris kan jag förvänta mig för ett fall med miniatyrpumpor?
- Bör jag köpa dem i halva bushel-korgar eller i 1 1/9 bushel-lådor?
Låt oss fortsätta att gräva i denna data.
- När är den bästa tiden att köpa pumpor?
- Vilket pris kan jag förvänta mig för en låda miniature-pumpor?
- Ska jag köpa dem i halva skålpundskorgar eller per 1 1/9 skålpundslåda?
Låt oss fortsätta gräva i denna data.
I föregående lektion skapade du en Pandas data frame och fyllde den med en del av den ursprungliga datasetet, standardiserande priser per bushel. Genom att göra detta kunde du dock bara samla in ungefär 400 datapunkter och endast för höstmånaderna.
I föregående lektion skapade du en Pandas dataframe och fyllde den med en del av originaldatasetet, och standardiserade prisningen efter skålpund. Genom att göra det kunde du dock bara samla ungefär 400 datapunkter och bara för höstmånaderna.
Ta en titt på datan som vi förladdat i denna lektions tillhörande notebook. Data är förladdad och en initial spridningsdiagram är ritad för att visa månadsdata. Kanske kan vi få lite mer insikt om datan genom att rengöra den mer.
Titta på datan som vi förladdat i denna lektions tillhörande notebook. Datan är förladdad och en initial scatterplot plottad för att visa månadens data. Kanske kan vi få lite mer detaljer om datans natur genom att rengöra den mer.
## En linjär regressionslinje
Som du lärde dig i Lektion 1 är målet med ett linjärt regressionsövning att kunna rita en linje för att:
Som du lärde dig i Lektion 1 är målet med en linjär regression att kunna rita en linje som:
- **Visa variabelrelationer**. Visa relationen mellan variabler
- **Göra förutsägelser**. Göra noggranna förutsägelser om var en ny datapunkt skulle hamna i relation till den linjen.
- **Visar variabelrelationer**. Visar sambandet mellan variablerna
- **Gör förutsägelser**. Gör korrekta förutsägelser om var en ny datapunkt skulle falla i förhållande till den linjen.
Det är vanligt med **minsta kvadratmetoden (Least-Squares Regression)** att rita denna typ av linje. Begreppet "Least-Squares" hänvisar till processen att minimera den totala felet i vår modell. För varje datapunkt mäter vi det vertikala avståndet (kallat residual) mellan den verkliga punkten och vår regressionslinje.
Det är typiskt för **Minsta Kvadrat-regression** att rita denna typ av linje. Begreppet "Minsta Kvadrat" syftar på processen att minimera den totala felet i vår modell. För varje datapunkt mäter vi det vertikala avståndet (kallat residual) mellan den faktiska punkten och vår regressionslinje.
Vi kvadrerar dessa avstånd av två huvudsakliga anledningar:
Vi kvadrerar dessa avstånd av två huvudsakliga skäl:
1. **Storlek över riktning:** Vi vill behandla ett fel på -5 lika som ett fel på +5. Kvadreringen gör alla värden positiva.
1. **Storlek över riktning:** Vi vill behandla ett fel på -5 lika som ett fel på +5. Kvadrering gör alla värden positiva.
2. **Straffa avvikare:** Kvadrering ger högre vikt åt större fel, vilket tvingar linjen att hålla sig närmare punkter som ligger långt bort.
2. **Straffa avvikare:** Kvadrering ger större vikt åt större fel och tvingar linjen att stanna närmare punkter som ligger långt ifrån.
Vi adderar sedan alla dessa kvadrerade värden tillsammans. Vårt mål är att hitta den specifika linjen där denna summa är som minst (det minsta möjliga värdet)—därav namnet "Least-Squares".
Vi summerar sedan alla dessa kvadrerade värden. Vårt mål är att hitta den specifika linje där denna slutliga summa är som minst (det minsta möjliga värdet) – därav namnet "Minsta Kvadrat".
> **🧮 Visa mig matematiken**
>
> Denna linje, kallad _bästa anpassningslinje_ kan uttryckas med [en ekvation](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> **🧮 Visa mig matematiken**
>
> Denna linje, kallad _bästa passande linje_ kan uttryckas med [en ekvation](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
> `X` är den 'förklarande variabeln'. `Y` är den 'beroende variabeln'. Linjens lutning är `b` och `a` är y-axelns intercept, vilket avser värdet på `Y` när `X = 0`.
>
>
>
> Först beräkna lutningen `b`. Informationsgrafik av [Jen Looper](https://twitter.com/jenlooper)
>
> Med andra ord, och med hänvisning till vår pumpadata ursprungliga fråga: "förutsäg priset på en pumpa per bushel efter månad", skulle `X` avse priset och `Y` avse försäljningsmånaden.
>
>
>
> Beräkna värdet på Y. Om du betalar runt 4 dollar måste det vara april! Informationsgrafik av [Jen Looper](https://twitter.com/jenlooper)
>
> Den matematik som beräknar linjen måste visa lutningen på linjen, som också beror på interceptet, eller var `Y` befinner sig när `X = 0`.
>
> Du kan observera beräkningsmetoden för dessa värden på [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) webbplats. Besök också [denna Minsta Kvadrat-kalkylator](https://www.mathsisfun.com/data/least-squares-calculator.html) för att se hur värdenas storlek påverkar linjen.
## Korrelationskoefficient
Ett till begrepp att förstå är **korrelationskoefficienten** mellan givna X- och Y-variabler. Med hjälp av ett spridningsdiagram kan du snabbt visualisera denna koefficient. Ett diagram med datapunkter utspridda i en prydlig linje har hög korrelation medan ett diagram med datapunkter utspridda överallt mellan X och Y har låg korrelation.
En bra linjär regressionsmodell är en som har hög (närmare 1 än 0) korrelationskoefficient med metoden Minsta Kvadrat Regression med regressionslinjen.
✅ Kör notebooken som hör till denna lektion och titta på spridningsdiagrammet Månad till Pris. Verkar datan som kopplar Månad till Pris för pumpaförsäljning ha hög eller låg korrelation enligt din visuella tolkning av spridningsdiagrammet? Ändras det om du använder en mer detaljerad mätning istället för `Month`, t.ex. *dag på året* (d.v.s. antal dagar sedan årets början)?
I koden nedan antar vi att vi har rengjort data och fått en dataframe kallad `new_pumpkins`, liknande följande:
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
>
> `X` är den 'förklarande variabeln'. `Y` är den 'beroende variabeln'. Lutningen av linjen är `b` och `a` är y-axelns skärningspunkt, som avser värdet på `Y` när `X = 0`.
>
>
>
> Först, räkna ut lutningen `b`. Informationsgrafik av [Jen Looper](https://twitter.com/jenlooper)
>
> Med andra ord, och med hänvisning till vår pumpadata ursprungliga fråga: "förutsäg priset på en pumpa per skålpund per månad", skulle `X` hänvisa till priset och `Y` till försäljningsmånaden.
> Beräkna värdet på Y. Om du betalar runt 4 dollar måste det vara april! Informationsgrafik av [Jen Looper](https://twitter.com/jenlooper)
>
> Matematiken som räknar fram linjen måste visa lutningen på linjen, som också beror på interceptet, eller var `Y` är placerad när `X = 0`.
>
> Du kan observera metoden för beräkning av dessa värden på webbplatsen [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Besök även [denna Least-squares-kalkylator](https://www.mathsisfun.com/data/least-squares-calculator.html) för att se hur siffrornas värden påverkar linjen.
## Korrelation
En term till som är viktig att förstå är **korrelationskoefficienten** mellan givna X- och Y-variabler. Med hjälp av en scatterplot kan du snabbt visualisera denna koefficient. En plot med datapunkter utspridda i en tydlig linje har hög korrelation, men en plot med datapunkter utspridda överallt mellan X och Y har låg korrelation.
En bra linjär regressionsmodell är en som har hög (närmare 1 än 0) korrelationskoefficient med metoden minsta kvadrater och en regressionslinje.
✅ Kör notebook som hör till denna lektion och titta på spridningsdiagrammet Månad till Pris. Verkar datan som kopplar Månad till Pris för pumpaförsäljning ha hög eller låg korrelation, enligt din visuella tolkning av scatterploten? Förändras det om du använder ett finare mått istället för `Month`, t.ex. *dag på året* (dvs. antal dagar sedan årets början)?
I koden nedan antar vi att vi har rengjort datan och fått en dataframe kallad `new_pumpkins`, liknande följande:
ID | Månad | DagPåÅret | Sort | Stad | Förpackning | Lågt Pris | Högt Pris | Pris
> Koden för att rengöra data finns tillgänglig i [`notebook.ipynb`](notebook.ipynb). Vi har utfört samma rengöringssteg som i föregående lektion och beräknat kolumnen `DayOfYear` med följande uttryck:
> Koden för att rengöra datan finns tillgänglig i [`notebook.ipynb`](notebook.ipynb). Vi har utfört samma rengöringssteg som i föregående lektion, och har beräknat kolumnen `DayOfYear` med följande uttryck:
Nu när du har en förståelse för matematiken bakom linjär regression, låt oss skapa en regressionsmodell för att se om vi kan förutsäga vilken pumpkinförpackning som kommer att ha de bästa pumpapriserna. Någon som köper pumpor för en högtidlig pumpaplats kanske vill ha denna information för att kunna optimera sina inköp av pumpkinpaket för sin plats.
Nu när du har förstått matematiken bakom linjär regression, låt oss skapa en regressionsmodell för att se om vi kan förutsäga vilken pumpaförpackning som kommer ha de bästa pumpaprisen. Någon som köper pumpor för en höstpumpaplantering kanske vill ha denna information för att kunna optimera köp av pumpapaket till planteringen.
## Letar efter korrelation
@ -116,22 +115,22 @@ Nu när du har en förståelse för matematiken bakom linjär regression, låt o
> 🎥 Klicka på bilden ovan för en kort videoöversikt över korrelation.
Från föregående lektion har du förmodligen sett att genomsnittspriset för olika månader ser ut så här:
Från föregående lektion har du förmodligen sett att medelpriset för olika månader ser ut så här:
<imgalt="Average price by month"src="../../../../translated_images/sv/barchart.a833ea9194346d76.webp"width="50%"/>
Detta antyder att det borde finnas någon korrelation, och vi kan försöka träna en linjär regressionsmodell för att förutsäga sambandet mellan `Month` och `Price`, eller mellan `DayOfYear` och `Price`. Här är spridningsdiagrammet som visar det senare förhållandet:
Det antyder att det borde finnas någon korrelation, och vi kan försöka träna en linjär regressionsmodell för att förutsäga sambandet mellan `Month` och `Price`, eller mellan `DayOfYear` och `Price`. Här är ett scatterplot som visar det senare sambandet:
<imgalt="Scatter plot of Price vs. Day of Year"src="../../../../translated_images/sv/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
Låt oss se om det finns en korrelation med funktionen `corr`:
Låt oss se om det finns korrelation med funktionen `corr`:
Det verkar som att korrelationen är ganska liten, -0,15 för `Month` och -0,17 för `DayOfYear`, men det kan finnas ett annat viktigt samband. Det ser ut som att det finns olika kluster av priser som motsvarar olika pumparter. För att bekräfta denna hypotes, låt oss plotta varje pumpkategori med en annan färg. Genom att skicka en `ax`-parameter till `scatter`-plotfunktionen kan vi rita alla punkter i samma diagram:
Det ser ut som att korrelationen är ganska liten, -0.15 för `Month` och -0.17 för `DayOfMonth`, men det kan finnas ett annat viktigt samband. Det ser ut som om det finns olika kluster av priser som korrelerar med olika pumpasorter. För att bekräfta denna hypotes, låt oss plotta varje pumpakategori med en annan färg. Genom att skicka en `ax` parameter till `scatter`-plotfunktion kan vi plotta alla punkter på samma graf:
```python
ax=None
@ -140,18 +139,18 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="Scatter plot of Price vs. Day of Year"src="../../../../translated_images/sv/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
Om vi nu beräknar korrelationen mellan `Price` och `DayOfYear` med funktionen `corr`, får vi något runt `-0.27`– vilket betyder att det är vettigt att träna en prediktiv modell.
Om vi nu beräknar korrelationen mellan `Price` och `DayOfYear` med `corr`-funktionen, får vi ungefär `-0.27`– vilket betyder att det är meningsfullt att träna en prediktiv modell.
> Innan du tränar en linjär regressionsmodell är det viktigt att se till att vår data är ren. Linjär regression fungerar inte bra med saknade värden, så det är vettigt att bli av med alla tomma celler:
> Innan du tränar en linjär regressionsmodell är det viktigt att säkerställa att vår data är ren. Linjär regression fungerar inte bra med saknade värden, så det är vettigt att ta bort alla tomma celler:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
Ett annat tillvägagångssätt är att fylla de tomma värdena med medelvärden från motsvarande kolumn.
Ett annat tillvägagångssätt kan vara att fylla dessa tomma värden med medelvärden från motsvarande kolumn.
## Enkel linjär regression
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 Klicka på bilden ovan för en kort videoöversikt över linjär och polynomisk regression.
> 🎥 Klicka på bilden ovan för en kort videoöversikt över linjär och polynomregression.
För att träna vår linjära regressionsmodell kommer vi att använda **Scikit-learn**-biblioteket.
@ -183,38 +182,38 @@ from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
Vi börjar med att separera indata (features) och förväntad utdata (label) i separata numpy-arrays:
Vi börjar med att separera indata (funktioner) och det förväntade resultatet (etikett) i separata numpy-arrayer:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Observera att vi var tvungna att göra en `reshape` på indatan för att Linear Regression-paketet ska förstå den korrekt. Linjär regression förväntar sig en 2D-array som indata, där varje rad i arrayen motsvarar en vektor av indatafunktioner. I vårt fall, eftersom vi bara har en indata, behöver vi en array med formen N×1, där N är datasetets storlek.
Sedan måste vi dela datan i tränings- och testdatauppsättningar så att vi kan validera vår modell efter träning:
> Observera att vi var tvungna att använda `reshape` på indata för att linjär regressionspaketet ska förstå det korrekt. Linjär regression förväntar sig en 2D-array som indata, där varje rad i arrayen motsvarar en vektor av indatafunktioner. I vårt fall, eftersom vi bara har en indata, behöver vi en array med formen N×1, där N är datasetets storlek.
Därefter behöver vi dela data i tränings- och testdataset, så att vi kan validera vår modell efter träning:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Slutligen tar det bara två kodrader att träna den faktiska linjära regressionsmodellen. Vi definierar `LinearRegression`-objektet och anpassar det till vår data med metoden `fit`:
Slutligen tar själva träningen av den linjära regressionsmodellen bara två kodrader. Vi definierar `LinearRegression`-objektet och anpassar det till vår data med metoden `fit`:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
`LinearRegression`-objektet efter att ha anpassats innehåller alla regressionskoefficienter, vilka kan nås via`.coef_`-egenskapen. I vårt fall finns det bara en koefficient, som bör vara runt `-0.017`. Det betyder att priserna verkar sjunka lite med tiden, men inte så mycket, ungefär 2 cent per dag. Vi kan också nå skärningspunkten för regressionen med Y-axeln genom `lin_reg.intercept_` - den kommer i vårt fall vara runt `21`, vilket indikerar priset i början av året.
`LinearRegression`-objektet efter att ha `fit`ats innehåller alla regressionskoefficienter, som kan nås med`.coef_`-egenskapen. I vårt fall finns det bara en koefficient, som bör vara runt `-0.017`. Det betyder att priserna verkar sjunka lite med tiden, men inte för mycket, cirka 2 cent per dag. Vi kan också nå regressionsens skärningspunkt med Y-axeln med `lin_reg.intercept_` - den kommer att vara runt `21` i vårt fall, vilket indikerar priset i början av året.
För att se hur korrekt vår modell är kan vi förutsäga priser på en testdatamängd och sedan mäta hur nära våra förutsägelser är de förväntade värdena. Detta kan göras med hjälp av medelkvadratfel (MSE), vilket är medelvärdet av alla kvadrerade skillnader mellan förväntat och förutsagt värde.
För att se hur exakt vår modell är kan vi förutsäga priser på en testdatamängd och sedan mäta hur nära våra förutsägelser är de förväntade värdena. Detta kan göras med metrik som rotmedelkvadratfel (RMSE), som är roten ur medelvärdet av alla kvadrerade skillnader mellan förväntat och förutspått värde.
Vårt fel verkar vara runt 2 poäng, vilket är ~17%. Inte så bra. En annan indikator på modellens kvalitet är **bestämningskoefficienten**, som kan erhållas så här:
@ -223,9 +222,9 @@ Vårt fel verkar vara runt 2 poäng, vilket är ~17%. Inte så bra. En annan ind
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
Om värdet är 0 betyder det att modellen inte tar inputdata i beaktande, och agerar som den *sämsta linjära prediktorn*, vilket helt enkelt är medelvärdet av resultatet. Värdet 1 innebär att vi perfekt kan förutsäga alla förväntade utgångar. I vårt fall är koefficienten runt 0,06, vilket är ganska lågt.
Om värdet är 0 betyder det att modellen inte tar hänsyn till indata och agerar som den *sämsta linjära förutsägaren*, vilket helt enkelt är ett medelvärde av resultatet. Värdet 1 innebär att vi perfekt kan förutsäga alla förväntade utdata. I vårt fall är koefficienten runt 0,06, vilket är ganska lågt.
Vi kan också plotta testdata tillsammans med regressionslinjen för att bättre se hur regressionen fungerar i vårt fall:
Vi kan också plotta testdata tillsammans med regressionslinjen för att bättre se hur regression fungerar i vårt fall:
```python
plt.scatter(X_test,y_test)
@ -236,17 +235,17 @@ plt.plot(X_test,pred)
## Polynomregression
En annan typ av linjär regression är polynomregression. Medan det ibland finns ett linjärt samband mellan variabler – ju större pumpan i volym, desto högre pris – kan dessa samband ibland inte plottas som ett plan eller rakt linje.
En annan typ av linjär regression är polynomregression. Ibland finns det ett linjärt samband mellan variabler – ju större pumpa i volym, desto högre pris – men ibland kan dessa samband inte avbildas som ett plan eller en rät linje.
✅ Här är [fler exempel](https://online.stat.psu.edu/stat501/lesson/9/9.8) på data som kan använda polynomregression
✅ Här är [några fler exempel](https://online.stat.psu.edu/stat501/lesson/9/9.8) på data som kan dra nytta av polynomregression
Titta igen på sambandet mellan Datum och Pris. Verkar detta spridningsdiagram som något som nödvändigtvis bör analyseras med en rät linje? Kan inte priserna fluktuera? I det här fallet kan du prova polynomregression.
Titta igen på sambandet mellan datum och pris. Verkar denna scatterplot nödvändigtvis behöva analyseras med en rak linje? Kan inte priserna variera? I sådana fall kan du testa polynomregression.
✅ Polynom är matematiska uttryck som kan bestå av en eller flera variabler och koefficienter
Polynomregression skapar en kurvad linje för att bättre passa icke-linjära data. I vårt fall, om vi inkluderar en kvadratisk `DayOfYear`-variabel i indata, bör vi kunna anpassa våra data med en parabolisk kurva, som kommer att ha ett minimum vid en viss punkt under året.
Polynomregression skapar en kurvad linje för att bättre passa icke-linjära data. I vårt fall, om vi inkluderar en kvadrerad `DayOfYear`-variabel i indata, borde vi kunna anpassa vår data med en parabolisk kurva som har ett minimum vid en viss punkt under året.
Scikit-learn innehåller ett användbart [pipelineAPI](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) för att kombinera olika steg i databehandlingen. En **pipeline** är en kedja av **estimators**. I vårt fall skapar vi en pipeline som först lägger till polynomfunktioner till vår modell och sedan tränar regressionen:
Scikit-learn innehåller ett användbart [pipeline-API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) för att kombinera olika steg för databehandling. En **pipeline** är en kedja av **estimators**. I vårt fall skapar vi en pipeline som först lägger till polynomegenskaper till vår modell och sedan tränar regressionen:
```python
from sklearn.preprocessing import PolynomialFeatures
Att använda `PolynomialFeatures(2)` innebär att vi kommer att inkludera alla andragradspolynom från inputdata. I vårt fall betyder det bara `DayOfYear`<sup>2</sup>, men med två inputvariabler X och Y skulle detta lägga till X<sup>2</sup>, XY och Y<sup>2</sup>. Vi kan också använda högre gradens polynom om vi vill.
Att använda `PolynomialFeatures(2)` innebär att vi tar med alla andragradspolynom från indata. I vårt fall kommer det bara innebära `DayOfYear`<sup>2</sup>, men med två indata X och Y skulle detta lägga till X<sup>2</sup>, XY och Y<sup>2</sup>. Man kan även använda polynom med högre grad om man vill.
Pipelines kan användas på samma sätt som det ursprungliga `LinearRegression`-objektet, dvs vi kan `fit` pipelinen, och sedan använda `predict` för att få förutsägelser. Här är grafen som visar testdata och approximationskurvan:
Pipelines kan användas på samma sätt som det ursprungliga `LinearRegression`-objektet, dvs. vi kan `fit`a pipelinen och sedan använda `predict` för att få förutsägelserna. Här är grafen som visar testdata och approximationskurvan:
Med polynomregression kan vi få något lägre MSE och högre bestämning, men inte signifikant. Vi behöver ta hänsyn till andra egenskaper!
Med polynomregression kan vi få något lägre MSE och högre bestämning, men inte signifikant. Vi behöver ta hänsyn till fler funktioner!
> Du kan se att de lägsta pumpapriserna observeras runt Halloween. Hur kan du förklara detta?
> Du kan se att de lägsta pumpapriserna observeras någonstans runt Halloween. Hur kan du förklara detta?
🎃 Grattis, du skapade precis en modell som kan hjälpa till att förutsäga priset på pajpumpor. Du kan förmodligen upprepa samma procedur för alla pumpatyper, men det vore tråkigt. Låt oss nu lära oss hur vi tar pumpasort i beaktning i vår modell!
🎃 Grattis, du skapade just en modell som kan hjälpa till att förutsäga priset på pajpumpor. Du kan förmodligen upprepa samma procedur för alla pumpatyper, men det skulle vara tråkigt. Låt oss nu lära oss hur vi tar pumpasort i beaktande i vår modell!
## Kategoriska egenskaper
## Kategoriska Funktioner
I en perfekt värld vill vi kunna förutsäga priser för olika pumpasorter med samma modell. Dock skiljer sig kolumnen `Variety` något från kolumner som `Month`, eftersom den innehåller icke-numeriska värden. Sådana kolumner kallas **kategoriska**.
I en ideal värld vill vi kunna förutsäga priser för olika pumpasorter med samma modell. Men kolumnen `Variety` skiljer sig något från kolumner som `Month`, eftersom den innehåller icke-numeriska värden. Sådana kolumner kallas **kategoriska**.
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 Klicka på bilden ovan för en kort videoöversikt om användning av kategoriska egenskaper.
> 🎥 Klicka på bilden ovan för en kort videoöversikt om användning av kategoriska funktioner.
Här kan du se hur medelpriset beror på sort:
<imgalt="Average price by variety"src="../../../../translated_images/sv/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
För att ta sort i beaktning måste vi först konvertera den till ett numeriskt format, eller **koda** den. Det finns flera sätt att göra det:
För att ta hänsyn till sort behöver vi först konvertera den till numerisk form, eller **koda** den. Det finns flera sätt att göra det:
* Enkel **numerisk kodning**skapar en tabell med olika sorter och ersätter sedan sortnamnet med ett index i den tabellen. Detta är inte bästa idé för linjär regression, eftersom linjär regression tar det faktiska numeriska värdet på indexet och adderar det till resultatet, multiplicerat med någon koefficient. I vårt fall är sambandet mellan indexnummer och pris uppenbart icke-linjärt, även om vi ser till att indexen ordnas på något specifikt sätt.
* **One-hot-encoding** ersätter `Variety`-kolumnen med 4 olika kolumner, en för varje sort. Varje kolumn innehåller `1` om motsvarande rad är av en viss sort, och `0` annars. Det innebär att det kommer att finnas fyra koefficienter i linjär regression, en för varje pumpsort, ansvarig för "startpris" (eller snarare "tilläggspris") för just den sorten.
* Enkel **numerisk kodning**bygger en tabell med olika sorter och ersätter sedan sortnamnet med ett index i tabellen. Detta är inte bästa metoden för linjär regression, för linjär regression tar det faktiska numeriska värdet på indexet och lägger till det i resultatet, multiplicerat med en koefficient. I vårt fall är sambandet mellan indexnummer och pris tydligt icke-linjärt, även om vi ser till att indexen är ordnade på ett specifikt sätt.
* **One-hot-kodning** ersätter `Variety`-kolumnen med 4 olika kolumner, en för varje sort. Varje kolumn innehåller `1` om motsvarande rad är av den givna sorten och `0` annars. Det innebär att det kommer finnas fyra koefficienter i linjär regression, en för varje pumpasort, ansvariga för "startpris" (eller snarare "tilläggspris") för just den sorten.
Koden nedan visar hur vi kan one-hot-koda en sort:
För att träna linjär regression med one-hot-kodad sort som input behöver vi bara initiera `X` och `y` data korrekt:
För att träna linjär regression med one-hot-kodad sort som indata behöver vi bara initiera `X` och `y` korrekt:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
Resten av koden är densamma som vi använde ovan för att träna linjär regression. Om du provar detta kommer du se att medelkvadratfelet blir ungefär detsamma, men vi får en mycket högre bestämningskoefficient (~77%). För att få ännu mer exakta förutsägelser kan vi ta hänsyn till fler kategoriska egenskaper, samt numeriska egenskaper som `Month` eller `DayOfYear`. För att få en stor array med egenskaper kan vi använda `join`:
Resten av koden är densamma som vi använde tidigare för att träna linjär regression. Om du provar kommer du se att medelkvadratfelet är ungefär detsamma, men bestämningskoefficienten är mycket högre (~77%). För att få ännu mer exakta förutsägelser kan vi ta fler kategoriska funktioner i beaktande, samt numeriska funktioner som `Month` eller `DayOfYear`. För att få en stor matris med funktioner kan vi använda `join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -320,31 +319,31 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
Här tar vi också hänsyn till `City` och `Package`-typ, vilket ger oss MSE 2.84 (10%) och bestämning 0.94!
Här tar vi också med `City` och typ av `Package`, vilket ger oss MSE 2.84 (10%) och bestämning 0.94!
## Att sätta ihop allt
## Sammanfoga allt
För att göra den bästa modellen kan vi använda kombinerade (one-hot-kodade kategoriska + numeriska) data från föregående exempel tillsammans med polynomregression. Här är den kompletta koden för din bekvämlighet:
För att göra bästa modell kan vi använda kombinerad (one-hot-kodad kategorisk + numerisk) data från ovanstående exempel tillsammans med polynomregression. Här är den kompletta koden för din bekvämlighet:
```python
# skapa träningsdata
# ställ in träningsdata
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# gör fördelning av tränings- och testdata
# gör tåg-test delning
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
Detta bör ge oss den bästa bestämningskoefficienten på nästan 97% och MSE=2.23 (~8% förutsägelsefel).
Detta bör ge oss bästa bestämningskoefficient på nästan 97%, och MSE=2.23 (~8% förutsägelsefel).
| Modell | MSE | Bestämning |
|-------|-----|------------|
|-------|-----|-------------|
| `DayOfYear` Linjär | 2.77 (17.2%) | 0.07 |
| `DayOfYear` Polynom | 2.73 (17.0%) | 0.08 |
| `Variety` Linjär | 5.24 (19.7%) | 0.77 |
| Alla egenskaper Linjär | 2.84 (10.5%) | 0.94 |
| Alla egenskaper Polynom | 2.23 (8.25%) | 0.97 |
| Alla funktioner Linjär | 2.84 (10.5%) | 0.94 |
| Alla funktioner Polynom | 2.23 (8.25%) | 0.97 |
🏆 Bra jobbat! Du skapade fyra regressionsmodeller på en lektion och förbättrade modellens kvalitet till 97%. I det sista avsnittet om regression får du lära dig om logistisk regression för att bestämma kategorier.
🏆 Bra jobbat! Du skapade fyra regressionsmodeller i en lektion och förbättrade modellens kvalitet till 97%. I den sista delen om regression kommer du lära dig om logistisk regression för att bestämma kategorier.
---
## 🚀Utmaning
Testa flera olika variabler i den här anteckningsboken för att se hur korrelationen motsvarar modellens noggrannhet.
Testa flera olika variabler i denna notebook för att se hur korrelation korrelerar med modellens noggrannhet.
## [Quiz efter föreläsning](https://ff-quizzes.netlify.app/en/ml/)
## [Quiz efter föreläsningen](https://ff-quizzes.netlify.app/en/ml/)
## Genomgång & Självstudier
## Granskning & Självstudier
I den här lektionen lärde vi oss om linjär regression. Det finns andra viktiga typer av regression. Läs om Stepwise, Ridge, Lasso och Elasticnet-tekniker. En bra kurs att studera för att lära sig mer är [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
I denna lektion lärde vi oss om linjär regression. Det finns andra viktiga typer av regression. Läs om Stepwise, Ridge, Lasso och Elasticnet-tekniker. En bra kurs att studera för att lära sig mer är [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Uppgift
## Uppgift
[Bygg en modell](assignment.md)
@ -383,5 +382,5 @@ I den här lektionen lärde vi oss om linjär regression. Det finns andra viktig
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Ansvarsfriskrivning**:
Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Trots att vi strävar efter noggrannhet, bör du vara medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess modersmål ska betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår från användningen av denna översättning.
Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, var vänlig observera att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess modersmål bör anses vara den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår från användningen av denna översättning.
I den här lektionen kommer du att använda datasetet som du sparade från den senaste lektionen, fullt av balanserad och ren data om olika kök.
I den här lektionen kommer du att använda den dataset du sparade från föregående lektion, full av balanserad, ren data om olika kök.
Du kommer att använda detta dataset med en mängd olika klassificerare för att _förutsäga ett visst nationellt kök baserat på en grupp ingredienser_. Under tiden kommer du att lära dig mer om hur algoritmer kan användas för klassificeringsuppgifter.
Du kommer att använda detta dataset med en rad olika klassificerare för att _förutsäga ett givet nationellt kök baserat på en grupp ingredienser_. Samtidigt kommer du att lära dig mer om några av de sätt som algoritmer kan användas för klassificeringsuppgifter.
## [Quiz före föreläsningen](https://ff-quizzes.netlify.app/en/ml/)
Om du har slutfört [Lektionen 1](../1-Introduction/README.md), se till att en _cleaned_cuisines.csv_-fil finns i rotmappen `/data` för dessa fyra lektioner.
Om du har genomfört [Lektion 1](../1-Introduction/README.md), se till att en fil som heter _cleaned_cuisines.csv_ finns i rotmappen `/data` för dessa fyra lektioner.
## Övning - förutsäg ett nationellt kök
1. Arbeta i den här lektionens _notebook.ipynb_-mapp och importera filen tillsammans med Pandas-biblioteket:
1. Arbeta i den här lektionens _notebook.ipynb_-mapp, importera den filen tillsammans med Pandas-biblioteket:
```python
import pandas as pd
@ -40,7 +40,7 @@ Om du har slutfört [Lektionen 1](../1-Introduction/README.md), se till att en _
import numpy as np
```
1. Dela upp X- och y-koordinaterna i två dataframes för träning. `cuisine` kan vara etikett-databasen:
1. Dela upp X och y i två dataframes för träning. `cuisine` kan vara label-dataframen:
```python
cuisines_label_df = cuisines_df['cuisine']
@ -58,7 +58,7 @@ Om du har slutfört [Lektionen 1](../1-Introduction/README.md), se till att en _
Name: cuisine, dtype: object
```
1. Ta bort kolumnen `Unnamed: 0` och kolumnen `cuisine` genom att använda `drop()`. Spara resten av datan som träningsbara funktioner:
1. Droppa kolumnen `Unnamed: 0` och kolumnen `cuisine` genom att anropa `drop()`. Spara resten av datat som träningsbara funktioner:
@ -77,73 +77,73 @@ Om du har slutfört [Lektionen 1](../1-Introduction/README.md), se till att en _
Nu är du redo att träna din modell!
## Välja klassificerare
## Välj din klassificerare
Nu när din data är ren och redo för träning måste du bestämma vilken algoritm du ska använda för uppgiften.
Nu när ditt data är rent och redo för träning måste du bestämma dig för vilken algoritm du ska använda.
Scikit-learn grupperar klassificering under Supervised Learning, och inom den kategorin hittar du många sätt att klassificera. [Variationen](https://scikit-learn.org/stable/supervised_learning.html) kan verka överväldigande vid första anblicken. Följande metoder inkluderar alla klassificeringstekniker:
Scikit-learn grupperar klassificering under övervakad inlärning (Supervised Learning), och i den kategorin finns många sätt att klassificera. [Variationen](https://scikit-learn.org/stable/supervised_learning.html) kan vara ganska överväldigande vid första anblicken. Följande metoder inkluderar alla klassificeringstekniker:
- Linjära modeller
- Support Vector Machines
- Stokastisk gradientnedstigning
- Närmaste grannar
- Närmaste grannar (Nearest Neighbors)
- Gaussiska processer
- Beslutsträd
- Ensemblemetoder (röstningsklassificerare)
- Ensembelmetoder (votering Klassificerare)
- Multiklass- och multioutput-algoritmer (multiklass- och multilabel-klassificering, multiklass-multioutput-klassificering)
> Du kan också använda [neurala nätverk för att klassificera data](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification), men det ligger utanför denna lektions omfattning.
### Vilken klassificerare ska man välja?
### Vilken klassificerare ska du välja?
Så, vilken klassificerare ska du välja? Ofta kan man testa flera och leta efter ett bra resultat. Scikit-learn erbjuder en [jämförelse sida vid sida](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) på ett skapat dataset, där KNeighbors, SVC på två sätt, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB och QuadraticDiscriminationAnalysis jämförs och resultaten visualiseras:
Så, vilken klassificerare ska du välja? Ofta är det ett sätt att testa att köra flera och leta efter ett bra resultat. Scikit-learn erbjuder en [jämförelse sida vid sida](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) på ett skapat dataset, som jämför KNeighbors, SVC på två sätt, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB och QuadraticDiscrinationAnalysis, och visar resultaten visuellt:

> Diagram genererade från Scikit-learns dokumentation

> Diagram skapade från Scikit-learns dokumentation
> AutoML löser detta problem smidigt genom att köra dessa jämförelser i molnet, vilket gör att du kan välja den bästa algoritmen för din data. Prova det [här](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
> AutoML löser detta problem snyggt genom att köra dessa jämförelser i molnet, så att du kan välja den bästa algoritmen för dina data. Prova det [här](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### En bättre metod
### Ett bättre tillvägagångssätt
En bättre metod än att gissa vilt är att följa idéerna i detta nedladdningsbara [ML Cheat Sheet](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott). Här upptäcker vi att vi för vårt multiklassproblem har några alternativ:
Ett bättre sätt än att gissa vilt är dock att följa idéerna i detta nedladdningsbara [ML Cheat Sheet](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott). Här upptäcker vi att för vårt multiclass-problem har vi några val:

> En del av Microsofts Algorithm Cheat Sheet, som beskriver alternativ för multiklassklassificering

> En sektion från Microsofts Algorithm Cheat Sheet, som visar alternativ för multiklassklassificering
✅ Ladda ner denna fusklapp, skriv ut den och häng upp den på väggen!
✅ Ladda ned detta cheatsheet, skriv ut det och häng upp det på väggen!
### Resonemang
Låt oss se om vi kan resonera oss fram till olika metoder med tanke på de begränsningar vi har:
Låt oss se om vi kan resonera oss fram till olika tillvägagångssätt givet de begränsningar vi har:
- **Neurala nätverk är för tunga**. Med tanke på vårt rena men minimala dataset och det faktum att vi kör träning lokalt via notebooks, är neurala nätverk för resurskrävande för denna uppgift.
- **Ingen tvåklassklassificerare**. Vi använder inte en tvåklassklassificerare, så det utesluter one-vs-all.
- **Neurala nätverk är för tunga**. Med vårt rena men minimala dataset, och det faktum att vi kör träningen lokalt via notebooks, är neurala nätverk för resurskrävande för denna uppgift.
- **Ingen två-klassklassificerare**. Vi använder inte en två-klassklassificerare, så det utesluter one-vs-all.
- **Beslutsträd eller logistisk regression kan fungera**. Ett beslutsträd kan fungera, eller logistisk regression för multiklassdata.
- **Multiklass Boosted Decision Trees löser ett annat problem**. Multiklass Boosted Decision Tree är mest lämplig för icke-parametriska uppgifter, t.ex. uppgifter som är utformade för att skapa rankningar, så det är inte användbart för oss.
- **Multiklass Boosted Decision Trees löser ett annat problem**. Det multiklass-boostrade beslutsträdet passar bäst för icke-parametriska uppgifter, t.ex. uppgifter som är utformade för att bygga rankingar, så det är inte användbart för oss.
### Använda Scikit-learn
### Använda Scikit-learn
Vi kommer att använda Scikit-learn för att analysera vår data. Det finns dock många sätt att använda logistisk regression i Scikit-learn. Ta en titt på [parametrarna att skicka](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Vi kommer att använda Scikit-learn för att analysera våra data. Det finns dock många sätt att använda logistisk regression i Scikit-learn. Ta en titt på [parametrarna att skicka med](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
I huvudsak finns det två viktiga parametrar - `multi_class` och `solver` - som vi behöver specificera när vi ber Scikit-learn att utföra en logistisk regression. Värdet på `multi_class` tillämpar ett visst beteende. Värdet på solver är vilken algoritm som ska användas. Inte alla solvers kan kombineras med alla `multi_class`-värden.
I grunden finns två viktiga parametrar - `multi_class` och `solver` - som vi behöver ange när vi ber Scikit-learn att utföra logistisk regression. Värdet på `multi_class` styr ett visst beteende. Värdet på `solver` är vilken algoritm som ska användas. Inte alla solver kan paras ihop med alla `multi_class`-värden.
Enligt dokumentationen, i multiklassfallet, träningsalgoritmen:
Enligt dokumentationen gäller för multiklassfallet:
- **Använder one-vs-rest (OvR)-schemat**, om `multi_class`-alternativet är inställt på `ovr`
- **Använder korsentropiförlust**, om `multi_class`-alternativet är inställt på `multinomial`. (För närvarande stöds `multinomial`-alternativet endast av solvers‘lbfgs’, ‘sag’, ‘saga’ och ‘newton-cg’.)
- **Använder one-vs-rest (OvR)-schemat**, om `multi_class`-inställningen är satt till `ovr`.
- **Använder korsentropiförlusten**, om `multi_class`-inställningen är satt till `multinomial`. (För närvarande stöds `multinomial` endast av solver-algoritmerna‘lbfgs’, ‘sag’, ‘saga’ och ‘newton-cg’.)"
> 🎓 'Schemat' här kan antingen vara 'ovr' (one-vs-rest) eller 'multinomial'. Eftersom logistisk regression egentligen är utformad för att stödja binär klassificering, tillåter dessa scheman den att bättre hantera multiklassklassificeringsuppgifter. [källa](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 'schemat' här kan vara 'ovr' (one-vs-rest) eller 'multinomial'. Eftersom logistisk regression egentligen är designad för binär klassificering, tillåter dessa scheman att den bättre hanterar multiclass-klassificeringsuppgifter. [källa](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 'Solver' definieras som "algoritmen som ska användas i optimeringsproblemet". [källa](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
> 🎓 'solver' definieras som "algoritmen som ska användas i optimeringsproblemet". [källa](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Scikit-learn erbjuder denna tabell för att förklara hur solvers hanterar olika utmaningar som presenteras av olika typer av datastrukturer:
Scikit-learn visar denna tabell för att förklara hur solvers hanterar olika utmaningar som presenteras av olika typer av datastrukturer:
Eftersom du använder multiklassfallet behöver du välja vilket _schema_ du ska använda och vilken _solver_ du ska ställa in. Använd LogisticRegression med en multiklassinställning och **liblinear**-solver för att träna.
Eftersom du använder multiklassfallet behöver du välja vilket _schema_ du ska använda och vilken _solver_ du ska sätta. Använd LogisticRegression med en multiklassinställning och **liblinear** solver för träning.
1. Skapa en logistisk regression med multi_class inställd på `ovr` och solver inställd på`liblinear`:
1. Skapa en logistisk regression med multi_class satt till `ovr` och solver satt till`liblinear`:
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
@ -163,11 +163,13 @@ Eftersom du använder multiklassfallet behöver du välja vilket _schema_ du ska
print ("Accuracy is {}".format(accuracy))
```
✅ Prova en annan solver som `lbfgs`, som ofta är inställd som standard
> Observera, använd Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html)-funktionen för att platta ut dina data vid behov.
Noggrannheten är bra på över **80%**!
✅ Prova en annan solver som `lbfgs`, som ofta är standard
1. Du kan se denna modell i aktion genom att testa en rad data (#50):
> Observera att använda Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) funktion för att platta till din data vid behov.
Noggrannheten är bra, över **80%**!
1. Du kan se denna modell i praktiken genom att testa en rad data (#50):
@ -182,8 +184,7 @@ Noggrannheten är bra på över **80%**!
```
✅ Prova ett annat radnummer och kontrollera resultaten
1. För att gå djupare kan du kontrollera noggrannheten för denna förutsägelse:
1. Gräv djupare, du kan kontrollera noggrannheten i denna prediktion:
```python
test= X_test.iloc[50].values.reshape(-1, 1).T
@ -195,7 +196,7 @@ Noggrannheten är bra på över **80%**!
topPrediction.head()
```
Resultatet skrivs ut - indisk mat är dess bästa gissning, med hög sannolikhet:
Resultatet skrivs ut – Indisk matlagning är dess bästa gissning, med god sannolikhet:
| | 0 |
| -------: | -------: |
@ -205,9 +206,9 @@ Noggrannheten är bra på över **80%**!
| korean | 0.017277 |
| thai | 0.007634 |
✅ Kan du förklara varför modellen är ganska säker på att detta är indisk mat?
✅ Kan du förklara varför modellen är ganska säker på att detta är en indisk maträtt?
1. Få mer detaljer genom att skriva ut en klassificeringsrapport, precis som du gjorde i regression-lektionerna:
1. Få mer detalj genom att skriva ut en klassificeringsrapport, som du gjorde i regression-lektionerna:
```python
y_pred = model.predict(X_test)
@ -221,24 +222,26 @@ Noggrannheten är bra på över **80%**!
| japanese | 0.70 | 0.75 | 0.72 | 220 |
| korean | 0.86 | 0.76 | 0.81 | 242 |
| thai | 0.79 | 0.85 | 0.82 | 254 |
| accuracy | 0.80|1199 | | |
| accuracy | | |0.80|1199 |
| macro avg | 0.80 | 0.80 | 0.80 | 1199 |
| weighted avg | 0.80 | 0.80 | 0.80 | 1199 |
## 🚀Utmaning
I denna lektion använde du dina rensade data för att bygga en maskininlärningsmodell som kan förutsäga ett nationellt kök baserat på en serie ingredienser. Ta lite tid att läsa igenom de många alternativ som Scikit-learn erbjuder för att klassificera data. Gå djupare in i konceptet 'solver' för att förstå vad som händer bakom kulisserna.
I denna lektion använde du dina rensade data för att bygga en maskininlärningsmodell som kan förutsäga en nationell maträtt baserat på en serie ingredienser. Ta dig tid att läsa igenom de många alternativ Scikit-learn erbjuder för att klassificera data. Gräv djupare i konceptet 'solver' för att förstå vad som händer bakom kulisserna.
## [Quiz efter föreläsningen](https://ff-quizzes.netlify.app/en/ml/)
## Granskning& Självstudier
## Översikt& Självstudier
Gräv lite djupare i matematiken bakom logistisk regression i [denna lektion](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
Gräv lite mer i matematiken bakom logistisk regression i [denna lektion](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
## Uppgift
[Studera lösningsmetoderna](assignment.md)
[Studera solvers](assignment.md)
---
**Ansvarsfriskrivning**:
Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, bör du vara medveten om att automatiserade översättningar kan innehålla fel eller inexaktheter. Det ursprungliga dokumentet på dess ursprungliga språk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Ansvarsfriskrivning**:
Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, vänligen observera att automatiska översättningar kan innehålla fel eller unøjaktigheter. Det ursprungliga dokumentet på dess modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning.
> Detta arkiv inkluderar över 50 språköversättningar vilket gör nedladdningsstorleken betydligt större. För att klona utan översättningar, använd sparse checkout:
> Detta arkiv innehåller över 50 språköversättningar vilket avsevärt ökar nedladdningsstorleken. För att klona utan översättningar, använd sparse checkout:
>
> **Bash / macOS / Linux:**
> ```bash
@ -33,63 +33,63 @@
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> Detta ger dig allt du behöver för att genomföra kursen med en mycket snabbare nedladdning.
> Detta ger dig allt du behöver för att slutföra kursen med en mycket snabbare nedladdning.
Vi har en Discord-serie "Learn with AI" på gång, lär dig mer och gå med oss på [Learn with AI Series](https://aka.ms/learnwithai/discord) mellan 18 - 30 september 2025. Du får tips och tricks för att använda GitHub Copilot för Data Science.
Vi har en Discord-serie om att lära sig med AI pågående, lär dig mer och gå med oss på [Learn with AI Series](https://aka.ms/learnwithai/discord) från 18 - 30 september, 2025. Du får tips och tricks om hur man använder GitHub Copilot för Data Science.

# Maskininlärning för nybörjare - Ett läroprogram
# Maskininlärning för nybörjare - En läroplan
> 🌍 Res runt i världen medan vi utforskar maskininlärning genom världens kulturer 🌍
> 🌍 Res runt i världen när vi utforskar maskininlärning genom världens kulturer 🌍
Cloud Advocates på Microsoft är glada att erbjuda ett 12-veckors, 26-lektioners läroprogram helt om **Maskininlärning**. I detta läroprogram kommer du att lära dig vad som ibland kallas **klassisk maskininlärning**, där vi huvudsakligen använder Scikit-learn som bibliotek och undviker djupinlärning, som täcks i vårt [AI for Beginners-läroprogram](https://aka.ms/ai4beginners). Kombinera gärna dessa lektioner med vårt ['Data Science for Beginners'-läroprogram](https://aka.ms/ds4beginners)!
Cloud Advocates på Microsoft erbjuder en 12-veckors, 26-lektioners läroplan som handlar om **Maskininlärning**. I denna läroplan kommer du att lära dig om det som ibland kallas **klassisk maskininlärning**, med huvudsakligen Scikit-learn som bibliotek och utan djupinlärning, som täcks i vår [AI för nybörjare-läroplan](https://aka.ms/ai4beginners). Kombinera dessa lektioner med vår ['Data Science för nybörjare-läroplan'](https://aka.ms/ds4beginners) också!
Res med oss runt världen när vi applicerar dessa klassiska tekniker på data från många delar av världen. Varje lektion innehåller quiz före och efter lektionen, skriftliga instruktioner för att slutföra lektionen, en lösning, ett uppdrag och mer. Vår projektbaserade pedagogik låter dig lära medan du bygger, ett beprövat sätt för nya färdigheter att "fästa".
Res med oss runt världen medan vi tillämpar dessa klassiska tekniker på data från många delar av världen. Varje lektion inkluderar quiz före och efter lektionen, skriftliga instruktioner för att slutföra lektionen, en lösning, en uppgift och mer. Vår projektbaserade pedagogik låter dig lära dig medan du bygger, ett beprövat sätt för nya färdigheter att "fästa".
**✍️ Stort tack till våra författare** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu och Amy Boyd
**🎨 Tack även till våra illustratörer** Tomomi Imura, Dasani Madipalli och Jen Looper
**🎨 Tack också till våra illustratörer** Tomomi Imura, Dasani Madipalli och Jen Looper
**🙏 Speciellt tack 🙏 till våra Microsoft Student Ambassador-författare, granskare och innehållsmedarbetare**, särskilt Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila och Snigdha Agarwal
**🙏 Stort tack 🙏 till våra Microsoft Student Ambassador-författare, granskare och innehållsbidragsgivare**, särskilt Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila och Snigdha Agarwal
**🤩 Extra tacksamhet till Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi och Vidushi Gupta för våra R-lektioner!**
**🤩 Extra tack till Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi och Vidushi Gupta för våra R-lektioner!**
# Komma igång
# Kom igång
Följ dessa steg:
1. **Fork:a arkivet**: Klicka på knappen "Fork" längst upp till höger på denna sida.
> [hitta alla ytterligare resurser för denna kurs i vår Microsoft Learn-samling](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **Behöver du hjälp?** Kolla vår [Guide för felsökning](TROUBLESHOOTING.md) för lösningar på vanliga problem med installation, uppsättning och att köra lektioner.
> 🔧 **Behöver du hjälp?** Kolla vår [Felsökningsguide](TROUBLESHOOTING.md) för lösningar på vanliga problem med installation, uppsättning och att köra lektioner.
**[Studenter](https://aka.ms/student-page)**, för att använda detta läroprogram, fork:a hela repo till ditt eget GitHub-konto och gör övningarna själv eller i grupp:
**[Studenter](https://aka.ms/student-page)**, för att använda denna läroplan, gör en fork av hela repo till ditt eget GitHub-konto och gör övningarna själv eller i en grupp:
- Börja med ett quiz före föreläsningen.
- Läs lektionen och genomför aktiviteterna, pausa och reflektera vid varje kunskapskontroll.
- Försök skapa projekten genom att förstå lektionerna snarare än att köra lösningskoden; dock finns den koden tillgänglig i `/solution`-mapparna i varje projektorienterad lektion.
- Ta quizet efter föreläsningen.
- Läs föreläsningen och utför aktiviteterna, pausa och reflektera vid varje kunskapskontroll.
- Försök att skapa projekten genom att förstå lektionerna snarare än att bara köra lösningskoden; dock finns koden tillgänglig i `/solution`-mapparna i varje projektorienterad lektion.
- Gör quizet efter föreläsningen.
- Slutför utmaningen.
- Slutför uppgiften.
- Efter att ha genomfört en lektionsgrupp, besök [Diskussionsforumet](https://github.com/microsoft/ML-For-Beginners/discussions) och "lär högt" genom att fylla i rätt PAT-rubrik. En 'PAT' är ett Progress Assessment Tool som är en rubrik du fyller i för att fördjupa ditt lärande. Du kan också reagera på andra PAT:er så att vi kan lära oss tillsammans.
- Efter att ha slutfört en lektionsgrupp, besök [Diskussionsforumet](https://github.com/microsoft/ML-For-Beginners/discussions) och "lär högt" genom att fylla i lämpligt PAT-rubrik. Ett 'PAT' är ett Progress Assessment Tool som är en bedömningsmall du fyller i för att fördjupa din kunskap. Du kan också reagera på andra PAT:er så att vi kan lära oss tillsammans.
> För vidare studier rekommenderar vi att följa dessa [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) moduler och lärvägar.
**Lärare**, vi har [inkluderat några förslag](for-teachers.md) på hur detta läroprogram kan användas.
**Lärare**, vi har [inkluderat några förslag](for-teachers.md) på hur ni kan använda denna läroplan.
---
## Videogenomgångar
Några av lektionerna finns som korta videor. Du kan hitta alla dessa inbäddade i lektionerna eller på [ML for Beginners spellistan på Microsoft Developer YouTube-kanal](https://aka.ms/ml-beginners-videos) genom att klicka på bilden nedan.
Några av lektionerna finns som korta videor. Du kan hitta alla dessa inbäddade i lektionerna, eller på [ML for Beginners spellistan på Microsoft Developer YouTube-kanal](https://aka.ms/ml-beginners-videos) genom att klicka på bilden nedan.
[](https://aka.ms/ml-beginners-videos)
@ -107,132 +107,142 @@ Några av lektionerna finns som korta videor. Du kan hitta alla dessa inbäddade
## Pedagogik
Vi har valt två pedagogiska principer när vi byggde detta läroprogram: att säkerställa att det är praktiskt **projektbaserat** och att det inkluderar **frekventa quiz**. Dessutom har detta läroprogram ett gemensamt **tema** för att ge sammanhang.
Vi har valt två pedagogiska principer vid skapandet av denna läroplan: att den ska vara praktiskt **projektbaserad** och att den innehåller **frekventa quiz**. Dessutom har denna läroplan ett gemensamt **tema** för att ge den sammanhang.
Genom att se till att innehållet stämmer överens med projekt görs processen mer engagerande för studenter och konceptbehållningen höjs. Dessutom sätter ett låg-risk-quiz före lektionen elevens intention mot att lära sig ett ämne, medan ett andra quiz efter lektionen säkerställer vidare behållning. Detta läroprogram är designat att vara flexibelt och roligt och kan tas helt eller delvis. Projekten börjar små och blir successivt mer komplexa mot slutet av cykeln på 12 veckor. Detta läroprogram inkluderar också en epilog om verkliga tillämpningar av ML som kan användas som extra uppgifter eller som diskussionsunderlag.
Genom att säkerställa att innehållet är kopplat till projekt blir processen mer engagerande för studenter och konceptbevarandet förbättras. Dessutom sätter ett lågintensivt quiz före lektionen en avsikt för studenten att lära sig ett ämne, medan ett andra quiz efter lektionen säkerställer vidare retention. Denna läroplan är designad för att vara flexibel och rolig och kan läsas i sin helhet eller delvis. Projekten börjar små och blir successivt mer komplexa under den 12-veckors cykeln. Denna läroplan innehåller även ett postscriptum om verkliga tillämpningar av ML, som kan användas som extrakredit eller som grund för diskussion.
> Hitta våra [Uppförandekod](CODE_OF_CONDUCT.md), [Bidra](CONTRIBUTING.md), [Översättningar](..) och [Felsöknings](TROUBLESHOOTING.md) riktlinjer. Vi välkomnar din konstruktiva feedback!
> Hitta våra [uppförandekoder](CODE_OF_CONDUCT.md), [Bidragande](CONTRIBUTING.md), [Översättningar](..) och [Felsökning](TROUBLESHOOTING.md) riktlinjer. Vi välkomnar din konstruktiva feedback!
## Varje lektion innehåller
- valfri skissanteckning
- valfri sketchnote
- valfri kompletterande video
- videogenomgång (endast vissa lektioner)
- [quiz före föreläsning](https://ff-quizzes.netlify.app/en/ml/)
- videogenomgång (vissa lektioner endast)
- [uppvärmningsquiz före föreläsning](https://ff-quizzes.netlify.app/en/ml/)
- skriftlig lektion
- för projektbaserade lektioner, steg-för-steg guider för hur du bygger projektet
- för projektbaserade lektioner, steg-för-steg-guide hur man bygger projektet
- kunskapskontroller
- en utmaning
- kompletterande läsning
- uppgift
- [quiz efter föreläsning](https://ff-quizzes.netlify.app/en/ml/)
> **En notering om språk**: Dessa lektioner är främst skrivna i Python, men många finns också tillgängliga i R. För att genomföra en R-lektion, gå till mappen `/solution` och leta efter R-lektioner. De har en .rmd-förlängning som representerar en **R Markdown**-fil som enkelt kan definieras som en inbäddning av `kodbitar` (av R eller andra språk) och en `YAML-header` (som styr hur utdata som PDF ska formateras) i ett `Markdown-dokument`. Som sådan fungerar det som en föredömlig författarram för data science eftersom det låter dig kombinera din kod, dess utdata och dina tankar genom att låta dig skriva ner dem i Markdown. Dessutom kan R Markdown-dokument renderas till utdataformat som PDF, HTML eller Word.
> **En notering om quiz**: Alla quiz finns i [Quiz App-mappen](../../quiz-app), totalt 52 quiz med tre frågor i varje. De är länkade från lektionerna men quiz-appen kan köras lokalt; följ instruktionerna i `quiz-app`-mappen för att hosta lokalt eller distribuera till Azure.
| Lektion Nummer | Ämne | Lektion Grupp | Lärandemål | Länkad Lektion | Författare |
| 01 | Introduktion till maskininlärning | [Introduction](1-Introduction/README.md) | Lär dig grundläggande koncept bakom maskininlärning | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Maskininlärningens historia | [Introduction](1-Introduction/README.md) | Lär dig historien bakom detta område | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen och Amy |
| 03 | Rättvisa och maskininlärning | [Introduction](1-Introduction/README.md) | Vilka är de viktiga filosofiska frågorna kring rättvisa som studenter bör överväga vid byggande och användning av ML-modeller? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Tekniker för maskininlärning | [Introduction](1-Introduction/README.md) | Vilka tekniker använder ML-forskare för att bygga ML-modeller? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris och Jen |
| 05 | Introduktion till regression | [Regression](2-Regression/README.md) | Kom igång med Python och Scikit-learn för regressionsmodeller | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Nordamerikanska pumpapriser 🎃| [Regression](2-Regression/README.md) | Visualisera och rensa data som förberedelse för ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Nordamerikanska pumpapriser 🎃 | [Regression](2-Regression/README.md) | Bygg linjära och polynomiska regressionsmodeller | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen och Dmitry • Eric Wanjau |
| 08 | Nordamerikanska pumpapriser 🎃 | [Regression](2-Regression/README.md) | Bygg en logistisk regressionsmodell | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | En webbapp 🔌 | [Web App](3-Web-App/README.md) | Bygg en webbapp för att använda din tränade modell | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Introduktion till klassificering | [Classification](4-Classification/README.md) | Rensa, förbered och visualisera din data; introduktion till klassificering | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen och Cassie • Eric Wanjau |
| 11 | Utsökta asiatiska och indiska kök 🍜 | [Classification](4-Classification/README.md) | Introduktion till klassificerare | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen och Cassie • Eric Wanjau |
| 12 | Utsökta asiatiska och indiska kök 🍜 | [Classification](4-Classification/README.md) | Fler klassificerare | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen och Cassie • Eric Wanjau |
| 13 | Utsökta asiatiska och indiska kök 🍜 | [Classification](4-Classification/README.md) | Bygg en rekommendations-webbapp med din modell | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Introduktion till klustring | [Clustering](5-Clustering/README.md) | Rensa, förbered och visualisera din data; Introduktion till klustring | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 16 | Introduktion till naturlig språkbehandling ☕️ | [Natural language processing](6-NLP/README.md) | Lär dig grunderna i NLP genom att bygga en enkel bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Vanliga NLP-uppgifter ☕️ |[Natural language processing](6-NLP/README.md) | Fördjupa din NLP-kunskap genom att förstå vanliga uppgifter när man arbetar med språkstrukturer | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Översättning och sentimentsanalys ♥️ | [Natural language processing](6-NLP/README.md) | Översättning och sentimentsanalys med Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Romantiska hotell i Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentimentsanalys med hotellrecensioner 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Romantiska hotell i Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentimentsanalys med hotellrecensioner 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Introduktion till tidsserieprognoser |[Time series](7-TimeSeries/README.md) | Introduktion till tidsserieprognoser | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ Världens elförbrukning ⚡️ - tidsserieprognoser med ARIMA | [Time series](7-TimeSeries/README.md) | Tidsserieprognoser med ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Världens elförbrukning ⚡️ - tidsserieprognoser med SVR | [Time series](7-TimeSeries/README.md) | Tidsserieprognoser med Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Introduktion till förstärkningsinlärning | [Reinforcement learning](8-Reinforcement/README.md) | Introduktion till förstärkningsinlärning med Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Hjälp Peter undvika vargen! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Förstärkningsinlärning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Postscript | Skarpa ML-scenarion och tillämpningar | [ML in the Wild](9-Real-World/README.md) | Intressanta och avslöjande verkliga tillämpningar av klassisk ML | [Lesson](9-Real-World/1-Applications/README.md) | Team |
| Postscript | Modellfelsökning i ML med RAI dashboard | [ML in the Wild](9-Real-World/README.md) | Modellfelsökning i maskininlärning med Responsible AI dashboard-komponenter | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md)| Ruth Yakubu |
> **En notis om språk**: Dessa lektioner är främst skrivna i Python, men många finns även tillgängliga på R. För att genomföra en R-lektion, gå till `/solution`-mappen och leta efter R-lektioner. De inkluderar en .rmd-filändelse som representerar en **R Markdown**-fil, vilket enkelt kan definieras som en inbäddning av `kodblock` (av R eller andra språk) och en `YAML-header` (som styr hur utdata ska formateras, såsom PDF) i ett `Markdown-dokument`. Som sådan fungerar det som en exemplifierande författarramverk för datavetenskap eftersom det låter dig kombinera din kod, dess utdata och dina tankar genom att tillåta dig att skriva ner dem i Markdown. Dessutom kan R Markdown-dokument renderas till utdatakällor som PDF, HTML eller Word.
> **En notis om quiz**: Alla quiz finns i [Quiz App-mappen](../../quiz-app), totalt 52 quiz med tre frågor vardera. De är länkade från inom lektionerna men quiz-appen kan köras lokalt; följ instruktionerna i `quiz-app`-mappen för att köra lokalt eller distribuera till Azure.
| Lektion Nummer | Ämne | Lektion Gruppindelning | Lärandemål | Länkad Lektion | Författare |
| 01 | Introduktion till maskininlärning | [Introduktion](1-Introduction/README.md) | Lär dig de grundläggande koncepten bakom maskininlärning | [Lektion](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Historien om maskininlärning | [Introduktion](1-Introduction/README.md) | Lär dig historien bakom detta område | [Lektion](1-Introduction/2-history-of-ML/README.md) | Jen och Amy |
| 03 | Rättvisa och maskininlärning | [Introduktion](1-Introduction/README.md) | Vilka är de viktiga filosofiska frågorna kring rättvisa som studenter bör överväga när de bygger och använder ML-modeller? | [Lektion](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Tekniker för maskininlärning | [Introduktion](1-Introduction/README.md) | Vilka tekniker använder ML-forskare för att bygga ML-modeller? | [Lektion](1-Introduction/4-techniques-of-ML/README.md) | Chris och Jen |
| 05 | Introduktion till regression | [Regression](2-Regression/README.md) | Kom igång med Python och Scikit-learn för regressionsmodeller | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Nordamerikanska pumpapriser 🎃 | [Regression](2-Regression/README.md) | Visualisera och rengör data inför ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Nordamerikanska pumpapriser 🎃 | [Regression](2-Regression/README.md)| Bygg linjära och polynomiska regressionsmodeller | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen och Dmitry • Eric Wanjau |
| 08 | Nordamerikanska pumpapriser 🎃 | [Regression](2-Regression/README.md) | Bygg en logistisk regressionsmodell | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | En webapp 🔌 | [Web App](3-Web-App/README.md) | Bygg en webbapp för att använda din tränade modell | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Introduktion till klassificering | [Classification](4-Classification/README.md) | Rengör, förbered och visualisera din data; introduktion till klassificering | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen och Cassie • Eric Wanjau |
| 11 | Läcker asiatisk och indisk matlagning 🍜 | [Classification](4-Classification/README.md) | Introduktion till klassificerare | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen och Cassie • Eric Wanjau |
| 12 | Läcker asiatisk och indisk matlagning 🍜 | [Classification](4-Classification/README.md) | Fler klassificerare | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen och Cassie • Eric Wanjau |
| 13 | Läcker asiatisk och indisk matlagning 🍜 | [Classification](4-Classification/README.md) | Bygg en rekommenderande webbapp med hjälp av din modell | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Introduktion till klustring | [Clustering](5-Clustering/README.md) | Rengör, förbered och visualisera din data; introduktion till klustring | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 16 | Introduktion till naturlig språkbehandling ☕️ | [Natural language processing](6-NLP/README.md)| Lär dig grunderna i NLP genom att bygga en enkel bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Vanliga NLP-uppgifter ☕️ | [Natural language processing](6-NLP/README.md) | Fördjupa din NLP-kunskap genom att förstå vanliga uppgifter vid hantering av språkliga strukturer | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Översättning och sentimentanalys ♥️ | [Natural language processing](6-NLP/README.md) | Översättning och sentimentanalys med Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Romantiska hotell i Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentimentanalys med hotellrecensioner 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Romantiska hotell i Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentimentanalys med hotellrecensioner 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Introduktion till tidsserieprognoser | [Time series](7-TimeSeries/README.md)| Introduktion till tidsserieprognoser | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ Världens elförbrukning ⚡️ - tidsserieprognoser med ARIMA | [Time series](7-TimeSeries/README.md) | Tidsserieprognoser med ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Världens elförbrukning ⚡️ - tidsserieprognoser med SVR | [Time series](7-TimeSeries/README.md) | Tidsserieprognoser med Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Introduktion till förstärkningsinlärning | [Reinforcement learning](8-Reinforcement/README.md) | Introduktion till förstärkningsinlärning med Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Hjälp Peter undvika vargen! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Förstärkningsinlärning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Efterskrift | Verkliga ML-scenarier och tillämpningar | [ML in the Wild](9-Real-World/README.md) | Intressanta och avslöjande verkliga tillämpningar av klassisk ML | [Lektion](9-Real-World/1-Applications/README.md) | Team |
| Efterskrift | Modellfelsökning i ML med hjälp av RAI dashboard | [ML in the Wild](9-Real-World/README.md)| Modellfelsökning i maskininlärning med Responsible AI-dashboardkomponenter | [Lektion](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [hitta alla ytterligare resurser för denna kurs i vår Microsoft Learn-samling](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## Offlineåtkomst
Du kan köra denna dokumentation offline genom att använda [Docsify](https://docsify.js.org/#/). Forka detta repo, [installera Docsify](https://docsify.js.org/#/quickstart) på din lokala dator, och sedan i rotmappen av detta repo, skriv `docsify serve`. Webbplatsen kommer att vara tillgänglig på port 3000 på din lokala värd: `localhost:3000`.
Du kan köra denna dokumentation offline genom att använda [Docsify](https://docsify.js.org/#/). Forka detta repo, [installera Docsify](https://docsify.js.org/#/quickstart) på din lokala maskin, och skriv sedan `docsify serve` i root-mappen av detta repo. Webbplatsen kommer att serveras på port 3000 på din localhost: `localhost:3000`.
## PDF:er
## PDF-filer
Hitta en pdf av kursplanen med länkar [här](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
## 🎒 Andra kurser
Vårt team producerar andra kurser! Kolla in:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agents
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Generativ AI-serie
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
---
### Kärnkunskap
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
### Kärninlärning
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Copilot-serie
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
Om du fastnar eller har frågor om att bygga AI-appar. Gå med i diskussioner med andra elever och erfarna utvecklare om MCP. Det är en stödjande gemenskap där frågor är välkomna och kunskap delas fritt.
Om du fastnar eller har frågor när du lär dig maskininlärning eller bygger AI-applikationer, oroa dig inte — hjälp finns tillgänglig.
- Gå igenom anteckningsböcker efter varje lektion för bättre förståelse.
- Öva på att implementera algoritmer själv.
- Utforska verkliga datamängder med hjälp av inlärda koncept.
- Gå igenom anteckningsböckerna efter varje lektion för bättre förståelse.
- Öva på att implementera algoritmer på egen hand.
- Utforska verkliga dataset med hjälp av inlärda koncept.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Ansvarsfriskrivning**:
Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, var god notera att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som kan uppstå vid användning av denna översättning.
Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, vänligen observera att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår från användningen av denna översättning.
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> คุณสามารถดูวิธีการคำนวณค่านี้ได้จากเว็บไซต์ [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) และสามารถไปที่ [เครื่องมือคำนวณ Least-squares](https://www.mathsisfun.com/data/least-squares-calculator.html) เพื่อดูผลกระทบของค่าตัวเลขต่อเส้นได้
## ความสัมพันธ์
## ความสัมพันธ์ (Correlation)
อีกคำหนึ่งที่ต้องเข้าใจคือ **สัมประสิทธิ์สหสัมพันธ์** ระหว่างตัวแปร X และ Y ที่กำหนด โดยใช้ scatterplot คุณสามารถเห็นสัมประสิทธิ์นี้ได้อย่างรวดเร็ว กราฟที่มีจุดกระจายเรียงเป็นเส้นตรงจะมีความสัมพันธ์สูง แต่กราฟที่จุดกระจายกระจัดกระจายไปทั่วระหว่าง X และ Y จะมีความสัมพันธ์ต่ำ
อีกคำหนึ่งที่ต้องเข้าใจคือ **สัมประสิทธิ์สหสัมพันธ์ (Correlation Coefficient)** ระหว่างตัวแปร X และ Y ที่กำหนด ด้วยการใช้กราฟกระจาย คุณจะมองเห็นค่าสัมประสิทธิ์นี้อย่างรวดเร็ว กราฟที่มีจุดกระจายในเส้นตรงเรียงตัวกันอย่างดีจะมีค่าสหสัมพันธ์สูง แต่กราฟที่จุดกระจายกระจัดกระจายไม่เป็นระเบียบระหว่าง X และ Y จะมีค่าสหสัมพันธ์ต่ำ
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> [ค้นหาทรัพยากรเพิ่มเติมสำหรับคอร์สนี้ในคอลเลกชัน Microsoft Learn ของเรา](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> [ค้นหาทรัพยากรเพิ่มเติมสำหรับหลักสูตรนี้ได้ที่คอลเลกชัน Microsoft Learn ของเรา](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
บทเรียนบางบทมีวิดีโอสั้นๆ คุณสามารถหาบทเรียนเหล่านี้ได้ในแต่ละบท หรือบน [เพลย์ลิสต์ ML for Beginners บนช่อง Microsoft Developer YouTube](https://aka.ms/ml-beginners-videos) โดยคลิกที่ภาพด้านล่าง
บทเรียนบางส่วนมีวิดีโอสั้นให้ดู คุณสามารถหาได้ในบทเรียน หรือดูได้ที่ [เพลย์ลิสต์ ML for Beginners บนช่อง Microsoft Developer YouTube](https://aka.ms/ml-beginners-videos) โดยคลิกที่ภาพด้านล่าง
[](https://aka.ms/ml-beginners-videos)
| 04 | เทคนิคสำหรับการเรียนรู้ของเครื่อง | [Introduction](1-Introduction/README.md) | นักวิจัย ML ใช้เทคนิคอะไรในการสร้างโมเดล ML? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| บทส่งท้าย | กรณีศึกษาและแอปพลิเคชัน ML ในโลกจริง | [ML in the Wild](9-Real-World/README.md) | แอปพลิเคชันที่น่าสนใจและเปิดเผยของ ML แบบคลาสสิกในโลกจริง | [Lesson](9-Real-World/1-Applications/README.md) | Team |
| บทส่งท้าย | การดีบักโมเดล ML ด้วยแดชบอร์ด RAI | [ML in the Wild](9-Real-World/README.md) | การดีบักโมเดล ML ด้วยส่วนประกอบแดชบอร์ด Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
| 04 | เทคนิคสำหรับการเรียนรู้ของเครื่อง | [Introduction](1-Introduction/README.md) | นักวิจัย ML ใช้เทคนิคอะไรในการสร้างโมเดล ML? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| ปัจฉิมบท | กรณีศึกษาการใช้งาน ML ในโลกจริง | [ML in the Wild](9-Real-World/README.md) | การใช้งานจริงที่น่าสนใจและเปิดเผยของ ML คลาสสิก | [Lesson](9-Real-World/1-Applications/README.md) | Team |
| ปัจฉิมบท | การดีบักโมเดลใน ML โดยใช้แดชบอร์ด RAI | [ML in the Wild](9-Real-World/README.md) | การดีบักโมเดลใน Machine Learning โดยใช้คอมโพเนนต์แดชบอร์ด Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [ค้นหาทรัพยากรเพิ่มเติมทั้งหมดสำหรับหลักสูตรนี้ในคอลเลกชัน Microsoft Learn ของเรา](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
@ -189,7 +190,7 @@ Cloud Advocates ที่ Microsoft ยินดีนำเสนอหลั
---
### ชุดปัญญาประดิษฐ์สร้างสรรค์
### ชุดการเรียนรู้ AI สร้างสรรค์
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
@ -197,7 +198,7 @@ Cloud Advocates ที่ Microsoft ยินดีนำเสนอหลั
---
### การเรียนรู้แกนหลัก
### การเรียนรู้พื้นฐาน
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
@ -216,22 +217,33 @@ Cloud Advocates ที่ Microsoft ยินดีนำเสนอหลั
## ขอความช่วยเหลือ
หากคุณติดขัดหรือมีคำถามเกี่ยวกับการสร้างแอป AI เข้าร่วมกับผู้เรียนและนักพัฒนาที่มีประสบการณ์ในการอภิปรายเกี่ยวกับ MCP เป็นชุมชนที่ให้การสนับสนุนซึ่งยินดีต้อนรับคำถามและแบ่งปันความรู้กันอย่างเสรี
ถ้าคุณติดขัดหรือมีคำถามในขณะเรียนรู้การเรียนรู้ของเครื่องหรือสร้างแอป AI ไม่ต้องกังวล — มีความช่วยเหลือให้ได้