Artikel tentang K-Means Clustering dengan Text Data

Artikel tentang K-Means Clustering dengan Text Data

Dalam artikel ini, kita akan membahas tentang bagaimana melakukan clustering menggunakan algoritma K-Means pada data teks. Kita akan menggunakan library scikit-learn dan TfidfVectorizer untuk mengubah data teks menjadi vektor yang dapat digunakan oleh algoritma K-Means.

Data Teks

Kami akan menggunakan dataset yang terdiri dari beberapa kalimat tentang kucing, anjing, dan Google. Kami akan membuat 3 cluster untuk menyelesaikan masalah tersebut.

documents = ["This little kitty came to play when I was eating at a restaurant.","hello kitty is my favorite character",
 "Merley has the best squooshy kitten belly.","Is Google translator so good?","google google"
 "google Translate app is incredible.","My dog s name is Kong","dog dog dog","cat cat"
 "If you open 100 tab in google you get a smiley face.","Kong is a very cute and lovely dog",
 "Best cat photo I've ever taken.","This is a cat house"
 "Climbing ninja cat kitty.","What's your dog's name?","Cat s paws look like jelly",
 "Impressed with google map feedback.","I want to join google","You have to wear a collar when you walk the dog",
 "Key promoter extension for google Chrome.","Google is the best company","Google researcher"]

Vectorization

Kita akan menggunakan TfidfVectorizer untuk mengubah data teks menjadi vektor. Vektor ini akan digunakan oleh algoritma K-Means untuk menyelesaikan masalah clustering.

vectorizer = TfidfVectorizer(stop_words='english')
X = vectorizer.fit_transform(documents)

K-Means Clustering

Kita akan menggunakan algoritma K-Means dengan 3 cluster untuk mengelompokkan data teks. Kami akan menggunakan init='k-means++' dan max_iter=100 sebagai parameter.

true_k = 3
model = KMeans(n_clusters=true_k, init='k-means++', max_iter=100, n_init=1)
model.fit(X)

Centroids

Kita dapat menemukan centroids dari cluster dengan menggunakan method cluster_centers_.

order_centroids = model.cluster_centers_.argsort()[:, ::-1]
terms = vectorizer.get_feature_names()
model.labels_

Plotting

Kita dapat membuat plot untuk melihat hasil clustering. Kami akan menggunakan scatter plot untuk melihat posisi tiap titik dalam cluster.

[x for x, y in zip(documents, model.labels_) if y == 0]
[x for x, y in zip(documents, model.labels_) if y == 1]
[x for x, y in zip(documents, model.labels_) if y == 2]

Prediction

Kita dapat menggunakan model untuk memprediksi cluster dari kalimat baru.

Y = vectorizer.transform(["chrome browser to open."])
prediction = model.predict(Y)
print(prediction)

Y = vectorizer.transform(["I want to have a dog"])
prediction = model.predict(Y)
print(prediction)

Y = vectorizer.transform(["My cat is hungry."])
prediction = model.predict(Y)
print(prediction)

Saran

Jika Anda ingin membuat plot untuk melihat hasil clustering, Anda dapat menggunakan library matplotlib. Berikut adalah contoh cara membuat plot:

  1. How do I represent a set of cluster points in scatter plot?
    Dear Experience,

I have a dataset which has been clustered using K-Means and stored in an Excel file (clu.xlsx). My data consists of 200 observations, where:

  • First column is observation labels
  • Second column is x data values
  • Third columns is y data values
  • Fourth columns is cluster IDs (1,2,3…K) (clustering has been done using K-Means)
    And: Cent= stored the centroids of my clusters

My question is:
How do I plot observations in a scatter plot where I would like to color every point in a cluster with different colors from other clusters?
Then how to plot centroids also?

Thank you for any suggestions.

Penutup

Dalam artikel ini, kita telah membahas tentang bagaimana melakukan clustering menggunakan algoritma K-Means pada data teks. Kami juga telah membahas cara membuat plot untuk melihat hasil clustering dan memprediksi cluster dari kalimat baru.