Python实现K-means算法及其应用
K-means算法简介
K-means算法是一种聚类算法,接受参数k,然后将事先输入的n个数据对象划分为k个聚类,使得每个聚类内的对象相似度较高,而不同聚类之间的对象相似度较小。通过计算各聚类中对象的均值获得一个“中心对象”,通过随机选取几个聚类中心,计算所有点到中心的距离,并选取最近的类别,再以该簇为中心,求簇中点的均值形成新的类别。
实现K-means算法
第一步是计算欧氏距离并初始化聚类中心,代码示例如下:
```python
import numpy as np
计算欧式距离
def calculate_distance(vector1, vector2):
return np.sqrt((np.square(vector1 - vector2)))
初始化聚类中心
def initialize_centroids(data, k):
import random
return (data, k)
```
生成新的簇类并求出最短距离
接下来是找到每个点到中心点的最小距离,代码如下:
```python
def minimum_distance(data, centroid_list):
cluster_dictionary {}
for i in data:
vector1 i
marker 0
min_dist float('inf')
for j in range(len(centroid_list)):
vector2 centroid_list[j]
distance calculate_distance(vector1, vector2)
if distance < min_dist:
min_dist distance
marker j
if marker not in cluster_():
cluster_dictionary[marker] []
cluster_dictionary[marker].append(i)
return cluster_dictionary
```
导入数据并运行算法
导入数据并计算,当簇中心变化小于一定阈值时跳出循环,代码如下:
```python
path 'C:/Users/jyjh/Desktop/data.txt'
data open(path, 'r').readlines()
temp []
import numpy as np
for i in data:
num_list []
for j in ().split(' '):
num float(j)
num_(num)
(num_list)
data (temp)
centroid_list initialize_centroids(data, 4)
cluster_dictionary minimum_distance(data, centroid_list)
new_msd getmsd(cluster_dictionary, centroid_list)
old_msd -0.000001
k 2
while abs(new_msd - old_msd) > 0.00001:
centroid_list getcentroids(cluster_dictionary)
cluster_dictionary minimum_distance(data, centroid_list)
old_msd new_msd
new_msd getmsd(cluster_dictionary, centroid_list)
k 1
print(new_msd - old_msd)
showresult(cluster_dictionary, centroid_list)
```
以上是关于Python实现K-means算法的简要介绍和代码示例。通过K-means算法,我们可以对数据进行聚类分析,发现数据之间的相似性,为数据挖掘和模式识别提供了一种有效的方法。如果你正在进行数据分析或机器学习相关工作,不妨尝试使用K-means算法来处理数据,发现其中隐藏的规律和信息。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。