Σε αυτό το σεμινάριο, θα μάθετε
- Τι είναι η ανάλυση συμπλέγματος;
- K-σημαίνει αλγόριθμος
- Βέλτιστο k
Τι είναι η ανάλυση συμπλέγματος;
Η ανάλυση συμπλέγματος είναι μέρος της μη εποπτευόμενης μάθησης . Ένα σύμπλεγμα είναι μια ομάδα δεδομένων που μοιράζονται παρόμοιες λειτουργίες. Μπορούμε να πούμε ότι η ανάλυση ομαδοποίησης αφορά περισσότερο την ανακάλυψη παρά μια πρόβλεψη. Το μηχάνημα αναζητά ομοιότητα στα δεδομένα. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε ανάλυση συμπλέγματος για την ακόλουθη εφαρμογή:
- Τμηματοποίηση πελατών: Αναζητά ομοιότητα μεταξύ ομάδων πελατών
- Ομαδοποίηση χρηματιστηρίου: Ομαδικό χρηματιστήριο με βάση τις επιδόσεις
- Μειώστε τη διάσταση ενός συνόλου δεδομένων ομαδοποιώντας τις παρατηρήσεις με παρόμοιες τιμές
Η ανάλυση ομαδοποίησης δεν είναι πολύ δύσκολο να εφαρμοστεί και έχει νόημα καθώς και δυνατότητα δράσης για τις επιχειρήσεις.
Η πιο εντυπωσιακή διαφορά μεταξύ εποπτευόμενης και μη εποπτευόμενης μάθησης έγκειται στα αποτελέσματα. Η μη εποπτευόμενη μάθηση δημιουργεί μια νέα μεταβλητή, την ετικέτα, ενώ η εποπτευόμενη μάθηση προβλέπει ένα αποτέλεσμα. Το μηχάνημα βοηθά τον επαγγελματία στην αναζήτηση να επισημάνει τα δεδομένα με βάση τη στενή σχέση. Εναπόκειται στον αναλυτή να κάνει χρήση των ομάδων και να τους δώσει ένα όνομα.
Ας κάνουμε ένα παράδειγμα για να κατανοήσουμε την έννοια της ομαδοποίησης. Για απλότητα, εργαζόμαστε σε δύο διαστάσεις. Έχετε δεδομένα σχετικά με τη συνολική δαπάνη των πελατών και τις ηλικίες τους. Για τη βελτίωση της διαφήμισης, η ομάδα μάρκετινγκ θέλει να στείλει πιο στοχευμένα email στους πελάτες τους.
Στο παρακάτω γράφημα, σχεδιάζετε τη συνολική δαπάνη και την ηλικία των πελατών.
library(ggplot2)df <- data.frame(age = c(18, 21, 22, 24, 26, 26, 27, 30, 31, 35, 39, 40, 41, 42, 44, 46, 47, 48, 49, 54),spend = c(10, 11, 22, 15, 12, 13, 14, 33, 39, 37, 44, 27, 29, 20, 28, 21, 30, 31, 23, 24))ggplot(df, aes(x = age, y = spend)) +geom_point()
Ένα μοτίβο είναι ορατό σε αυτό το σημείο
- Κάτω αριστερά, μπορείτε να δείτε νέους με χαμηλότερη αγοραστική δύναμη
- Η Άνω-Μέση αντανακλά τους ανθρώπους με μια δουλειά που μπορούν να ξοδέψουν περισσότερα
- Τέλος, οι ηλικιωμένοι με χαμηλότερο προϋπολογισμό.
Στο παραπάνω σχήμα, συγκεντρώνετε τις παρατηρήσεις με το χέρι και ορίζετε καθεμία από τις τρεις ομάδες. Αυτό το παράδειγμα είναι κάπως απλό και εξαιρετικά οπτικό. Εάν οι νέες παρατηρήσεις επισυνάπτονται στο σύνολο δεδομένων, μπορείτε να τις επισημάνετε εντός των κύκλων. Ορίζετε τον κύκλο με βάση την κρίση μας. Αντ 'αυτού, μπορείτε να χρησιμοποιήσετε το Machine Learning για να ομαδοποιήσετε τα δεδομένα αντικειμενικά.
Σε αυτό το σεμινάριο, θα μάθετε πώς να χρησιμοποιείτε τον αλγόριθμο k-means .
K-σημαίνει αλγόριθμος
Το K-mean είναι, χωρίς αμφιβολία, η πιο δημοφιλής μέθοδος ομαδοποίησης. Οι ερευνητές κυκλοφόρησαν τον αλγόριθμο πριν από δεκαετίες, και έχουν γίνει πολλές βελτιώσεις στο k-means.
Ο αλγόριθμος προσπαθεί να βρει ομάδες ελαχιστοποιώντας την απόσταση μεταξύ των παρατηρήσεων, που ονομάζονται τοπικές βέλτιστες λύσεις. Οι αποστάσεις μετρώνται με βάση τις συντεταγμένες των παρατηρήσεων. Για παράδειγμα, σε ένα δισδιάστατο χώρο, οι συντεταγμένες είναι απλές και.
Ο αλγόριθμος λειτουργεί ως εξής:
- Βήμα 1: Επιλέξτε ομάδες στο σχέδιο δυνατοτήτων τυχαία
- Βήμα 2: Ελαχιστοποιήστε την απόσταση μεταξύ του κέντρου συμπλέγματος και των διαφορετικών παρατηρήσεων ( κεντροειδές ). Καταλήγει σε ομάδες με παρατηρήσεις
- Βήμα 3: Μετακινήστε το αρχικό κεντροειδές στο μέσο όρο των συντεταγμένων μέσα σε μια ομάδα.
- Βήμα 4: Ελαχιστοποιήστε την απόσταση σύμφωνα με τα νέα κεντροειδή. Δημιουργούνται νέα όρια. Έτσι, οι παρατηρήσεις θα μετακινηθούν από τη μια ομάδα στην άλλη
- Επαναλάβετε έως ότου καμία παρατήρηση δεν αλλάξει ομάδες
Το K-σημαίνει συνήθως παίρνει την Ευκλείδεια απόσταση μεταξύ του χαρακτηριστικού και του χαρακτηριστικού:
Διατίθενται διάφορα μέτρα, όπως η απόσταση του Μανχάταν ή η απόσταση του Μινλόφσκι. Σημειώστε ότι, το K-mean επιστρέφει διαφορετικές ομάδες κάθε φορά που εκτελείτε τον αλγόριθμο. Θυμηθείτε ότι οι πρώτες αρχικές εικασίες είναι τυχαίες και υπολογίστε τις αποστάσεις έως ότου ο αλγόριθμος φτάσει σε ομοιογένεια εντός ομάδων. Δηλαδή, το k-mean είναι πολύ ευαίσθητο στην πρώτη επιλογή, και εκτός αν ο αριθμός των παρατηρήσεων και των ομάδων είναι μικρός, είναι σχεδόν αδύνατο να γίνει η ίδια ομαδοποίηση.
Επιλέξτε τον αριθμό των συστάδων
Μια άλλη δυσκολία που βρέθηκε με το k-mean είναι η επιλογή του αριθμού των συστάδων. Μπορείτε να ορίσετε μια υψηλή τιμή, δηλαδή έναν μεγάλο αριθμό ομάδων, για να βελτιώσετε τη σταθερότητα, αλλά μπορεί να καταλήξετε σε υπερβολικά δεδομένα. Overfitting σημαίνει ότι η απόδοση του μοντέλου μειώνεται σημαντικά για νέα δεδομένα που έρχονται. Το μηχάνημα έμαθε τις μικρές λεπτομέρειες του συνόλου δεδομένων και αγωνίστηκε να γενικεύσει το συνολικό μοτίβο.
Ο αριθμός των συστάδων εξαρτάται από τη φύση του συνόλου δεδομένων, τη βιομηχανία, τις επιχειρήσεις και ούτω καθεξής. Ωστόσο, υπάρχει ένας κανόνας για την επιλογή του κατάλληλου αριθμού συστάδων:
με ίσο με τον αριθμό παρατήρησης στο σύνολο δεδομένων.
Σε γενικές γραμμές, είναι ενδιαφέρον να ξοδεύετε χρόνους για να αναζητήσετε την καλύτερη αξία για να ταιριάζει με την επιχειρηματική ανάγκη.
Θα χρησιμοποιήσουμε το σύνολο δεδομένων των τιμών των προσωπικών υπολογιστών για να πραγματοποιήσουμε την ανάλυση ομαδοποίησης. Αυτό το σύνολο δεδομένων περιέχει 6259 παρατηρήσεις και 10 δυνατότητες. Το σύνολο δεδομένων παρατηρεί την τιμή από το 1993 έως το 1995 των 486 προσωπικών υπολογιστών στις ΗΠΑ. Οι μεταβλητές είναι μεταξύ άλλων, τιμή, ταχύτητα, ram, οθόνη, cd.
Θα προχωρήσετε ως εξής:
- Εισαγωγή δεδομένων
- Εκπαιδεύστε το μοντέλο
- Αξιολογήστε το μοντέλο
Εισαγωγή δεδομένων
Το K σημαίνει δεν είναι κατάλληλο για μεταβλητές συντελεστών επειδή βασίζεται στην απόσταση και οι διακριτές τιμές δεν επιστρέφουν σημαντικές τιμές. Μπορείτε να διαγράψετε τις τρεις κατηγορικές μεταβλητές στο σύνολο δεδομένων μας. Εκτός αυτού, δεν υπάρχουν τιμές που λείπουν σε αυτό το σύνολο δεδομένων.
library(dplyr)PATH <-"https://raw.githubusercontent.com/guru99-edu/R-Programming/master/computers.csv"df <- read.csv(PATH) %>%select(-c(X, cd, multi, premium))glimpse(df)Παραγωγή
## Observations: 6, 259## Variables: 7## $ price < int > 1499, 1795, 1595, 1849, 3295, 3695, 1720, 1995, 2225, 2… ##$ speed < int > 25, 33, 25, 25, 33, 66, 25, 50, 50, 50, 33, 66, 50, 25,… ##$ hd < int > 80, 85, 170, 170, 340, 340, 170, 85, 210, 210, 170, 210… ##$ ram < int > 4, 2, 4, 8, 16, 16, 4, 2, 8, 4, 8, 8, 4, 8, 8, 4, 2, 4,… ##$ screen < int > 14, 14, 15, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14,… ##$ ads < int > 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,… ## $ trend1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
Από τα συνοπτικά στατιστικά στοιχεία, μπορείτε να δείτε ότι τα δεδομένα έχουν μεγάλες τιμές. Μια καλή πρακτική με τον υπολογισμό μέσου όρου και απόστασης είναι η επαναπώληση των δεδομένων έτσι ώστε ο μέσος όρος να είναι ίσος με έναν και η τυπική απόκλιση να είναι μηδέν.
summary(df)
Παραγωγή:
## price speed hd ram## Min. : 949 Min. : 25.00 Min. : 80.0 Min. : 2.000## 1st Qu.:1794 1st Qu.: 33.00 1st Qu.: 214.0 1st Qu.: 4.000 `## Median :2144 Median : 50.00 Median : 340.0 Median : 8.000## Mean :2220 Mean : 52.01 Mean : 416.6 Mean : 8.287## 3rd Qu.:2595 3rd Qu.: 66.00 3rd Qu.: 528.0 3rd Qu.: 8.000## Max. :5399 Max. :100.00 Max. :2100.0 Max. :32.000## screen ads trend## Min. :14.00 Min. : 39.0 Min. : 1.00## 1st Qu.:14.00 1st Qu.:162.5 1st Qu.:10.00## Median :14.00 Median :246.0 Median :16.00## Mean :14.61 Mean :221.3 Mean :15.93## 3rd Qu.:15.00 3rd Qu.:275.0 3rd Qu.:21.50## Max. :17.00 Max. :339.0 Max. :35.00
Μπορείτε να μεταπωλήσετε τις μεταβλητές με τη συνάρτηση κλίμακας () της βιβλιοθήκης dplyr. Ο μετασχηματισμός μειώνει την επίδραση των ακραίων τιμών και επιτρέπει τη σύγκριση μιας μοναδικής παρατήρησης με τον μέσο όρο. Εάν μια τυποποιημένη τιμή (ή βαθμολογία z ) είναι υψηλή, μπορείτε να είστε σίγουροι ότι αυτή η παρατήρηση είναι πράγματι πάνω από το μέσο όρο (μια μεγάλη βαθμολογία z υποδηλώνει ότι αυτό το σημείο απέχει πολύ από το μέσο όρο όσον αφορά την τυπική απόκλιση. Η βαθμολογία των δύο δείχνει ότι η τιμή είναι 2 τυπικές αποκλίσεις μακριά από το μέσο όρο. Σημειώστε ότι η βαθμολογία z ακολουθεί μια κατανομή Gauss και είναι συμμετρική γύρω από τη μέση τιμή.
rescale_df <- df % > %mutate(price_scal = scale(price),hd_scal = scale(hd),ram_scal = scale(ram),screen_scal = scale(screen),ads_scal = scale(ads),trend_scal = scale(trend)) % > %select(-c(price, speed, hd, ram, screen, ads, trend))
Η βάση R έχει μια συνάρτηση για την εκτέλεση του k μέσου αλγόριθμου. Η βασική συνάρτηση του k mean είναι:
kmeans(df, k)arguments:-df: dataset used to run the algorithm-k: Number of clusters
Εκπαιδεύστε το μοντέλο
Στο σχήμα 3, αναλύσατε πώς λειτουργεί ο αλγόριθμος Μπορείτε να δείτε κάθε βήμα γραφικά με το υπέροχο πακέτο του Yi Hui (επίσης δημιουργού του Knit for Rmarkdown). Το κινούμενο σχέδιο πακέτου δεν είναι διαθέσιμο στη βιβλιοθήκη conda. Μπορείτε να χρησιμοποιήσετε τον άλλο τρόπο για να εγκαταστήσετε το πακέτο με το install.packages ("animation"). Μπορείτε να ελέγξετε εάν το πακέτο είναι εγκατεστημένο στο φάκελο Anaconda.
install.packages("animation")
Αφού φορτώσετε τη βιβλιοθήκη, προσθέτετε .ani μετά τα kmeans και το R θα σχεδιάσει όλα τα βήματα. Για λόγους απεικόνισης, εκτελείτε τον αλγόριθμο μόνο με τις μεταβλητές μεταβλητές hd και ram με τρεις συστάδες.
set.seed(2345)library(animation)kmeans.ani(rescale_df[2:3], 3)
Επεξήγηση κώδικα
- kmeans.ani (bailale_df [2: 3], 3): Επιλέξτε τις στήλες 2 και 3 του συνόλου δεδομένων bailale_df και εκτελέστε τον αλγόριθμο με σύνολα k στο 3. Σχεδιάστε την κινούμενη εικόνα.
Μπορείτε να ερμηνεύσετε το κινούμενο σχέδιο ως εξής:
- Βήμα 1: Ο R επιλέγει τυχαία τρία σημεία
- Βήμα 2: Υπολογίστε την απόσταση Ευκλείδων και σχεδιάστε τις συστάδες. Έχετε ένα σύμπλεγμα σε πράσινο κάτω αριστερά, ένα μεγάλο σύμπλεγμα με μαύρο χρώμα στα δεξιά και ένα κόκκινο μεταξύ τους.
- Βήμα 3: Υπολογίστε το κεντροειδές, δηλαδή το μέσο όρο των συστάδων
- Επαναλάβετε έως ότου κανένα στοιχείο δεν αλλάξει το σύμπλεγμα
Ο αλγόριθμος συγκλίνει μετά από επτά επαναλήψεις. Μπορείτε να εκτελέσετε τον αλγόριθμο k-mean στο σύνολο δεδομένων μας με πέντε συστάδες και να τον ονομάσετε pc_cluster.
pc_cluster <-kmeans(rescale_df, 5)
- Η λίστα pc_cluster περιέχει επτά ενδιαφέροντα στοιχεία:
- pc_cluster $ cluster: Υποδεικνύει το σύμπλεγμα κάθε παρατήρησης
- pc_cluster $ center: Τα κέντρα συμπλέγματος
- pc_cluster $ totss: Το συνολικό άθροισμα των τετραγώνων
- pc_cluster $ withinss: Εντός τετραγώνου. Ο αριθμός των στοιχείων επιστροφής ισούται με «k»
- pc_cluster $ tot.withinss: Άθροισμα των ininss
- pc_clusterbetweenss: Συνολικό άθροισμα τετραγώνου μείον Εντός τετραγώνου
- pc_cluster $ size: Αριθμός παρατήρησης σε κάθε σύμπλεγμα
Θα χρησιμοποιήσετε το άθροισμα του αθροίσματος του τετραγώνου (δηλ. Tot.withinss) για να υπολογίσετε τον βέλτιστο αριθμό συστάδων k. Η εύρεση του k είναι πράγματι σημαντικό έργο.
Βέλτιστο k
Μία τεχνική για να επιλέξετε το καλύτερο k ονομάζεται μέθοδος αγκώνα . Αυτή η μέθοδος χρησιμοποιεί ομοιογένεια εντός της ομάδας ή ετερογένεια εντός της ομάδας για την αξιολόγηση της μεταβλητότητας. Με άλλα λόγια, σας ενδιαφέρει το ποσοστό της διακύμανσης που εξηγείται από κάθε ομάδα. Μπορείτε να περιμένετε ότι η μεταβλητότητα θα αυξηθεί με τον αριθμό των συστάδων, εναλλακτικά, η ετερογένεια μειώνεται. Η πρόκλησή μας είναι να βρούμε το k που είναι πέρα από τις φθίνουσες αποδόσεις. Η προσθήκη ενός νέου συμπλέγματος δεν βελτιώνει τη μεταβλητότητα των δεδομένων, επειδή απομένουν πολύ λίγες πληροφορίες για εξήγηση.
Σε αυτό το σεμινάριο, βρίσκουμε αυτό το σημείο χρησιμοποιώντας το μέτρο ετερογένειας. Το άθροισμα των τετραγώνων σε σύμπλεγμα είναι το σύνολο. Με τη λίστα επιστροφή κατά kmean ().
Μπορείτε να δημιουργήσετε το γράφημα αγκώνα και να βρείτε το βέλτιστο k ως εξής:
- Βήμα 1: Κατασκευάστε μια συνάρτηση για τον υπολογισμό του συνόλου των τετραγώνων εντός των συστάδων
- Βήμα 2: Εκτελέστε τους χρόνους του αλγορίθμου
- Βήμα 3: Δημιουργήστε ένα πλαίσιο δεδομένων με τα αποτελέσματα του αλγορίθμου
- Βήμα 4: Σχεδιάστε τα αποτελέσματα
Βήμα 1) Κατασκευάστε μια συνάρτηση για τον υπολογισμό του συνόλου των τετραγώνων εντός συστάδων
Μπορείτε να δημιουργήσετε τη συνάρτηση που εκτελεί τον αλγόριθμο k-mean και να αποθηκεύσετε το σύνολο εντός του συνόλου των τετραγώνων σε ομάδες
kmean_withinss <- function(k) {cluster <- kmeans(rescale_df, k)return (cluster$tot.withinss)}
Επεξήγηση κώδικα
- συνάρτηση (k): Ορίστε τον αριθμό των ορισμάτων στη συνάρτηση
- kmeans (bailale_df, k): Εκτελέστε τον αλγόριθμο k φορές
- return (σύμπλεγμα $ tot.withinss): Αποθηκεύστε το σύνολο εντός του συνόλου των τετραγώνων σε ομάδες
Μπορείτε να δοκιμάσετε τη συνάρτηση με ίση με 2.
Παραγωγή:
## Try with 2 cluster
kmean_withinss(2)
Παραγωγή:
## [1] 27087.07
Βήμα 2) Εκτελέστε τον αλγόριθμο n φορές
Θα χρησιμοποιήσετε τη συνάρτηση sapply () για να εκτελέσετε τον αλγόριθμο σε εύρος k. Αυτή η τεχνική είναι ταχύτερη από τη δημιουργία βρόχου και την αποθήκευση της τιμής.
# Set maximum clustermax_k <-20# Run algorithm over a range of kwss <- sapply(2:max_k, kmean_withinss)
Επεξήγηση κώδικα
- max_k <-20: Ορίστε έναν μέγιστο αριθμό έως 20
- sapply (2: max_k, kmean_withinss): Εκτελέστε τη συνάρτηση kmean_withinss () σε εύρος 2: max_k, δηλαδή 2 έως 20.
Βήμα 3) Δημιουργήστε ένα πλαίσιο δεδομένων με τα αποτελέσματα του αλγορίθμου
Μετά τη δημιουργία και τον έλεγχο της λειτουργίας μας, μπορείτε να εκτελέσετε τον αλγόριθμο k-mean σε εύρος από 2 έως 20, να αποθηκεύσετε τις τιμές tot.withinss.
# Create a data frame to plot the graphelbow <-data.frame(2:max_k, wss)
Επεξήγηση κώδικα
- data.frame (2: max_k, wss): Δημιουργήστε ένα πλαίσιο δεδομένων με την έξοδο του αλγορίθμου αποθήκευσης σε wss
Βήμα 4) Σχεδιάστε τα αποτελέσματα
Σχεδιάζετε το γράφημα για να απεικονίσετε πού είναι το σημείο αγκώνα
# Plot the graph with gglopggplot(elbow, aes(x = X2.max_k, y = wss)) +geom_point() +geom_line() +scale_x_continuous(breaks = seq(1, 20, by = 1))
Από το γράφημα, μπορείτε να δείτε το βέλτιστο k είναι επτά, όπου η καμπύλη αρχίζει να έχει φθίνουσα απόδοση.
Μόλις αποκτήσετε το βέλτιστο k μας, εκτελέστε ξανά τον αλγόριθμο με k ισούται με 7 και αξιολογείτε τις συστάδες.
Εξέταση του συμπλέγματος
pc_cluster_2 <-kmeans(rescale_df, 7)
Όπως αναφέρθηκε προηγουμένως, μπορείτε να αποκτήσετε πρόσβαση στις υπόλοιπες ενδιαφέρουσες πληροφορίες στη λίστα που επιστρέφονται με kmean ().
pc_cluster_2$clusterpc_cluster_2$centerspc_cluster_2$size
Το μέρος αξιολόγησης είναι υποκειμενικό και βασίζεται στη χρήση του αλγορίθμου. Στόχος μας εδώ είναι να συγκεντρώσουμε υπολογιστή με παρόμοιες δυνατότητες. Ένας τύπος υπολογιστή μπορεί να κάνει τη δουλειά με το χέρι και να ομαδοποιήσει τον υπολογιστή με βάση την εμπειρία του. Ωστόσο, η διαδικασία θα διαρκέσει πολύ χρόνο και θα είναι επιρρεπής σε σφάλματα. Ο αλγόριθμος K-mean μπορεί να προετοιμάσει το πεδίο γι 'αυτόν, προτείνοντας συστάδες.
Ως προηγούμενη αξιολόγηση, μπορείτε να εξετάσετε το μέγεθος των συστάδων.
pc_cluster_2$size
Παραγωγή:
## [1] 608 1596 1231 580 1003 699 542
Το πρώτο σύμπλεγμα αποτελείται από 608 παρατηρήσεις, ενώ το μικρότερο σύμπλεγμα, ο αριθμός 4, έχει μόνο 580 υπολογιστές. Μπορεί να είναι καλό να υπάρχει ομοιογένεια μεταξύ συστάδων, εάν όχι, μπορεί να απαιτείται μια πιο λεπτή προετοιμασία δεδομένων.
Μπορείτε να ρίξετε μια πιο βαθιά ματιά στα δεδομένα με το κεντρικό στοιχείο. Οι σειρές αναφέρονται στην αρίθμηση του συμπλέγματος και στις στήλες των μεταβλητών που χρησιμοποιούνται από τον αλγόριθμο. Οι τιμές είναι η μέση βαθμολογία από κάθε σύμπλεγμα για την ενδιαφερόμενη στήλη. Η τυποποίηση διευκολύνει την ερμηνεία. Οι θετικές τιμές δείχνουν ότι η βαθμολογία z για ένα δεδομένο σύμπλεγμα είναι πάνω από τη συνολική μέση τιμή. Για παράδειγμα, το σύμπλεγμα 2 έχει την υψηλότερη μέση τιμή μεταξύ όλων των συστάδων.
center <-pc_cluster_2$centerscenter
Παραγωγή:
## price_scal hd_scal ram_scal screen_scal ads_scal trend_scal## 1 -0.6372457 -0.7097995 -0.691520682 -0.4401632 0.6780366 -0.3379751## 2 -0.1323863 0.6299541 0.004786730 2.6419582 -0.8894946 1.2673184## 3 0.8745816 0.2574164 0.513105797 -0.2003237 0.6734261 -0.3300536## 4 1.0912296 -0.2401936 0.006526723 2.6419582 0.4704301 -0.4132057## 5 -0.8155183 0.2814882 -0.307621003 -0.3205176 -0.9052979 1.2177279## 6 0.8830191 2.1019454 2.168706085 0.4492922 -0.9035248 1.2069855## 7 0.2215678 -0.7132577 -0.318050275 -0.3878782 -1.3206229 -1.5490909
Μπορείτε να δημιουργήσετε έναν χάρτη θερμότητας με το ggplot για να μας βοηθήσετε να επισημάνουμε τη διαφορά μεταξύ των κατηγοριών.
Τα προεπιλεγμένα χρώματα του ggplot πρέπει να αλλάξουν με τη βιβλιοθήκη RColorBrewer. Μπορείτε να χρησιμοποιήσετε τη βιβλιοθήκη conda και τον κωδικό για να ξεκινήσετε στο τερματικό:
conda install -cr r-rcolorbrewer
Για να δημιουργήσετε έναν χάρτη θερμότητας, προχωράτε σε τρία βήματα:
- Δημιουργήστε ένα πλαίσιο δεδομένων με τις τιμές του κέντρου και δημιουργήστε μια μεταβλητή με τον αριθμό του συμπλέγματος
- Αναμορφώστε τα δεδομένα με τη συνάρτηση συγκέντρωσης () της βιβλιοθήκης tidyr. Θέλετε να μετατρέψετε δεδομένα από ευρεία σε μεγάλη.
- Δημιουργήστε την παλέτα χρωμάτων με τη λειτουργία colorRampPalette ()
Βήμα 1) Δημιουργήστε ένα πλαίσιο δεδομένων
Ας δημιουργήσουμε το σύνολο δεδομένων αναδιαμόρφωσης
library(tidyr)# create dataset with the cluster numbercluster <- c(1: 7)center_df <- data.frame(cluster, center)# Reshape the datacenter_reshape <- gather(center_df, features, values, price_scal: trend_scal)head(center_reshape)
Παραγωγή:
## cluster features values## 1 1 price_scal -0.6372457## 2 2 price_scal -0.1323863## 3 3 price_scal 0.8745816## 4 4 price_scal 1.0912296## 5 5 price_scal -0.8155183## 6 6 price_scal 0.8830191
Βήμα 2) Αναμορφώστε τα δεδομένα
Ο παρακάτω κώδικας δημιουργεί την παλέτα χρωμάτων που θα χρησιμοποιήσετε για να σχεδιάσετε τον χάρτη θερμότητας.
library(RColorBrewer)# Create the palettehm.palette <-colorRampPalette(rev(brewer.pal(10, 'RdYlGn')),space='Lab')
Βήμα 3) Οπτικοποιήστε
Μπορείτε να σχεδιάσετε το γράφημα και να δείτε πώς μοιάζουν οι συστάδες.
# Plot the heat mapggplot(data = center_reshape, aes(x = features, y = cluster, fill = values)) +scale_y_continuous(breaks = seq(1, 7, by = 1)) +geom_tile() +coord_equal() +scale_fill_gradientn(colours = hm.palette(90)) +theme_classic()
Περίληψη
Μπορούμε να συνοψίσουμε τον αλγόριθμο k-mean στον παρακάτω πίνακα
Πακέτο |
Σκοπός |
λειτουργία |
διαφωνία |
---|---|---|---|
βάση |
Τρένο k-mean |
kmeans () |
df, κ |
Πρόσβαση στο σύμπλεγμα |
σύμπλεγμα kmeans () $ | ||
Κέντρα συμπλέγματος |
kmeans () $ κέντρα | ||
Σύμπλεγμα μεγέθους |
kmeans () μέγεθος $ |