在本章的第一个例子中,我们知道鸢尾花的类别,采用监督学习算法对模型进行训练。如果给定一些数据,例如商品评论、球员的过往表现、客户购买商品的信息,我们不知道这些信息究竟应该属于哪一种类别,是否能找到一种方法对这些信息进行处理,将一些相似的对象放在一起,形成某一类别,再对这一类别进行分析。比如,对于这些商品评论,顾客是持正面态度还是负面态度,该球员是善于防守还是善于进攻,该客户是对传统商品还是对新商品更感兴趣等。我们采集到的信息可以有很多项,下面我们将采用一个二维的数据进行聚类方法的说明(易于在二维图形中表示),比如对应球员信息为助攻次数和防守次数两项数据,对应客户购买的商品选择其中购买数量最多的两项。实际上也可以将二维数据推广到多维数据。
在这个例子中,产生一组二维数据,采用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程序实现分类。
请完成一个一维/二维随机数的聚类。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。