• 第三次作业 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

  • 相关阅读:
    作业day04
    python开发学习day03 (基本数据类型; 输入输出; 基本运算符)
    作业day03
    作业day02
    python开发学习day02 (编程语言; 解释器 ; 运行方式; IDE; 变量)
    BasePage基础页面的封装
    设定浏览器驱动
    webdriver(chrome无头浏览器)
    webdriervAPI(窗口截图)
    webdriervAPI(常用的js方法)
  • 原文地址:https://www.cnblogs.com/heiyedeshihouh/p/12704242.html
Copyright © 2020-2023  润新知