kmeans算法用Python怎么实现

如题所述

第一种: 引用scikit-learn包

from sklearn.cluster import KMeans
 
k = 10  # Kmeans的k值
model = Kmeans(n_clusters=k)
X = [[1, 2], [1, 3], [2, 1], ....]  # 改成你的数据
model.fit(X)
# 然后就训练好了, 可以查看model的属性
model.cluster_centers
model.labels_

第二种: 自己写代码实现

import numpy as np
import random
data = [[1, 1, 1], [1, 1, 3], [1, 2, 1], [5, 1, 1], [5, 1, 2], [5, 2, 1], [5, 5, 5], [5, 5, 4], [5, 4, 4]]
data = np.array(data)
 
k = 4  # kmeans的k
n_iteration = 500  # 最大迭代次数
 
 
# 求初始化的k个质心(这k个质心必须包含在k个点的凸空间内)
center = np.matrix(np.zeros((k, len(data[0]))))
center_after = np.matrix(np.zeros((k, len(data[0]))))
for i in range(len(data[0])):
    center[:, i] = min(data[:, i]) + (max(data[:, i]) - min(data[:, i])) * np.random.rand(k, 1)
 
 
def calc_distance(x, y, distance='eucidean'):
    x, y = np.array(x), np.array(y)
    if distance == 'eucidean':
        return np.sqrt(np.sum((y - x)**2))
 
 
n = 0
while 1:
    n += 1
    print('第%s次迭代' % n)
    # 计算所有点到每个质心的距离, 将每个点分到距离最近的那个点那一类
    # 9个点里哪个质心最近, 就分到第几个类
    label = np.argmin(np.array([calc_distance(x, y) for x in data for y in center]).reshape(len(data), k), axis=1)
    print(label)
    # 重新计算质心
    for i in range(k):
        center_after[i] = np.mean(np.array([data[j] for j in range(len(data)) if label[j] == i]), axis=0)
    if np.sum(np.abs(center_after - center)) < 0.01:
        # print(np.sum(np.abs(center_after - center)))
        print('相邻两次迭代改变甚小, 迭代结束')
        break
    if n > n_iteration:
        print('迭代次数已达上限, 迭代结束')
        break
    center = center_after

温馨提示:内容为网友见解,仅供参考
无其他回答

KMeans聚类算法,简短易懂的python代码
首先,我们需要指定样本数据集data和聚类数量k。接下来,按照以下步骤进行操作:1. 初始化:随机选择k个样本点作为初始聚类中心。2. 聚类过程:计算每个样本点到各个聚类中心的距离,并将样本指派到最近的聚类中心所在的类别。3. 计算新的聚类中心:对于每个聚类结果,计算该类中所有样本的均值,作为新的...

Python实现KMeans(K-means Clustering Algorithm)
1. **快速KMeans**:通过提前选择初始簇中心或采用随机抽样,加速收敛。2. **MiniBatchKMeans**:使用小批量数据进行迭代,减小计算复杂度,适用于大规模数据集。KMeans算法复杂度 时间复杂度通常为O(nki),其中n为数据点数量,k为聚类中心数量,i为迭代次数。实际应用中,加速计算可采用上述优化方法。

...聚类算法——K-Means原理详解和实操应用(R&Python)
在Python中,利用scikit-learn库的KMeans,我们可以轻松实现算法。例如,设置n_clusters为3,通过肘部法则确定最佳聚类数,然后构建模型并获取聚类结果、中心点、SSE等信息。可视化结果,如鸢尾花数据集的花瓣长度和宽度分布,有助于理解聚类效果。通过R语言的kmeans包,我们同样能分析usarrests数据,观察K=4...

聚类算法kmeans及kmeans++介绍(含python实现)
本文主要介绍了k-means聚类算法及其改进版kmeans++,以及评估聚类效果的方法。k-means是一种通过寻找数据集中k个簇的质心来描述数据分布的算法,其步骤包括随机选取k个种子,计算点与质心的距离,更新质心直至收敛。选择k值时,可以通过观察模型性能曲线的拐点决定。kmeans++针对k-means的随机初始值问题进行...

...聚类算法——K-Means原理详解和实操应用(R&Python)
可以通过设置迭代次数、设置簇内平方和或SSE下降阈值,或者替换为“直到仅有1%的点改变簇”这样的弱条件来控制算法的进程。为了提高收敛速度,可以采用二分K-Means法,将所有点作为一个簇,将该簇一分为二,然后选择能最大程度降低聚类代价函数的簇划分为两个簇,以此进行下去,直到簇的数目等于给定的个...

kmeans算法用Python怎么实现
方法\/步骤 1、首先下载安装python,建议安装2.7版本以上,3.0版本以下,由于3.0版本以上不向下兼容,体验较差。2、打开文本编辑器,推荐editplus,notepad等,将文件保存成 .py格式,editplus和notepad支持识别python语法。脚本第一行一定要写上 #!usr\/bin\/python 表示该脚本文件是可执行python脚本 如果...

十四.K均值(K-means)聚类原理和sklearn实现
Batch K-means通过随机采样部分样本进行聚类,有效降低了计算量。对于聚类效果的评估,无监督情况下常用轮廓系数Calinski-Harabasz,其计算公式为[公式],值越大,表明聚类效果越好,簇间距离大,类内距离小。在Python的sklearn库中,提供了k-means算法的实现,开发者可以利用这个工具进行数据的聚类分析。

python:使用机器学习算法对卫星遥感影像进行分类
首先,导入所需的包,为后续操作做准备。在本例中,主要使用的是sklearn库中的k-means算法,代码简洁明了。接着,读取数据,这里使用的是栅格数据(如.tif格式),通过rasterio包实现。读取后,进行数据预处理,包括数据重塑和转置,以适应机器学习所需的表格格式。建立模型,利用sklearn库中的k-means...

减法聚类如何用Python实现
下面是一个k-means聚类算法在python2.7.5上面的具体实现,你需要先安装Numpy和Matplotlib:from numpy import import time import matplotlib.pyplot as plt calculate Euclidean distance def euclDistance(vector1, vector2):return sqrt(sum(power(vector2 - vector1, 2)))init centroids with random ...

Python 机器学习 PCA降维和K-means聚类及案例
使用代码:K-means聚类 K-means是一种被广泛应用的聚类算法,它通过将数据划分为多个类别或群组,使得同一群组内的数据点具有较高的相似度,而不同群组间的数据点相似度较低。在Python中,我们通常使用scikit-learn库的KMeans类来执行K-means聚类。以下是K-means算法的常用参数:使用代码:用户对物品类别...

相似回答