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]为中心生成数据,即均值。
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()
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()