K-MEANS聚类之图像分割Python实现

K-MEANS聚类再上上一章就详细介绍完了,接下来我们做一个小小的图像分割。

第一步:导包和导入图片

from matplotlib.image import imread
from sklearn.cluster import KMeans 
import matplotlib.pyplot as plt  
import numpy as np
image=imread('C:/Users/bwy/Desktop/嘿嘿哈嘿.jpg')

然后我们看一下图片的shape:

image.shape
(1280, 960, 3)三维的,由于k-means是两个参数所以我们需要reshape()

2.reshape

X=image.reshape(-1,3)
X.shape

 结果:(-1代表1280*960)

(1228800, 3)

3 大招出场

segmented_imgs=[]
n_colors=(10,8,6,4,1)
for n_cluster in n_colors:
    kmeans=KMeans(n_clusters=n_cluster,random_state=142).fit(X)
    segmented_img=kmeans.cluster_centers_[kmeans.labels_].reshape(image.shape)
    new_segmented_img=np.around(segmented_img).astype(int)
    segmented_imgs.append(new_segmented_img)

4.图像显示

plt.figure(figsize=(8,6))
plt.subplot(231)
plt.imshow(image)
plt.title('Original image')
for idx,n_clusters in enumerate(n_colors):
    plt.subplot(232+idx)
    plt.imshow(segmented_imgs[idx])
    plt.title('{}colors'.format(n_clusters))

结果如图:

 不要慌,不要慌,太阳下山有月光,月亮落下有朝阳。(●ˇ∀ˇ●)

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: K-Means聚类算法是一种基于距离度量的聚类方法。在三维空间中,我们可以使用numpy库中的kmeans()函数实现K-Means聚类。示例代码如下: ```python from sklearn.cluster import KMeans import numpy as np # 生成3维数据 data = np.random.rand(100, 3) # 创建KMeans模型 kmeans = KMeans(n_clusters=3) # 训练模型 kmeans.fit(data) # 获取聚类结果 labels = kmeans.labels_ ``` 在这个示例中,我们使用了一个3维的随机数据,并将其分为3个类。 ### 回答2: Kmeans 聚类算法是一种经典的无监督学习算法,主要应用于数据聚类分析,能够将一组数据划分成多个不同的类别或簇。Python 作为一种高级编程语言,提供了丰富和充分的工具来实现 Kmeans 聚类算法的三维数据分析。 实现 Kmeans 聚类算法需要考虑以下步骤:首先,我们需要准备好我们的数据,通过调用一些相关的 Python 库来加载我们的数据。对于三维数据来说,我们可以使用 NumPy 依次加载 X,Y 和 Z 坐标。准备好数据之后,我们可以开始编 Kmeans 算法的代码。 在 Python实现 Kmeans 聚类算法,可以使用 Scikit-learn 库来导入 KMeans 类。然后,我们可以根据需要设置类的参数,例如聚类的数量、最大迭代次数等。之后,我们可以使用 fit() 方法对数据进行拟合和聚类。最后,我们可以使用 Matplotlib 来绘制生成的聚类簇的图像,以直观地查看算法的结果。 需要注意的是,在处理三维数据时,我们需要使用类似于二维数据的方法来将数据划分为类。在对三维数据进行聚类时,我们需要通过调整数据的 X,Y 和 Z 值之间的比例来平衡数据,并将其转换为类似于二维数据的点集。然后,我们可以使用这些点来实现 Kmeans 算法并生成聚类簇。 总之,Python实现 Kmeans 聚类算法三维数据分析的理想语言,可以使用 NumPy、Scikit-learn 和 Matplotlib 等库来实现该算法的各个方面。如果有适当的算法参数、比例、更复杂的数据或更高的维度,可能需要对算法进行修改或优化,以确保它能够稳定地处理数据并生成准确的聚类簇。 ### 回答3: k-means是一种聚类算法,可以将样本数据划分为多个类别。此算法的目标是通过最小化各个类别内部的平方距离之和来确定聚类。 在Python中使用k-means进行三维聚类时,首先需要导入必要的库,如NumPy、matplotlib和sklearn。接下来,需要准备数据集。假设我们有一个包含三个维度的数据集,每个数据点有X、Y和Z坐标。 在进行k-means聚类之前,需要决定聚类数量。可以通过使用Elbow方法来确定最佳聚类数量。该方法基于聚类数量和损失函数之间的关系来确定最佳聚类数量。 接下来,通过使用scikit-learn库中的KMeans模块来执行聚类。该库提供了多个参数,如聚类数量、初始化方式、最大迭代次数等。在k-means聚类中,需要对每个数据点进行赋值和中心点计算。聚类的最终结果是每个数据点的标签。 最后,可以使用matplotlib库将聚类结果进行可视化。例如,可以使用三维散点图来显示数据点和聚类中心。不同颜色的标记表示不同的聚类。 总之,k-means是一种经典的聚类算法,在Python中使用k-means聚类算法可以很容易地实现三维数据的聚类过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值