zoukankan      html  css  js  c++  java
  • 作业3-k均值算法

    4. 作业:

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

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

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

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

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

    答:

    (1)

    第一轮:13、10、5

    第二轮:13、9、4

    (2)

    import matplotlib.pyplot as plt
    from sklearn.datasets import load_iris
    import numpy as np
    #导入数据
    iris = load_iris()
    data = iris.data   # 数据值
    data.shape     # 可知数据的总数和属性个数
    n = len(data)  # 数据集样本个数
    m = data.shape[1]  # 数据的属性个数
    # 类中心个数(1-5)
    k = 3
    dist = np.zeros([n, k+1])  # k+1是最后一列要归类
    # 选中心
    center = data[:k, :]    # k为3所以是前三行所有属性
    centerNew = np.zeros([k, m])  # 初始化新的类中心
    while True:
        # 求距离
        for i in range(n):
            for j in range(k):
                dist[i, j] = np.sqrt(sum((data[i, :]-center[j, :])**2))    # 求欧式距离
        # 归类
            dist[i, k] = np.argmin(dist[i, :k])
        for i in range(k):
            index = dist[:, k] == i
            centerNew[i, :] = data[index, :].mean(axis=0)
        # 判定结果
        if np.all((center == centerNew)):
            break
        else:
            center = centerNew
    print("聚类结果:
    ", dist[:, k])
    # print(data[:,k])
    plt.scatter(data[:,2], data[:,2], c=dist[:,2], s=50, cmap='rainbow')
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体
    plt.title("K-mean-鸢尾花花瓣长度做聚类的散点图")
    plt.show()

    (3)

    # 用sklearn.cluster.KMeans,鸢尾花花瓣长度数据做聚类,并用散点图显示.
    import matplotlib.pyplot as plt
    from sklearn.datasets import load_iris
    from sklearn.cluster import KMeans
    
    iris = load_iris()    # 导入鸢尾花数据
    # print(iris)
    X = iris.data[:, 2]   # 第三列为花瓣长度
    X = X.reshape(-1, 1)  # 令新数组列为1
    # print(X)
    y = KMeans(n_clusters=3)   # 模型构建(类中心数为3)
    y.fit(X)                   # 模型训练
    kc = y.cluster_centers_    # 聚类中心
    y_kmeans = y.predict(X)    # 预测每个样本的聚类索引
    print("聚类结果:
    ", y_kmeans)
    print("聚类中心:
    ", kc)
    plt.scatter(X[:, 0], X[:, 0], c=y_kmeans, s=50, cmap='rainbow')  # 画散点图
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体
    plt.title("sklearn.cluster.KMeans-鸢尾花花瓣长度做聚类的散点图")
    plt.show()

     

    (4)

    # 鸢尾花完整数据做聚类并用散点图显示.
    import matplotlib.pyplot as plt
    from sklearn.datasets import load_iris
    from sklearn.cluster import KMeans
    
    iris = load_iris()   # 导入鸢尾花数据
    X = iris.data        # 鸢尾花完整数据
    # print(X)
    y = KMeans(n_clusters=3)  # 模型构建(类中心数为3)
    y.fit(X)                  # 模型训练
    kc = y.cluster_centers_   # 聚类中心
    y_kmeans = y.predict(X)   # 预测每个样本的聚类索引
    print("聚类结果:
    ", y_kmeans)
    print("聚类中心:
    ", kc)
    plt.scatter(X[:, 2], X[:, 3], c=y_kmeans, s=50, cmap='rainbow')  # 画散点图
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体
    plt.title("鸢尾花做聚类的散点图")
    plt.show()

     

    (5)可以通过k均值算法进行库存分类,例如按销售活动分组库存或者按制造指标对库存进行分组,也可以用来识别不同类型的癌症特征。

  • 相关阅读:
    steam
    node 循序渐进
    node 常用指令 node 扩展链接
    window 常用指令
    web API
    SHAREPOINT
    div设置边框黑框显示
    sharepoint更新多行文本webparth
    sharepoint读取启用了追加功能的多行文本的历史版本记录
    JS实现多附件上传(asp.net)
  • 原文地址:https://www.cnblogs.com/kushoulder/p/12715283.html
Copyright © 2011-2022 走看看