美文网首页
sklearn make_blobs 和numpy.random

sklearn make_blobs 和numpy.random

作者: 夏liao夏天 | 来源:发表于2019-10-17 21:38 被阅读0次

sklearn make_blobs

sklearn的make_blobs是用来生成各同向性的高斯分布聚类数据。各同向性指的是各个方向之间没有关联,即数据的协方差矩阵为对角矩阵。

make_blobs参数:

n_samples:整型数int或者数组,默认为100。如果是整型数int,就是生成数据的总数,并且各个聚类的数量相等。如果是数组,则是每个聚类的数据数量。

n_features: 整型数int,默认为2。n_features为生成数据的维度。

centers: 整型数或者数组,默认为None。如果是整型数,则代表生成的聚类类数。比如是3,则会生成三个类别的数据。如果是[n_centers, n_features]的数组形式,则会以[n_centers,n_features]为中心生成数据,即均值\mu

cluster_std: 浮点数或者浮点数数组,默认为1.0。各类数据的标准差。

center_box: 一对浮点数组(最小值,最大值),默认为(-10.0, 10.0)。当数据为随机产生时的数据边界。

shuffle: 布尔值,默认为True。是否打乱数组。

random_state: 整数值,随机状态实例或者Node。

返回值:

X: [n_samples, n_features]数组。产生的数据。

y: [n_samples]数组。每个X元素对应的类别标签。

make_blobs的python示例代码。生成两类数据。第一类数据的均值为[5,5],第二类数据的均值为[-5, -5]。第一类和第二类的标准差都为2.0。

import numpy as np
from sklearn.datasets.samples_generator import make_blobs
import matplotlib.pyplot as plt

mu1 = [5,5]
mu2 = [-5,-5]
sigma1 = 2.0
sigma2 = 2.0
X,y = make_blobs(n_samples=100, n_features=2,centers=[mu1,mu2], cluster_std=[sigma1,sigma2])

color=['b','r']
for i in range(100):
    plt.scatter(X[i,0], X[i,1],c=color[y[i]],s=25,alpha=0.4,marker='o')    #T散点颜色,s散点大小,alpha透明度,marker散点形状
plt.title('random generated data')
plt.show()
image.png

numpy multivariate_normal

multivariate_normal 参数:

mean: 长度为N的一维数组。mean为N维分布的均值。

cov: 二维数组,shape为(N,N)。cov为数据分布的协方差矩阵。它必须是对称和半正定矩阵。

size: 整型数或整型数数组,可选参数。假设是(m,n,k),则生成mnk个样例数据。因为每个数据都是N维的,因此输出的shape为(m,n,k,N)。默认情况下,会返回(N-D)的样例数据。

multivariate_normal的示例代码。生成均值为[0,0],协方差矩阵为[[1,0],[0,100]]的二维高斯分布。

import numpy as np
import matplotlib.pyplot as plt

mean = [0,0]
cov = [[1,0],[0,100]]
X,y = np.random.multivariate_normal(mean,cov,5000).T
plt.plot(X,y,'x')
plt.axis('equal')
plt.show()
image.png

相关文章

网友评论

      本文标题:sklearn make_blobs 和numpy.random

      本文链接:https://www.haomeiwen.com/subject/gpxmmctx.html