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

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

        (红色数字为样本数量)随机抽出中心点 7,5 ,4:

        

       经过聚类后选出新中心:9,6,3

        

        再次进行聚类,获得最终聚类结果,中心点值为:10,6,3

        

     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)  # 随机取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均值算法中以用来做什么?

       1.文档分类器

       根据标签、主题和文档内容将文档分为多个不同的类别。这是一个非常标准且经典的K-means算法分类问题。首先,需要对文档进行初始化处理,将每个文档都用矢量来表示,并使用术语频率来识别常用术语进行文档分类,这一步很有必要。然后对文档向量进行聚类,识别文档组中的相似性。

      2.物品传输优化

       使用K-means算法的组合找到无人机最佳发射位置和遗传算法来解决旅行商的行车路线问题,优化无人机物品传输过程。

      3.识别犯罪地点

       使用城市中特定地区的相关犯罪数据,分析犯罪类别、犯罪地点以及两者之间的关联,可以对城市或区域中容易犯罪的地区做高质量的勘察。

      4.客户分类

       聚类能过帮助营销人员改善他们的客户群(在其目标区域内工作),并根据客户的购买历史、兴趣或活动监控来对客户类别做进一步细分。

      5.球队状态分析

       分析球员的状态一直都是体育界的一个关键要素。随着竞争越来愈激烈,机器学习在这个领域也扮演着至关重要的角色。如果你想创建一个优秀的队伍并且喜欢根据球员状态来识别类似的球员,那么K-means算法是一个很好的选择。

      6.保险欺诈检测

       机器学习在欺诈检测中也扮演着一个至关重要的角色,在汽车、医疗保险和保险欺诈检测领域中广泛应用。利用以往欺诈性索赔的历史数据,根据它和欺诈性模式聚类的相似性来识别新的索赔。由于保险欺诈可能会对公司造成数百万美元的损失,因此欺诈检测对公司来说至关重要。

      7.乘车数据分析

       面向大众公开的Uber乘车信息的数据集,为我们提供了大量关于交通、运输时间、高峰乘车地点等有价值的数据集。分析这些数据不仅对Uber大有好处,而且有助于我们对城市的交通模式进行深入的了解,来帮助我们做城市未来规划。

      8.网络分析犯罪分子

       网络分析是从个人和团体中收集数据来识别二者之间的重要关系的过程。网络分析源自于犯罪档案,该档案提供了调查部门的信息,以对犯罪现场的罪犯进行分类。

      9.呼叫记录详细分析

       通话详细记录(CDR)是电信公司在对用户的通话、短信和网络活动信息的收集。将通话详细记录与客户个人资料结合在一起,这能够帮助电信公司对客户需求做更多的预测。

      10.IT警报的自动化聚类

       大型企业IT基础架构技术组件(如网络,存储或数据库)会生成大量的警报消息。由于警报消息可以指向具体的操作,因此必须对警报信息进行手动筛选,确保后续过程的优先级。

    参考文章:https://blog.csdn.net/weixin_34357267/article/details/89754121?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1

  • 相关阅读:
    html 的一些基础操作
    java 通过反射调用属性,方法,构造器
    java 通过反射获取类属性结构,类方法,类父类及其泛型,类,接口和包
    java 反射,类的加载过程以及Classloader类加载器
    java 随机读写访问流及seek方法
    java 序列化机制
    java 标准输入输出流,打印流,数据流
    hp400 硒鼓加粉图解
    Delphi XE5 android 获取网络状态
    Delphi XE5 常见问题解答
  • 原文地址:https://www.cnblogs.com/jwwzone/p/12694646.html
Copyright © 2011-2022 走看看