• 3.K均值算法


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

    随机抽出中心点 5,10 ,8(红色数字为牌数量,蓝色数字为聚类中心点):

     再次聚类:

     最终聚类中心结果,为:4 ,12, 8

    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)  
    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,鸢尾花花瓣长度数据做聚类,并用散点图显示。

    代码:

    from sklearn.datasets import load_iris
    import matplotlib.pyplot as plt
    from sklearn.cluster import KMeans
    
    iris = load_iris()
    data = iris.data[:, 2]
    x = data.reshape(-1, 1)
    km_model = KMeans(n_clusters=3)
    km_model.fit(x)
    y = km_model.predict(x)
    
    plt.scatter(x[:, 0], x[:, 0], c=y, s=50, cmap="rainbow")
    plt.show()

    结果:

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

    代码:

    from sklearn.datasets import load_iris
    import matplotlib.pyplot as plt
    from sklearn.cluster import KMeans
    
    iris = load_iris()
    x = iris.data
    km_model = KMeans(n_clusters=3)
    km_model.fit(x)
    y = km_model.predict(x)
    
    plt.scatter(x[:, 2], x[:, 3], c=y, s=50, cmap="Paired")
    plt.show()

    结果:

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

      行为细分:按购买历史记录细分 按应用程序,网站或平台上的活动进行细分, 根据兴趣定义角色, 根据活动监控创建配置文件

      库存分类:  按销售活动分组库存 ,按制造指标对库存进行分组

      分类传感器测量:  检测运动传感器中的活动类型 ,分组图像 ,单独的音频 ,确定健康监测中的群体  

      检测机器人或异常:  从机器人中分离出有效的活动组, 将有效活动分组以清除异常值检测

  • 相关阅读:
    三数之和
    罗马数字与整数
    Oracle 开启或关闭归档
    Oracle RMAN scripts to delete archivelog
    Oracle check TBS usage
    Oracle kill locked sessions
    场景9 深入RAC运行原理
    场景7 Data Guard
    场景4 Data Warehouse Management 数据仓库
    场景5 Performance Management
  • 原文地址:https://www.cnblogs.com/wh008/p/12711145.html
Copyright © 2020-2023  润新知