码迷,mamicode.com
首页 > 其他好文 > 详细

随机数据的生成

时间:2019-12-06 13:59:28      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:一个   转换   and   tiles   模型   ati   mat   gaussian   lob   

import numpy as np
# (1)random(d0,d1,....dn)用来生成d0*d1*....*dn维的数组。数组的值在[0,1)之间
np.random.rand(3,2,2)#生成一个3*2*2的数组

    array([[[0.10141273, 0.97087629],
        [0.57045156, 0.62780166]],

       [[0.15425975, 0.21828791],
        [0.03630166, 0.60174227]],

       [[0.20345412, 0.51719419],
        [0.77047215, 0.67555402]]])


# randn(d0,d1,....dn),也是用来生成d0*d1*...dn维的数组,不过数组的值服从N(0,1)的标准生态分布。
np.random.randn(3,2)#输出如下3*2的数组,这些值是N(0,1)的抽样数据;如果需要服从N(μ,σ2)的正态分布,只需要在randn上每个生成的值x上做变换σx+μ即可

    
Out[3]:
array([[ 0.34949238, -1.39017794],
       [ 1.27691143, -0.71375712],
       [-0.56303407,  0.96331818]])


# randint(low,[,high,size]),生成随机的大小为size的数据,size可以为整数,为矩阵位数,或者张量的位数,值位于半开区间[low,high)
np.random.randint(3,size=[2,3,4])

    
Out[4]:
array([[[2, 1, 0, 0],
        [2, 0, 0, 1],
        [1, 1, 1, 0]],

       [[1, 0, 0, 1],
        [2, 2, 2, 2],
        [0, 0, 0, 1]]])


# random_integers(low[,high,size]),和上面的randint类似,区别在于取值范围是闭区间【low,high】
# random_sample([size]),返回随机的浮点数,在半开区间【0.0,1.0)如果是其他区间【a,b),可以加以转换[a,b),可以加以转换(b-a*random_sample([size])+a
# scikit_learn随机数据生成api介绍
# sklearn生成随机数据的api都在datasets类之中,和numpy比起来,可以用来生成适合特定机器学习模型的数据。常见的api有:
# 1、用make_regression生成回归模型数据
# 2、用make_hastie_10_2,make_classification或者make_multilabel_classification生成分类模型数据
# 3、用make_blobs生成聚类模型数据
# 4、用make_gaussian_quantiles生成


# 1、回归模型随机数据
# 使用make_regression生成回归模型数据。几个关键参数有n_samples(生成样本数), n_features(样本特征数),noise(样本随机噪音)和coef(是否返回回归系数)。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.datasets.samples_generator import make_regression
# X为样本特征,y为样本输出,coef为回归系数,共1000个样本,每个样本1个特征
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(())
plt.yticks(())
plt.show()


# 2、分类模型随机数据
# 用make_classification生成三元分类模型数据。几个关键参数有n_samples(生成样本数), n_features(样本特征数), n_redundant(冗余特征数)和n_classes(输出的类别数)
import numpy as np
import matplotlib.pyplot as plt 
%matplotlib inline
from sklearn.datasets.samples_generator import make_classification
# X1为样本特征,Y1为样本类别输出,共400个样本,每个样本2个特征,输出有3个类别,没有冗余特征,每个类别一个簇
X1,Y1 = make_classification(n_samples=400,n_features = 2,n_redundant=0,n_clusters_per_class=1,n_classes=3)
plt.scatter(X1[:,0],X1[:,1],marker=o,c=Y1)
plt.show()


#3、聚类模型随机数据
#用make_blobs生成聚类模型数据。几个关键参数有n_samples(生成样本数), n_features(样本特征数),centers(簇中心的个数或者自定义的簇中心)和cluster_std(簇数据方差,代表簇的聚合程度)
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.datasets.samples_generator import make_blobs
# X为样本特征,Y为样本簇类别,共1000个样本,每个样本2个特征,共3个簇,簇中心为[-1,-1],[1,1],[2,2],簇方差分别为[0.4,0.5,0.2]]
X,y = make_blobs(n_samples=1000,n_features=2,centers=[[-1,-1],[1,1],[2,2]],cluster_std=[0.4,0.5,0.2])
plt.scatter(X[:,0],X[:,1],marker=o,c=y)
plt.show()


# 4、分组正态分布混合数据
# 用make_gaussian_quantiles生成分组多维正态分布的数据。几个关键参数有n_samples(生成样本数), n_features(正态分布的维数),mean(特征均值), cov(样本协方差的系数), n_classes(数据在正态分布中按分位数分配的组数)。
import numpy as np
import matplotlib.pyplot as plt 
%matplotlib inline
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)

 

随机数据的生成

标签:一个   转换   and   tiles   模型   ati   mat   gaussian   lob   

原文地址:https://www.cnblogs.com/spp666/p/11994499.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!