• 机器学习三


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

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

    K-means算法:

    from sklearn.datasets import load_iris
    import matplotlib.pyplot as plt
    import numpy as np
    import copy
    
    iris = load_iris()
    data = iris.data[:,1]
    def get_distance(X,Y):
        return np.sum((X-Y)**2)**0.5
    
    
    
    center=data[:3]
    last_center=center
    result=[[],[],[]]
    max_iter=10
    for i in range(max_iter):
        result = [[], [], []]
        for j in range(len(data)):
            temp = []
            for k in range(len(center)):
                temp.append(get_distance(data[j], center[k]))
            result[temp.index(min(temp))].append(data[j])
        center=[]
        for l in range(3):
            if result[l]:
                center.append(np.mean(result[l]))
            else:
                center.append(0)
        if(np.all(center == last_center)):
            break
        else:
            last_center = np.copy(center)
    
    end_result=[]
    k_result=[]
    for i in range(len(result)):
        for j in range(len(result[i])):
            end_result.append(result[i][j])
            k_result.append(i)
    print('最终聚类中心',center)
    print('最终聚类结果',end_result)
    plt.scatter(end_result,end_result,c=k_result,cmap='rainbow')
    plt.show()

    结果截图:

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

    from sklearn.datasets import load_iris
    from sklearn.cluster import KMeans
    import matplotlib.pyplot as plt
    import numpy as np
    
    iris=load_iris()
    sl = iris.data[:,1]
    X=sl.reshape(-1,1)
    est = KMeans(n_clusters=3)
    est.fit(X)
    y_kmeans=est.predict(X)
    plt.scatter(X[:,0],X[:,0],c=y_kmeans,cmap='rainbow')
    plt.show()

    结果截图:

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

    from sklearn.datasets import load_iris
    from sklearn.cluster import KMeans
    import matplotlib.pyplot as plt
    import numpy as np
    
    data=load_iris()
    x2=data.data
    k2=KMeans(n_clusters=3)
    k2.fit(x2)
    kc2=k2.cluster_centers_
    y_kmeans2=k2.predict(x2)
    print(x2)
    plt.scatter(x2[:,0],x2[:,1],c=y_kmeans2,cmap='rainbow')
    plt.show()

    结果截图:

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

    k均值算法是聚类算法,通过聚类可以更好的用来识别事物的特性,所以,k均值算法可以用来实现自动识别,通过数据训练,获取模型,根据特性,来实现自动识别。

  • 相关阅读:
    Golang Gin使用模板及框架下返回Json
    Golang Web下返回HTML内容处理方法
    Golang net.http和Gin框架下的模板--View调用后台方法 --view接收后台数据的运用 及 嵌套模板和继承模板的使用
    设置oracle编辑的快捷方式
    oracle中的异常处理方法
    游标的使用
    网站登录界面包数据库异常
    在PLSQL中不能使用中文作为查询条件查询数据
    oracle错误一览表
    oracle导入时报错
  • 原文地址:https://www.cnblogs.com/huangwenshuo/p/12694131.html
Copyright © 2020-2023  润新知