首页 理论教育 Python与AI编程(下)-第三节简单聚类示例

Python与AI编程(下)-第三节简单聚类示例

时间:2023-11-08 理论教育 版权反馈
【摘要】:我们举个生活中的例子进行说明。小P来总结利用Python做机器学习,可以暂时不知道每个算法的细节及实现,只专注在解决问题上,通过学习一个实例,掌握其解决问题的过程和步骤,这样同学们在解决新的问题上就能举一反三了。在使用Python解决机器学习问题时,无须成为一个专业的编程者。本章小结本章介绍了人工智能的分支之一——机器学习——的一些应用实例以及Python程序的实现。

Python与AI编程(下)-第三节简单聚类示例

在本章的第一个例子中,我们知道鸢尾花的类别,采用监督学习算法对模型进行训练。如果给定一些数据,例如商品评论、球员的过往表现、客户购买商品的信息,我们不知道这些信息究竟应该属于哪一种类别,是否能找到一种方法对这些信息进行处理,将一些相似的对象放在一起,形成某一类别,再对这一类别进行分析。比如,对于这些商品评论,顾客是持正面态度还是负面态度,该球员是善于防守还是善于进攻,该客户是对传统商品还是对新商品更感兴趣等。我们采集到的信息可以有很多项,下面我们将采用一个二维的数据进行聚类方法的说明(易于在二维图形中表示),比如对应球员信息为助攻次数和防守次数两项数据,对应客户购买的商品选择其中购买数量最多的两项。实际上也可以将二维数据推广到多维数据。

在这个例子中,产生一组二维数据,采用k-mean方法进行聚类。聚类算法的核心一般是通过距离来确定的,即通过计算样本数据与聚类中心(一般随机初始化)的距离来判断,如果两者距离最近(最近并不表示很相像,只是在与整个聚类中心的比较中相对更接近一些),则该样本归到这一类,而这个聚类中心也在调整,调整的方向和这一类中的大部分样本接近。我们举个生活中的例子进行说明。假定在一个班里成立兴趣小组,有自然、美术科学3个小组。现在同学们根据自己的兴趣只能选择一个小组,那么同学们会选择和自己兴趣最接近的小组,这个小组可以看作初始的聚类中心,这些同学是样本数据。随着同学们的加入,假如自然小组中大部分的同学都喜欢植物,那么这个聚类中心就慢慢演化为植物小组。某加入的同学原本喜欢动物和画动物,一开始他选择了自然组,但在聚类中心发生偏移后,他可能就会换成美术组。在这个例子中,希望同学们能够体会到“物以类聚,人与群分”的含义,以及聚类的发生是一种自发的行为,而聚类中心会随着它的成员特点而发生演变,最终成为更具有代表性的中心。

该例子的程序参考http://www.machinelearningtutorial.net/2017/02/15/pythonk-means-clustering/。

-----------------------part 1导入库-----------------------

#导入各种库

from sklearn.datasets.samples_generator import make_blobs

from sklearn.datasets.samples_generator import make_circles

from sklearn.datasets.samples_generator import make_moons

from sklearn.datasets.samples_generator import make_s_curve

import matplotlib.pyplot as plt

from sklearn.cluster import KMeans

----------------------part 2生成数据----------------------

#生成数据并画图,采用make_blobs()函数实现

n=1500

X,y=make_blobs(n_samples=n,

n_features=3,

random_state=42)

plt.scatter(X[:,0],X[:,1])(www.xing528.com)

----------------------part 3进行聚类----------------------

#进行聚类,采用k-mean算法进行聚类,调用KMeans()函数,其中参数n_clusters为聚类中心的个数,即最终数据会被分为几类

kmeans=KMeans(n_clusters=3,random_state=0)

kmeans.fit(X)

plt.scatter(X[:,0],X[:,1],c=kmeans.labels_)

plt.scatter(kmeans.cluster_centers_[:,0],kmeans.cluster_centers_[:,1],s=50,c='yellow')

这样我们就完成了对数据的聚类,上图中用不同颜色表示不同的类别,黄色的点表示聚类中心,可以看出聚类中心处于某一类数据点的重心位置,成为这一类的代表。

小P来总结

利用Python做机器学习,可以暂时不知道每个算法的细节及实现,只专注在解决问题上,通过学习一个实例,掌握其解决问题的过程和步骤,这样同学们在解决新的问题上就能举一反三了。

在使用Python解决机器学习问题时,无须成为一个专业的编程者。掌握了最基本的编程语法,包括数据类型、函数以及面向对象的基础部分,就可以开始解决问题之路。最常用的Python语句是定义合适的数据类型,如列表,然后就是函数的调用。

在解决问题时,一开始也无须成为一名机器学习专家,我们可以慢慢了解不同算法的优点和局限性,但是要掌握如何采用模型解决问题的步骤,特别要注意对模型的校验。在一开始,我们需要掌握的关键步骤包括导入数据(数据准备)、查看数据(数据的个数、属性、分布范围)、建立模型、评估模型算法的优劣、进行预测。

本章小结

本章介绍了人工智能的分支之一——机器学习——的一些应用实例以及Python程序的实现。在这一章请同学们重点掌握建立模型的一般步骤和方法,并能够区分监督学习和无监督学习,能够根据实际问题的特点采用合适的模型和算法,并能够用Python程序实现。

本章习题

请选取UCI数据库中的wine数据集(http://archive.ics.uci.edu/ml/datasets/Wine),用Python程序实现分类。

请完成一个一维/二维随机数的聚类。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