zoukankan      html  css  js  c++  java
  • 3.K均值算法

    4. 作业:

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

    第一种划分:

     第二种划分:

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

     代码如下:

    from sklearn.datasets import load_iris
    import numpy as np
    import random
    import matplotlib.pyplot as plt
    
    iris = load_iris()
    data = iris.data[:, 2]     # 样本的花瓣长度
    data.shape
    n = len(data)           # 样本个数
    k = 3           # 类中心的个数
    dist = np.zeros([n, k+1])       # 初始化距离矩阵,最后一列存放每一个样本的类别(归属的类)
    # 1、选中心
    center = random.sample(list(data), k)        # 初始化类中心,即选取前3个样本作为初始类中心
    centerNew = np.zeros(k)
    while True:
        for i in range(n):
            for j in range(k):
                dist[i, j] = np.sqrt((data[i] - center[j]) ** 2)    # 2、求距离
            dist[i, k] = np.argmin(dist[i, :k])             # 3、归类
    
        # 4、求新类中心
        for i in range(k):
            index = dist[:, k] == i         # 判断距离矩阵中最后一列归属为哪一类
            centerNew[i] = data[index].mean()
    
        # 5、判断结束
        if np.all((center == centerNew)):   # 判断新的类中心是否与上一轮的
            break
        else:
            center = centerNew
    print('150个样本的归类:', dist[:, k])
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
    plt.title('鸢尾花花瓣K-Means算法')
    plt.scatter(data, data, c=dist[:, k], cmap='rainbow')
    plt.show()

    运行效果图如下:

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

    代码如下图:

     运行结果图:

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

    代码如下图:( 需要引入的包见上一题 )

     运行结果图:

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

    答:K均值算法能够把样本根据需要划分为具有不同特征的样本集,以这些样本集来训练出来的模型可以很好的起到预测的作用。例如:一堆有明确直径的球体,可以通过K均值算法很快的分出大、中、小球。

  • 相关阅读:
    LoadRunner出现error问题及解决方法总结
    使用cookie绕过登录进行性能测试
    性能测试中如何定位性能瓶颈
    关于函数lr_eval_string
    Loadrunner脚本编程(1)大体思路
    Myeclipse 9集成 TestNG
    Page Speed
    Android problems
    10204_vista_w2k8_x64_production_db oracle installed on windows7 64bits
    Don't Live with Broken windows——不能容忍破窗户
  • 原文地址:https://www.cnblogs.com/chenhaowen-shuaishuaide/p/12712236.html
Copyright © 2011-2022 走看看