1. numpy随机数据生成
适合生成一些简单的samples.
API都在random类中,常见的API有:
随机数据生成
import numpy as np
import matplotlib.pyplot as plt
#rand(d0, d1, ..., dn)生成d0x,d1x...dn维的数组。数组的值在[0,1)之间-uniform
np.random.rand(3,2,3) #3x2x2的数组
#randn(d0, d1, ..., dn)生成d0x,d1x...dn维的数组。数组的值服从N(0,1)的标准正态分布。
#服从N(μ,σ2)的正态分布,只需要在randn上每个生成的值x上做变换σx+μ即可,例如:
2*np.random.randn(3,2)+1 #3x2的数组,N(1,4)
np.random.randint(3, 6, size=[2,3]) #2x3的数据。取值范围为[3,6). 半开区间
np.random.randint(3, size=[2,3,4]) #2x3x4的数据。取值范围为最大值为3的整数。
# random_integers( ),与randint类似,区别在与取值范围是闭区间[low, high]。
#random_sample([size]), 随机的浮点数,在半开区间 [0.0, 1.0)Uniform。
#size只能是一个数字
#如果是区间[a,b),转换(b - a) * random_sample([size]) + a
(5-2)*np.random.random_sample(3)+2 #[2,5)之间的3个随机数。
2. scikit-learn随机数据生成
API都在datasets类之中,可用来生成适合特定机器学习模型的数据。常用的API有:
-
用make_regression 生成回归模型的数据
-
用make_hastie_10_2,make_classification或者make_multilabel_classification生成分类模型数据
-
用make_blobs生成聚类模型数据
-
用make_gaussian_quantiles生成分组多维正态分布的数据
使用make_regression生成回归模型数据。几个关键参数有n_samples(生成样本数), n_features(样本特征数),noise(样本随机噪音)和coef(是否返回回归系数)。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression
X,y ,coef=make_regression(n_samples=1000, n_features=1,noise=10, coef=True)
plt.scatter(X,y, color='black')
plt.plot(X,X*coef,color='blue',linewidth=3)
plt.xticks(()) #对x轴label处理方式
plt.yticks([])
plt.show()
make_ gaussian_quantiles 生 成 分 组 多 维 正 态 分 布 的 数 据 \bf{ 生成分组多维正态分布的数据} 生成分组多维正态分布的数据。
几个关键参数有n_samples(生成样本数), n_features(正态分布的维数),mean(特征均值), cov(样本协方差的系数), n_classes(数据在正态分布中按分位数分配的组数)。
from sklearn.datasets import make_gaussian_quantiles
#生成2维正态分布,生成的数据按分位数分成3组,1000个样本,2个样本特征均值为1和2,协方差系数为2
X1, Y1 = make_gaussian_quantiles(n_samples=1000, n_features=2, n_classes=3, mean=[1,2],cov=2)
plt.scatter(X1[:, 0], X1[:, 1], marker='o', c=Y1)
plt.show()
参考资料:随机数据生成API