zoukankan      html  css  js  c++  java
  • 第三次作业 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

  • 相关阅读:
    Base64编码字符串时数据量明显变大
    Javascript中的location.href有很多种用法
    javascript中top、clientTop、scrollTop、offsetTop的讲解
    jQuery事件绑定和委托
    手机页面滑动加载数据
    阻止冒泡
    页面刷新方法
    forward 和redirect的区别
    字符转换
    导出功能
  • 原文地址:https://www.cnblogs.com/heiyedeshihouh/p/12704242.html
Copyright © 2011-2022 走看看