zoukankan      html  css  js  c++  java
  • 第三次k均值

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

     

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

    from sklearn.datasets import load_iris
    import numpy as np

    #1数据准备
    iris=load_iris()
    data=iris['data']
    m=data.shape[1]#样本属性个数
    data.shape
    n=len(data)#样本个数
    k=3#类中心个数,即最终分类
    #数据初始化
    dist=np.zeros([n,k+1])#距离矩阵
    center=np.zeros([k,m])#初始类中心
    new_center=np.zeros([k,m])#新的类中心
    number=0
    #选中心
    center=data[:k, :]#选择前三个样本作为初始类中心
    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
            new_center[i,:]=np.mean(data[index, :])
        #判定结束
        if(np.all(center==new_center)):
            break
        else:
            center=new_center
            number=number+1
    print('聚类分析迭代慈次数:',number )
    print('最终聚类结果:',dist[:,k])

     

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

    from sklearn.datasets import load_iris
    from sklearn.cluster import KMeans
    import matplotlib.pyplot as plt

    # 获取鸢尾花数据集
    iris = load_iris()
    x = iris.data[:, 1].reshape(-1, 1)  # 鸢尾特征值,需要多少列数据训练就进行
    model = KMeans(n_clusters=3)  # 构建模型
    model.fit(x)  # 训练
    y = model.predict(x)  # 预测样本的聚类索引
    print("预测结果:", y)
    k= model.cluster_centers_
    print("聚类中心:", k)
    plt.scatter(x[:, 0], x[:, 0], c=y, s=50, cmap='rainbow')
    plt.show()

     

     

     

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

    from sklearn.datasets import load_iris
    from sklearn.cluster import KMeans
    import matplotlib.pyplot as plt

    # 获取鸢尾花数据集
    iris = load_iris()
    x = iris.data  # 鸢尾花花瓣长度数据
    model = KMeans(n_clusters=3)  # 构建模型
    model.fit(x)  # 这里训练所有数据
    y = model.predict(x)  # 预测每个样本的聚类索引
    print("预测结果:", y)
    k = model.cluster_centers_   # 聚类中心
    print("聚类中心:", k)
    plt.scatter(x[:, 2], x[:, 3], c=y, s=50, cmap='rainbow')
    plt.show()

     

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

    每一样事物都有其属性,世界上'' 没有一片完全相同的叶子'',最根本的原因是:每一样的事物本身的属性不是跟其它任何事物的完全相同。但是我们分析和描述客观自然事物的时候,往往是基于对某一事物重要的、突出的和具有普遍性的属性来进行归门别类。通过聚类来描述物体本身最微小的差别,来进行归类,像极了我们阅人无数,通过大量的人来进行学习,来分辨各类各样的人,所以机器学习中通过这些微小的差别进行分辨事物。

  • 相关阅读:
    UE4 WCF RestFul 服务器 读取JSON 数据并解析 简单实例
    Android aidl Binder框架浅析
    AIDL
    android 五种存储方式
    Android进程间通信机制
    Service全面总结
    Android平台中关于音频播放
    Android广播机制
    Cursor,CursorAdapter中的观察者模式解析
    ContentProvider和Uri详解
  • 原文地址:https://www.cnblogs.com/xuechendong/p/12697820.html
Copyright © 2011-2022 走看看