• 第三次作业 K均值算法


    1). 扑克牌手动演练k均值聚类过程:>30张牌,3类

    a 先随机抽出三张牌,分别是2、10、8作为中心点,图片数字为当前中心点的牌的数量

    b 经过聚类运算得出新的中心点  3、11、5

     c 再次进行聚类,得出最终的中心点,2、11、5

    2). *自主编写K-means算法 ,以鸢尾花花瓣长度数据做聚类,并用散点图显示。(加分题)

    代码:

    import numpy as np
    from sklearn.datasets import load_iris
    import matplotlib.pyplot as plt
    
    k = int(input("请输入类中心个数:"))
    iris = load_iris()
    data = iris.data[:, 2]  # 获取花瓣的长度
    center = np.random.choice(data , k)  # 随机取data中的k个数据作为第一次样本中心
    n = len(data)
    dist = np.zeros(n)  # 获取每个点到样本中心的距离
    
    flag = True
    while flag:
        new_center = np.zeros(k)  # 定义一个新的中心
        for i in range(n):
            d = np.zeros(k)  # 定义一个存放距离的数组
            for j in range(k):
                d[j] = (abs(center[j] - data[i]))  # 计算这个点到中心点的距离
            dist[i] = np.argmin(d)  # 找出最小距离的下标
    
        # 计算各聚类新均值
        for c in range(k):  # 按照下标来聚类
            index = dist == c
            new_center[c] = np.mean(data[index])  # 计算新聚类中心
    
        # 判断新中心是否与原先中心相等,若相等,则结束聚类
        if np.all(center == new_center):
            break
        else:
            center = new_center
    print('最终的聚类结果为:
    ',dist)
    plt.scatter(data, data, c=dist, s=50, cmap="Paired")
    plt.show()

    运行截图:

    散点图:

    3). 用sklearn.cluster.KMeans,鸢尾花花瓣长度数据做聚类,并用散点图显示.

    代码:

     运行散点图:

    4). 鸢尾花完整数据做聚类并用散点图显示.

    代码:

    散点图:

    5).想想k均值算法中以用来做什么?

    1、寻找聚类中心

    2、计算聚类中心均值

    3、K均值算法的可视化实现

    4、利用K均值算法实现图像压缩

    参考:简书 K均值算法的实现和应用 https://www.jianshu.com/p/889fdf63751b

  • 相关阅读:
    python模块的作用和说明
    Python列表推导式和嵌套的列表推导式
    Python数据结构 将列表作为栈和队列使用
    Python解包参数列表及 Lambda 表达式
    Python函数标注
    Python range() 函数
    python序列和其它类型的比较
    Python教程 深入条件控制
    02爬虫requests请求库
    1
  • 原文地址:https://www.cnblogs.com/heiyedeshihouh/p/12704242.html
Copyright © 2020-2023  润新知