Εικόνα από Editor
Η Scikit-learn είναι μια από τις πιο συχνά χρησιμοποιούμενες βιβλιοθήκες μηχανικής μάθησης που είναι κατασκευασμένες σε python. Η δημοτικότητά του μπορεί να αποδοθεί στην εύκολη και συνεπή δομή κώδικα που είναι φιλική για αρχάριους προγραμματιστές. Επίσης, υπάρχει διαθέσιμο υψηλό επίπεδο υποστήριξης μαζί με ευελιξία για την ενσωμάτωση λειτουργιών τρίτων, γεγονός που καθιστά τη βιβλιοθήκη ισχυρή και κατάλληλη για παραγωγή. Η βιβλιοθήκη περιέχει πολλαπλά μοντέλα μηχανικής μάθησης για ταξινόμηση, παλινδρόμηση και ομαδοποίηση. Σε αυτό το σεμινάριο, θα διερευνήσουμε το πρόβλημα της ταξινόμησης πολλαπλών κλάσεων μέσω διαφόρων αλγορίθμων. Ας βουτήξουμε κατευθείαν σε αυτό και ας δημιουργήσουμε τα μοντέλα μας που μαθαίνουν scikit.
pip install scikit-learn
Θα χρησιμοποιήσουμε το σύνολο δεδομένων "Wine" που είναι διαθέσιμο στη μονάδα συνόλων δεδομένων του scikit-learn. Αυτό το σύνολο δεδομένων αποτελείται από 178 δείγματα και 3 κατηγορίες συνολικά. Το σύνολο δεδομένων είναι ήδη προεπεξεργασμένο και έχει μετατραπεί σε διανύσματα χαρακτηριστικών, επομένως, μπορούμε να το χρησιμοποιήσουμε απευθείας για να εκπαιδεύσουμε τα μοντέλα μας.
from sklearn.datasets import load_wine X, y = load_wine(return_X_y=True)
Θα κρατήσουμε το 67% των δεδομένων για την εκπαίδευση και το υπόλοιπο 33% για τις δοκιμές.
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.33, random_state=42
)
Τώρα, θα πειραματιστούμε με 5 διαφορετικά μοντέλα διαφορετικής πολυπλοκότητας και θα αξιολογήσουμε τα αποτελέσματά τους στο σύνολο δεδομένων μας.
model_lr = LogisticRegression()
model_lr.fit(X_train, y_train)
y_pred_lr = model_lr.predict(X_test) print("Accuracy Score: ", accuracy_score(y_pred_lr, y_test))
print(classification_report(y_pred_lr, y_test))
Παραγωγή
Accuracy Score: 0.9830508474576272 precision recall f1-score support 0 1.00 0.95 0.98 21 1 0.96 1.00 0.98 23 2 1.00 1.00 1.00 15 accuracy 0.98 59 macro avg 0.99 0.98 0.98 59
weighted avg 0.98 0.98 0.98 59
model_knn = KNeighborsClassifier(n_neighbors=1)
model_knn.fit(X_train, y_train)
y_pred_knn = model_knn.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_knn, y_test))
print(classification_report(y_pred_knn, y_test))
Παραγωγή
Accuracy Score: 0.7796610169491526 precision recall f1-score support 0 0.90 0.78 0.84 23 1 0.75 0.82 0.78 22 2 0.67 0.71 0.69 14 accuracy 0.78 59 macro avg 0.77 0.77 0.77 59
weighted avg 0.79 0.78 0.78 59
Με την αλλαγή της παραμέτρου 'n_neighbors=2' παρατηρούμε μείωση της τιμής της ακρίβειας. Ως εκ τούτου, δείχνει ότι τα δεδομένα είναι αρκετά απλά και επιτυγχάνουν καλύτερη μάθηση με έναν μόνο γείτονα που πρέπει να ληφθεί υπόψη.
Παραγωγή
Accuracy Score: 0.6949152542372882 precision recall f1-score support 0 0.90 0.72 0.80 25 1 0.75 0.69 0.72 26 2 0.33 0.62 0.43 8 accuracy 0.69 59 macro avg 0.66 0.68 0.65 59
weighted avg 0.76 0.69 0.72 59
from sklearn.naive_bayes import GaussianNB model_nb = GaussianNB()
model_nb.fit(X_train, y_train)
y_pred_nb = model_nb.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_nb, y_test))
print(classification_report(y_pred_nb, y_test))
Παραγωγή
Accuracy Score: 1.0 precision recall f1-score support 0 1.00 1.00 1.00 20 1 1.00 1.00 1.00 24 2 1.00 1.00 1.00 15 accuracy 1.00 59 macro avg 1.00 1.00 1.00 59
weighted avg 1.00 1.00 1.00 59
from sklearn.tree import DecisionTreeClassifier model_dtclassifier = DecisionTreeClassifier()
model_dtclassifier.fit(X_train, y_train)
y_pred_dtclassifier = model_dtclassifier.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_dtclassifier, y_test))
print(classification_report(y_pred_dtclassifier, y_test))
Παραγωγή
Accuracy Score: 0.9661016949152542 precision recall f1-score support 0 0.95 0.95 0.95 20 1 1.00 0.96 0.98 25 2 0.93 1.00 0.97 14 accuracy 0.97 59 macro avg 0.96 0.97 0.97 59
weighted avg 0.97 0.97 0.97 59
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import RandomizedSearchCV def get_best_parameters(): params = { "n_estimators": [10, 50, 100], "max_features": ["auto", "sqrt", "log2"], "max_depth": [5, 10, 20, 50], "min_samples_split": [2, 4, 6], "min_samples_leaf": [2, 4, 6], "bootstrap": [True, False], } model_rfclassifier = RandomForestClassifier(random_state=42) rf_randomsearch = RandomizedSearchCV( estimator=model_rfclassifier, param_distributions=params, n_iter=5, cv=3, verbose=2, random_state=42, ) rf_randomsearch.fit(X_train, y_train) best_parameters = rf_randomsearch.best_params_ print("Best Parameters:", best_parameters) return best_parameters parameters_rfclassifier = get_best_parameters() model_rfclassifier = RandomForestClassifier( **parameters_rfclassifier, random_state=42
) model_rfclassifier.fit(X_train, y_train) y_pred_rfclassifier = model_rfclassifier.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_rfclassifier, y_test))
print(classification_report(y_pred_rfclassifier, y_test))
Παραγωγή
Best Parameters: {'n_estimators': 100, 'min_samples_split': 6, 'min_samples_leaf': 4, 'max_features': 'log2', 'max_depth': 5, 'bootstrap': True}
Accuracy Score: 0.9830508474576272 precision recall f1-score support 0 1.00 0.95 0.98 21 1 0.96 1.00 0.98 23 2 1.00 1.00 1.00 15 accuracy 0.98 59 macro avg 0.99 0.98 0.98 59
weighted avg 0.98 0.98 0.98 59
Σε αυτόν τον αλγόριθμο, πραγματοποιήσαμε κάποιο συντονισμό υπερπαραμέτρων για να επιτύχουμε την καλύτερη ακρίβεια. Ορίσαμε ένα πλέγμα παραμέτρων που αποτελείται από πολλαπλές τιμές για να διαλέξετε για κάθε παράμετρο. Επιπλέον, χρησιμοποιήσαμε τον αλγόριθμο Randomized Search CV για να αναζητήσουμε τον καλύτερο χώρο παραμέτρων για το μοντέλο. Τέλος τροφοδοτούμε τις παραμέτρους που λαμβάνονται στον ταξινομητή και εκπαιδεύουμε το μοντέλο.
Μοντέλα | Ακρίβεια | Παρατηρήσεις |
Λογιστική παλινδρόμηση | 98.30% | Επιτυγχάνει μεγάλη ακρίβεια. Το μοντέλο μπορεί να γενικεύει καλά το σύνολο δεδομένων δοκιμής. |
K-Κοντινότεροι γείτονες | 77.96% | Ο αλγόριθμος δεν είναι σε θέση να μάθει καλά την αναπαράσταση δεδομένων. |
Ναϊβ Μπέις | 100% | Το μοντέλο είναι λιγότερο περίπλοκο, επομένως υπερπροσαρμόζει τα δεδομένα για να αποκτήσει απόλυτη ακρίβεια. |
Ταξινόμηση δέντρων απόφασης | 96.61% | Επιτυγχάνει αξιοπρεπή ακρίβεια. |
Ταξινόμηση τυχαίων δασών | 98.30% | Όντας μια προσέγγιση που βασίζεται σε σύνολο, αποδίδει καλύτερα από το Decision Tree. Η εκτέλεση συντονισμού υπερπαραμέτρων το κάνει να επιτυγχάνει παρόμοια ακρίβεια με την λογιστική παλινδρόμηση. |
Σε αυτό το σεμινάριο, μάθαμε πώς να ξεκινήσουμε να χτίζουμε και να εκπαιδεύουμε μοντέλα μηχανικής μάθησης στο scikit-learn. Υλοποιήσαμε και αξιολογήσαμε μερικούς αλγόριθμους για να έχουμε μια βασική ιδέα για την απόδοσή τους. Κάποιος μπορεί πάντα να υιοθετήσει προηγμένες στρατηγικές για μηχανική χαρακτηριστικών, συντονισμό υπερπαραμέτρων ή εκπαίδευση για τη βελτίωση της απόδοσης. Για να διαβάσετε περισσότερα σχετικά με τις λειτουργίες που προσφέρει το scikit-learn, μεταβείτε στην επίσημη τεκμηρίωση - Εισαγωγή στη μηχανική μάθηση με το scikit-learn, Μηχανική μάθηση σε Python με scikit-learn.
Yesha Shastri είναι ένας παθιασμένος προγραμματιστής και συγγραφέας τεχνητής νοημοσύνης που ακολουθεί μεταπτυχιακό στη Μηχανική Μάθηση από το Πανεπιστήμιο του Μόντρεαλ. Η Yesha ενδιαφέρεται να εξερευνήσει υπεύθυνες τεχνικές τεχνητής νοημοσύνης για την επίλυση προκλήσεων που ωφελούν την κοινωνία και να μοιραστεί τις γνώσεις της με την κοινότητα.
- SEO Powered Content & PR Distribution. Ενισχύστε σήμερα.
- Platoblockchain. Web3 Metaverse Intelligence. Ενισχύθηκε η γνώση. Πρόσβαση εδώ.
- πηγή: https://www.kdnuggets.com/getting-started-with-scikit-learn-for-classification-in-machine-learning.html?utm_source=rss&utm_medium=rss&utm_campaign=getting-started-with-scikit-learn-for-classification-in-machine-learning
- 1
- 10
- 100
- 67
- 77
- 84
- 9
- 98
- a
- Ικανός
- Σχετικά
- Απόλυτος
- ακρίβεια
- Κατορθώνω
- ενστερνίζομαι
- προηγμένες
- AI
- αλγόριθμος
- αλγόριθμοι
- ήδη
- πάντοτε
- και
- πλησιάζω
- αυτόματη
- διαθέσιμος
- βασικός
- όφελος
- ΚΑΛΎΤΕΡΟΣ
- Καλύτερα
- Bootstrap
- χτίζω
- χτισμένο
- προκλήσεις
- αλλαγή
- Επιλέξτε
- τάξεις
- ταξινόμηση
- ομαδοποίηση
- κωδικός
- συνήθως
- κοινότητα
- συγκρότημα
- πολυπλοκότητα
- Εξετάστε
- συνεπής
- Αποτελείται από
- Περιέχει
- μετατρέπονται
- ημερομηνία
- σύνολα δεδομένων
- απόφαση
- μείωση
- Εργολάβος
- προγραμματιστές
- διαφορετικές
- διαφέρουν
- κατευθείαν
- τεκμηρίωση
- κάθε
- Μηχανική
- αρκετά
- Αιθέρας (ΕΤΗ)
- αξιολογήσει
- αξιολόγηση
- πείραμα
- διερευνήσει
- Χαρακτηριστικό
- λίγοι
- Τελικά
- Ευελιξία
- δάσος
- φιλικό
- από
- λειτουργίες
- περαιτέρω
- παίρνω
- να πάρει
- εξαιρετική
- Πλέγμα
- κεφάλι
- Ψηλά
- Πως
- Πώς να
- HTML
- HTTPS
- Ρύθμιση υπερπαραμέτρων
- ιδέα
- εφαρμοστεί
- εισαγωγή
- βελτίωση
- in
- εγκαθιστώ
- ενσωματώσει
- IT
- Διατήρηση
- ΜΑΘΑΊΝΩ
- μάθει
- μάθηση
- Επίπεδο
- βιβλιοθήκες
- Βιβλιοθήκη
- μηχανή
- μάθηση μηχανής
- Macro
- ΚΑΝΕΙ
- κύριοι
- μοντέλο
- μοντέλα
- ενότητα
- περισσότερο
- πλέον
- πολλαπλούς
- παρατηρούμε
- λαμβάνεται
- προσφορές
- επίσημος ανώτερος υπάλληλος
- ONE
- παράμετρος
- παράμετροι
- παθιασμένος
- επίδοση
- εκτέλεση
- εκτελεί
- Πλάτων
- Πληροφορία δεδομένων Plato
- Πλάτωνα δεδομένα
- δημοτικότητα
- Ακρίβεια
- Πρόβλημα
- παραγωγή
- Python
- Τυχαία
- Διάβασε
- αντιπροσώπευση
- υπεύθυνος
- ΠΕΡΙΦΕΡΕΙΑ
- Αποτελέσματα
- απόδοση
- εύρωστος
- scikit-μάθετε
- Αναζήτηση
- Κοινοποίηση
- Δείχνει
- παρόμοιες
- Απλούς
- ενιαίας
- Κοινωνία
- SOLVE
- μερικοί
- Χώρος
- ξεκίνησε
- στρατηγικές
- δομή
- κατάλληλος
- υποστήριξη
- τεχνικές
- δοκιμή
- Δοκιμές
- Η
- τους
- τρίτους
- Μέσω
- προς την
- Σύνολο
- Τρένο
- Εκπαίδευση
- αληθής
- φροντιστήριο
- χρήση
- αξία
- Αξίες
- διάφορα
- Ποιό
- θα
- συγγραφέας
- X
- zephyrnet