python数据分析之K-Means(K均值算法)实践

本文介绍了K-Means算法,一种常见的无监督聚类方法。K-Means通过迭代找到样本的最佳簇分配,目标是最小化簇内误差平方和。文章详细阐述了算法步骤、优化目标、优缺点,并对比了K-Means++和Mini Batch K-Means两种优化算法。此外,还探讨了如何确定合适的K值。
摘要由CSDN通过智能技术生成


1、监督学习和无监督学习
1.1 监督学习
  • 监督学习:训练数据包含我们要预测的结果(训练数据中含有样本的标签),我们对含有标签的训练集建立模型,从而能够对未知标签的样本进行预测。
  • 线性回归、逻辑回归、KNN、朴素贝叶斯、决策树等算法都属于监督学习。
1.2 非监督学习
  • 非监督学习是与监督学习相对应的
  • 非监督学习:训练数据中不包含标签
2、聚类
  • 聚类属于无监督学习
  • 聚类的目的是根据样本数据内部的特征,将数据划分为若干个类别,每个类别就是一个簇,结果使得同一个簇内的数据,相似度较大,而不同簇内的数据,相似度较小。
  • 聚类也称为“无监督的分类”,其样本的相似性是根据距离来度量的。
3、K-Means算法
  • K-Means算法,即K均值算法,是最常见的一种聚类的算法。
  • K-Means算法会将数据集分为K个簇,每个簇使用簇内的所有样本的均值来表示,我们将该均值称为“质心”。
3.1 算法步骤

(1)从样本中选择K个点作为初始质心

(2)计算每个样本到各个质心的距离,将样本划分到距离最近的质心所对应的簇中。

(3)计算每个簇内所有样本的均值,并使用该均值更新簇的质心。

(4)重复步骤(2)、(3),直到达到以下条件之一结束:

  • 质心的位置变化小于指定的阈值
  • 达到最大迭代次数
3.2 算法优化目标
  • K-Means算法的目标就是选择合适的质心,使得每个簇内,样本距离质心的距离尽可能的小,这样就可以保证簇内样本具有较高的相似性。
  • 可以使用最小化簇内误差平方和(SSE)来作为优化算法的量化目标(目标函数),簇内误差平方和也称为簇惯性。
    在这里插入图片描述
3.3 算法优缺点

K-Means算法优点:

  • 理解和实现简单
  • 可以很好的扩展到大量样本中
  • 广泛应用于不同领域,如发现不同的用户群体进行有效的商品推荐等。

K-Means算法缺点:

  • 需要事先指定K值,如果K值选择不当,聚类效果可能不佳。
  • 聚类结果受初始化质心的影响,可能会收敛到局部最小值。
  • 适用于凸形的数据分布,对于条形或不规则形状的数据,效果较差。
3.4 K-Means实践

假设班级有50名学生参加期末考试,考试科目为语文和数学,分数在70-100分之间,现在想根据分数将学生分成若干个类别。

用np.random.ranint(),随机生成成绩,并绘制学生成绩的散点图:

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams["font.family"] = "SimHei" 
plt.rcParams["axes.unicode_minus"] = False 
plt.rcParams["font.size"] = 12

np.random.seed(1)
X = np.random.randint(70, 100, size=(50, 2))    # 生成样本数据
plt.scatter(X[:, 0], X[:, 1]) 
plt.xlabel("语文")
plt.ylabel("数学")

在这里插入图片描述

使用scikit-learn中提供的KMeans类,实现K均值聚类,并在训练完成后,获取相关属性值:

from sklearn.cluster import KMeans

kmeans = KMeans(n_clusters=4)      # n_clusters:簇的数量。
kmeans.fit(X)

print("质心:", kmeans.cluster_centers_)		# 获取聚类后的质心。
print("标签:", kmeans.labels_)		# 获取每个样本所属的簇。标签的数值对应所属簇的索引。 
print
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值