Δέντρο αποφάσεων
- Προηγούμενη σελίδα Εκτύπωση
- Επόμενη σελίδα Δέντρο αποφάσεων
Αξιολόγηση μοντέλου
Στη μηχανική μάθηση, δημιουργούμε μοντέλα για να προβλέψουμε τα αποτελέσματα ορισμένων συμβάντων, όπως στο προηγούμενο κεφάλαιο όταν καταλάβαμε το βάρος και το όγκο του κινητήρα, προβλέψαμε τις εκπομπές CO2 του αυτοκινήτου.
Για να αξιολογήσουμε αν το μοντέλο είναι αρκετά καλό, μπορούμε να χρησιμοποιήσουμε έναν τρόπο που ονομάζεται εκπαίδευση/δοκιμή.
Τι είναι η εκπαίδευση/δοκιμή
Η εκπαίδευση/δοκιμή είναι ένας τρόπος μέτρησης της ακρίβειας του μοντέλου.
Ο λόγος που λέγεται εκπαίδευση/δοκιμή είναι ότι διαιρούμε τη βάση δεδομένων σε δύο ομάδες: σύνολο εκπαίδευσης και σύνολο δοκιμών.
80% για εκπαίδευση, 20% για δοκιμή.
Μπορείτε να χρησιμοποιήσετε το σύνολο εκπαίδευσης για να εκπαιδεύσετε το μοντέλο.
Μπορείτε να χρησιμοποιήσετε το σύνολο δοκιμών για να δοκιμάσετε το μοντέλο.
Η εκπαίδευση του μοντέλου σημαίνει τη δημιουργία του μοντέλου.
Η δοκιμή του μοντέλου σημαίνει τη δοκιμή της ακρίβειας του μοντέλου.
Αρχίζουμε από τη βάση δεδομένων.
Αρχίζουμε από την δεδομένη βάση δεδομένων που θα δοκιμάσουμε.
Η συλλογή δεδομένων μας παρουσιάζει 100 πελάτες καταστημάτων και τις συνήθειες αγοράς τους.
Παράδειγμα
import numpy import matplotlib.pyplot as plt numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x plt.scatter(x, y) plt.show()
Τα αποτελέσματα:
Ο κάθετη άξονας αντιπροσωπεύει το λεπτό που περνά πριν την αγορά.
Η οριζόντια άξονας αντιπροσωπεύει το ποσό που δαπανάται στην αγορά.

Διαχωρισμός εκπαίδευσης/δοκιμής
Η συλλογή εκπαίδευσης πρέπει να είναι η τυχαία επιλογή του 80% των αρχικών δεδομένων.
Η συλλογή δοκιμής πρέπει να είναι το 20% που απομένει.
train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:]
Εμφάνιση συλλογής εκπαίδευσης
Εμφάνιση διαγράμματος σποράς όπως στο σύνολο εκπαίδευσης:
Παράδειγμα
plt.scatter(train_x, train_y) plt.show()
Τα αποτελέσματα:
Φαίνεται να είναι παρόμοια με την αρχική συλλογή δεδομένων, οπότε φαίνεται να είναι μια λογική επιλογή:

Εμφάνιση συλλογής δοκιμής
Για να διασφαλίσουμε ότι η συλλογή δοκιμής δεν είναι εντελώς διαφορετική, πρέπει να δούμε και τη συλλογή δοκιμής.
Παράδειγμα
plt.scatter(test_x, test_y) plt.show()
Τα αποτελέσματα:
Η συλλογή δοκιμής φαίνεται να είναι παρόμοια με την αρχική συλλογή δεδομένων:

