机器学习算法:K-Means(K-均值算法)|python与r语言代码实现
K-Means(K-均值算法)
它是一种解决聚类问题的无监督算法。其过程遵循一种简单易行的方法,通过特定数量的集群(假设k个集群)对给定的数据集进行分类。集群内的数据点对于对等组是均匀的和异构的。
还记得从墨迹中找出形状吗?K意味着某种类似的活动。你看这个形状并散布破译有多少不同的集群/人口存在!
k-均值如何形成集群:
- k-均值为每个集群挑选K个点,称为质心。
- 每个数据点形成具有最接近质心的簇,即K簇。
- 根据现有的群集成员查找每个簇的质心。这里我们有新的质心。
- 当我们有新的质心时,重复第2步和第3步,从新的质心找到每个数据点最近的距离,并与新的K簇关联。重复这个过程直到收敛发生,即质心不变。
如何确定K值:
在k-均值中,我们有簇,每个簇都有它自己的质心。质心与群集中的数据点之间的差的平方和构成了该群集的平方值和。此外,当添加所有集群的平方值之和时,它就变成集群解决方案的平方值之和内的总和。
我们知道,随着集群数量的增加,这个值持续减少,但如果绘制结果,您可能会看到平方距离之和急剧减少,直到某个值k,然后缓慢得多。在这里,我们可以找到最佳的簇数。
Python 代码
#Import Library
from sklearn.cluster import KMeans
#Assumed you have, X (attributes) for training data set and x_test(attributes) of test_dataset
# Create KNeighbors classifier object model
k_means = KMeans(n_clusters=3, random_state=0)
# Train the model using the training sets and check score
model.fit(X)
#Predict Output
predicted= model.predict(x_test)
R 语言代码
library(cluster)
fit <- kmeans(X, 3) # 5 cluster solution
THE END