目录
一、Numpy生成随机数:
二、Scikit-learn随机数据生成API介绍:
三、Scikit-learn随机数据生成实例:
1.回归模型随机数据:
2.分类模型随机数据:
3.聚类模型随机数据:
4.分组正态分布混合数据:
在学习机器学习算法的过程中,我们经常需要数据来验证算法,调试参数。但是找到一组十分合适某种特定算法类型的数据样本却不那么容易。还好numpy, scikit-learn都提供了随机数据生成的功能,我们可以自己生成适合某一种模型的数据,用随机数据来做清洗,归一化,转换,然后选择模型与算法做拟合和预测。下面对scikit-learn和numpy生成数据样本的方法做一个总结。
这里是老师提供的完整代码地址(GitHub):machinelearning/random_data_generation.ipynb at master · ljpzzz/machinelearning (github.com)https://github.com/ljpzzz/machinelearning/blob/master/mathematics/random_data_generation.ipynb
在开始练习使用API之前需要安装依赖&导入库:
import numpy as np # Numpy依赖 import matplotlib.pyplot as plt # matplotlib的Python库 %matplotlib inline
Numpy比较适合用来生产一些简单的抽样数据。API都在random类中,常见的API有:
np.random.rand(3,2,2)
randn((d0, d1, ..., dn), 也是用来生成d0 x d1 x ... dn 维的数组。不过数组的值服从N(0,1)的标准正态分布。例如:np.random.randn(3,2),输出如下3x2的数组,这些值是N(0,1)的抽样数据。
np.random.randn(3,2)
2*np.random.randn(3,2) + 1
Scikit-learn生成随机数据的API都在datasets类之中,和Numpy比起来,可以用来生成适合特定机器学习模型的数据。常用的API有:
Scikit-learn中文社区:
scikit-learn中文社区https://scikit-learn.org.cn/Scikit-learn数据集 API:
API 参考-scikit-learn中文社区Scikit-learn(以前称为scikits.learn,也称为sklearn)是针对Python 编程语言的免费软件机器学习库。它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度提升,k均值和DBSCAN。Scikit-learn 中文文档由CDA数据科学研究院翻译,扫码关注获取更多信息。https://scikit-learn.org.cn/lists/3.html#sklearn.datasets%EF%BC%9A%E6%95%B0%E6%8D%AE%E9%9B%86
这里我们使用make_regression生成回归模型数据。几个关键参数有n_samples(生成样本数), n_features(样本特征数),noise(样本随机噪音)和coef(是否返回回归系数)。例子代码如下:
import numpy as np import matplotlib.pyplot as plt %matplotlib inline # 导入sklearn学习库 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) # 使用matplotlib绘图: plt.scatter(X, y, color='red') plt.plot(X, X*coef, color='blue', linewidth=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()
这里我们用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()
我们用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)
机器学习算法的随机数据生成 - 刘建平Pinard - 博客园 (cnblogs.com)https://www.cnblogs.com/pinard/p/6047802.html