Scikit-learn机器学习-05.聚类算法
发布时间:2021-11-21 10:50:00    阅读次数:115
本系列文章介绍人工智能的基础概念和常用公式。由于协及内容所需的数学知识要求,建议初二以上同学学习。

运行本系统程序,请在电脑安装好Python、matplotlib和scikit-learn库。相关安装方法可自行在百度查找。

什么是聚类?人以群居,物以类聚。聚类就是指综合所有特征值相近的分类。聚类和上节的分类感觉都是分类,但实质是不同的。聚类的英文是Clustering,和我们之前做的分类是Classification。他们的区别如下:
分类:是给出样本数据和对应标签,然后去训练分类器,这是能达到最高精度的一种。属于有监督学习过程。

聚类:只给数据,不给标签。根据数据特征值进行分类。这类属于无监督学习过程。
那有没有半监督呢?答案是有的。半监督这个厉害了,绝大多数数据不给标签,然后给一小部分数据贴上标签,再送分类器里面,用有监督的方式解决偏聚类问题!
示例说明
我们来做个聚类例子。例子很简单。利用scikit的工具库先生成1000个随机数据。每个数据有4个特征值。每个特征值有两个参数。然后进行分1类,分2类,分3类的演示。不同类的数据用不同颜色圆圈表示。看看每次分类后的情形。聚类算法是K-Means。
这是一个非常简单的聚类例子,也许会回。如果特征值参数是4个,5个甚至100个怎么办。这就协及到降维处理。后面再说。
示例程序
		import numpy as np
		import matplotlib.pyplot as plt
		from sklearn.datasets.samples_generator import make_blobs
		from sklearn.cluster import KMeans
		  
		# X为样本特征,Y为样本簇类别, 共1000个样本,每个样本4个特征,每个特征有两个值,共4个簇,簇中心在[-1,-1], [0,0],[1,1], [2,2], 簇方差分别为[0.4, 0.2, 0.2,0.2],y在这里是不用的
		X, y = make_blobs(n_samples=1000, n_features=2, centers=[[-1,-1], [0,0], [1,1], [2,2]], cluster_std=[0.4, 0.2, 0.2, 0.2],random_state =9)
		  
		#n_clusters为分类数
		y_pred = KMeans(n_clusters=1, random_state=9).fit_predict(X)
		plt.scatter(X[:, 0], X[:, 1], c=y_pred)
		plt.show()
		

本系列文章