Προσαρμογή δεδομένων
Τι είναι το σύνολο δεδομένων; Πιστεύω ότι η πιο κατάλληλη προσαρμογή είναι η πολυωνυμική αναγνωριστική σχέση, οπότε ας ζωγραφίσουμε μια γραμμή πολυωνυμικής αναγνωριστικής σχέσης.
Για να ζωγραφίσουμε μια γραμμή που περνάει από τα δεδομένα, χρησιμοποιούμε του moduлю matplotlib plott()
Μέθοδος:
Παράδειγμα
Διαγράψτε την πολυωνυμική αναγνωριστική γραμμή που περνάει από τα δεδομένα;
import numpy import matplotlib.pyplot as plt numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:] mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4)) myline = numpy.linspace(0, 6, 100) plt.scatter(train_x, train_y) plt.plot(myline, mymodel(myline)) plt.show()
Τα αποτελέσματα:

Το αποτέλεσμα μπορεί να υποστηρίξει την πρότασή μας για την προσαρμογή πολυωνυμικής αναγνωριστικής σχέσης στα δεδομένα, ακόμα και αν προσπαθήσουμε να προβλέψουμε τιμές εκτός του συνόλου δεδομένων και μας δίνει μερικά παράξενα αποτελέσματα. Για παράδειγμα: η γραμμή αυτή δείχνει ότι ένας πελάτης που περνά 6 λεπτά στο κατάστημα θα ολοκληρώσει μια αγορά αξίας 200.
Αλλά τι για την R-squared score; Η R-squared score δείχνει καλά την προσαρμογή του συνόλου δεδομένων στο μοντέλο.
R2
Θυμάστε το R2, γνωστό και ως R squared (R-squared);
Ο οποίος μετρά τη σχέση μεταξύ των άξονων x και y, με τιμές από 0 έως 1, όπου 0 σημαίνει ότι δεν υπάρχει σχέση και 1 σημαίνει πλήρη σχέση.
Ο модуль sklearn έχει ένα όνομα rs_score()
Η μέθοδος, η οποία θα μας βοηθήσει να βρούμε αυτή τη σχέση.
Εδώ, πρέπει να μετρήσουμε τη σχέση μεταξύ του χρόνου που περνά ο πελάτης στο κατάστημα και του ποσού που δαπανά.
Παράδειγμα
Πώς είναι η ταινία των δεδομένων εκπαίδευσης στην πολυωνυμική αναγνωριστική σχέση;
import numpy from sklearn.metrics import r2_score numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:] mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4)) r2 = r2_score(train_y, mymodel(train_x)) print(r2)
Σημειώσεις:Το αποτέλεσμα 0.799 δείχνει καλή σχέση.
Εισαγωγή συλλογής δοκιμής
Προς το παρόν, τουλάχιστον όσον αφορά τα δεδομένα εκπαίδευσης, έχουμε δημιουργήσει ένα καλή μοντέλο.
Καθώς, πρέπει να χρησιμοποιήσουμε δεδομένα δοκιμής για να δοκιμάσουμε το μοντέλο και να ελέγξουμε αν δίνει τα ίδια αποτελέσματα.
Παράδειγμα
Ας确定了在使用测试数据时的R2分数:
import numpy from sklearn.metrics import r2_score numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:] mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4)) r2 = r2_score(test_y, mymodel(test_x)) print(r2)
Σημειώσεις:Το αποτέλεσμα 0,809 δείχνει ότι το μοντέλο είναι κατάλληλο και για το σύνολο των δεδομένων δοκιμής, είμαστε βέβαιοι ότι μπορούμε να χρησιμοποιήσουμε το μοντέλο για την πρόβλεψη μελλοντικών τιμών.
Πρόβλεψη τιμών
Τώρα που έχουμε διασφαλίσει ότι το μοντέλο μας είναι καλή, μπορούμε να ξεκινήσουμε να προβλέπουμε νέες τιμές.
Παράδειγμα
Αν ο πελάτης που αγοράζει μείνει στο κατάστημα για 5 λεπτά, πόσα χρήματα θα δαπανήσει;
print(mymodel(5))
Η πρόβλεψη αυτού του παραδείγματος είναι ότι ο πελάτης έχει δαπανήσει 22,88 δολάρια, φαίνεται να ταιριάζει με το γράφημα:

- Προηγούμενη σελίδα Εκτύπωση
- Επόμενη σελίδα Δέντρο αποφάσεων