sklearn:make_blobs聚类数据生成器

我们来看一条make_blobs方法的具体使用代码:

x,y=make_blobs(n_samples=500,n_features=2,centers=4)

其中,n_samples表示创建500个样本点,n_features表示每个样本点有两个特征也可以理解为数据的维度(比如说每个样本点对应有x向量和y向量),centers=4表示类别数。

我们在Jupyter Notebook中输入这条代码来具体看一看x和y分别指的是什么
sklearn:make_blobs聚类数据生成器_第1张图片
sklearn:make_blobs聚类数据生成器_第2张图片
通过上面两张图片我们可以发现,x是一个500x2的矩阵,对应的就是我们生成的500个具有二维特征的随机样本啦!输出y我们可以发现,y对应了500个数字(这里并不能说是一维矩阵,因为如果是一维矩阵那么y应该是[[0 2 1 1…]],有两个中括号,而我们发现上图只有一个中括号。这个时候的y是不能拿来参加矩阵运算的,可以用newaxis或者reshape将其转化为一维矩阵),而通过观察y的数值我们可以知道y从0到3有四种可能,这可不就是我们一开始在代码中通过centers=4规定好的类别数吗,所以y中保存的信息是每一个样本的所属类别。

来看看通过上述代码生成的数据是怎么分布的吧
sklearn:make_blobs聚类数据生成器_第3张图片
我们再看一条代码:

x,y=make_blobs(n_samples=500,n_features=2,centers=4,random_state=1)

这里多了random_state,官网解释是随机生成器的种子,可以固定生成的数据,给定数之后,每次生成的数据集就是固定的。若不给定值,则由于随机性将导致每次运行程序所获得的的结果可能有所不同。

我们看看当我们不加random_state的时候,分开两次运行代码得到的数据分布是不同的,如下图:
sklearn:make_blobs聚类数据生成器_第4张图片
sklearn:make_blobs聚类数据生成器_第5张图片
而加上之后前后连续两次结果都是一样的没有任何改变
sklearn:make_blobs聚类数据生成器_第6张图片

参考博文:
make_blobs方法的使用

你可能感兴趣的:(笔记,机器学习,python)