【Educoder】— 机器学习(聚类第二关)

目录

任务描述

相关知识

编程要求


第二关—主要算法之K-Means 聚类

任务描述

本关任务:使用python语言编程,按要求完成任务。

相关知识

随着聚类分析技术的蓬勃发展,目前已有很多类型的聚类算法。但很难对聚类方法进行简单的分类,因为这些类别的聚类可能重叠,从而使得一种方法具有一些交叉的特征。一般而言,聚类算法被划分为以下几类:基于划分的方法;基于层次的方法;基于密度的方法;局域网格的方法。聚类分析中最广泛使用的算法为 K-Means 聚类算法。这里对 K-Means 聚类算法及其改进算法进行介绍。 

K-Means聚类

  • 原理

    K-Means 算法的基本思想是初始随机给定 K 个聚类中心,按照最邻近原则把待分类样本点分到各个类。然后按平均法重新计算各个类的聚类中心,从而确定新的聚类中心。一直迭代,直到聚类中心保持不变或移动距离小于某个给定的值。

  • 步骤

    用于划分的 K-Means 算法,其中每个簇的中心都用簇中所有对象的均值来表示。K-Means 聚类模型所采用的迭代算法直观易懂且非常实用。但是具有容易收敛到局部最优解和需要预先设定簇的数量的缺陷。

  • K-means++算法

  • 原理

    将经典 K-Means 算法的 step 1 初始化类中心更改为: a)使用随机方法选取第一个(n=1)聚类中心; b) 选取第 n+1 个聚类中心(0<n<K)时:距离当前 n 个聚类中心越远的点会有更高的概率被选为第 n+1 个聚类中心。

  • buzh

编程要求

根据提示,在右侧编辑器Begin-End部分补充代码。

任务描述:使用Python语言,对给定数据进行聚类,数据可视化如下:

  1. 创建 KMeans 对象,令 n_clusters=2;提示:可以使用 sklearn.cluster 中的 KMeans 模型。
  2. 调用 fit 函数执行训练过程。
  3. 调用 predict 函数进行预测,预测的数据为 [0,0], [8,2], [10,3]。
    # 从 sklearn.cluster 导入 KMeans
    from sklearn.cluster import KMeans
    import numpy as np
    
    # 加载数据集
    X = np.array([[1, 2], [2, 2.2], [3, 1.5], [2, 1.8], [1, 1.4], [1, 2.5], [1, 1], [10, 2], [10, 2.5], [9, 2.3], [10, 2.4], [9.5, 2.1]])
    
    # 任务1:创建 KMeans 对象,令 n_clusters=2
    ########## Begin ##########
    kmeans = KMeans(n_clusters=2, random_state=0)
    ##########  End  ##########
    
    # 任务2:调用 fit 函数执行训练过程
    ########## Begin ##########
    kmeans = kmeans.fit(X)
    ##########  End  ##########
    
    # 任务3:调用 predict 函数进行预测,预测的数据为 [0,0], [8,2], [10,3]
    ########## Begin ##########
    y_pred = kmeans.predict([[0,0], [8,2], [10,3]])
    ##########  End  ##########
    
    # 打印结果
    print(y_pred)

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您提供机器学习kmeans算法在西瓜数据集上的实例。首先,让我们了解一下西瓜数据集。 西瓜数据集是一个著名的二元分类数据集,其中包含17个属性和2个类别。属性包括色泽,根蒂,敲声,纹理等等。类别分别为好瓜和坏瓜。下面是西瓜数据集的前几行数据: | 编号 | 色泽 | 根蒂 | 敲声 | 纹理 | 脐部 | 触感 | 密度 | 含糖率 | 好瓜 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | 1 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.697 | 0.46 | 是 | | 2 | 乌黑 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | 硬滑 | 0.774 | 0.376 | 是 | | 3 | 乌黑 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.634 | 0.264 | 是 | | 4 | 青绿 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | 硬滑 | 0.608 | 0.318 | 是 | | 5 | 浅白 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.556 | 0.215 | 是 | 现在,我们可以使用kmeans算法对这个数据集进行聚类。下面是Python代码的示例: ```python import pandas as pd from sklearn.cluster import KMeans # 读取数据集 data = pd.read_csv('watermelon.csv', encoding='gbk') # 取出数据集中的属性值 X = data.iloc[:, 1:-1] # 设置聚类数量为2 kmeans = KMeans(n_clusters=2) # 对数据进行聚类 kmeans.fit(X) # 输出聚类结果 print(kmeans.labels_) ``` 在这个示例中,我们使用`pandas`库读取了西瓜数据集,并使用`sklearn.cluster`库中的`KMeans`类对数据进行聚类。我们设置聚类数量为2,并使用`fit`方法对数据进行聚类。最后,我们输出了聚类结果。 希望这个示例对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹿毅十川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值