机器学习算法-kmeans 聚类算法一

本文详细介绍了K-means聚类算法的基本步骤与评估标准,包括如何初始化聚类中心,通过迭代计算更新聚类中心,直至算法收敛。同时,通过一个Python编程示例展示了如何使用sklearn库实现K-means算法。

1.1 k-means算法的步骤

假设k=3,要分3个群体

  1. 随机在数据当中抽取3个样本,当作三个类别的中心点(k1,k2,k3)
  2. 计算其余的点分别到这3个中心点的距离,每一个样本有3个距离(a,b,c),从中选出距离最近的一个点作为自己的标记形成3个族群。
  3. 分别计算这3个族群的平均值,把3个平均值与之前的3个旧中心点进行比较

如果相同,结束聚类,算法收敛。

如果不相同:把这3个平均值当做新的中心点,从第二步开始重新开始。

1.2 k-means算法的评估标准

 

外部距离最大化,内部距离最小化。

 

1、计算蓝1到自身类别的点距离的平均值a_i

2、计算蓝1分别到红色类别,绿色类别所有的点的距离,求出平均值

b1, b2,取其中最⼩的值当做b_i

轮廓系数的范围为:[-1 1]

简单案例:

# -*- coding: utf-8 -*-

# @File    : k-means2.py
# @Date    :  2020-02-18 11:25
# @Author  : admin
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

def programmer_4():
    inputfile = '../data/zscoreddata.xls'
    k = 5
    data = pd.read_excel(inputfile)
    kmodel = KMeans(n_clusters=k, n_jobs=4)
    kmodel.fit(data)
    r1 = pd.Series(kmodel.labels_).value_counts()  # 统计各个类别的数目
    r2 = pd.DataFrame(kmodel.cluster_centers_)  # 找出聚类中心
    r = pd.concat([r2, r1], axis=1)  # 横向连接(axis=0是纵向),得到聚类中心对应的类别下的数目
    r.columns = list(data.columns) + [u'类别个数']  # 重命名表头
    print(r)
    #matlib 显示
    import matplotlib.pyplot as plt
    plt.figure(figsize=(5,5));
    colored = ["orange", "green", "blue","red","yellow"];
    colr = [colored[i] for i in kmodel.labels_];
    plt.scatter(data.values[:, 0], data.values[:, 1], color=colr);
    plt.show()
programmer_4();

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值