【机器学习】<刘建平Pinard老师博客学习记录>机器学习算法的随机数据生成
2021/12/25 12:37:11
本文主要是介绍【机器学习】<刘建平Pinard老师博客学习记录>机器学习算法的随机数据生成,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
一、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生成随机数:
Numpy比较适合用来生产一些简单的抽样数据。API都在random类中,常见的API有:
- rand(d0, d1, ..., dn) 用来生成d0 x d1 x ... dn维的数组。数组的值在[0,1)之间:
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
- randint(low[, high, size]),生成随机的大小为size的数据,size可以为整数,为矩阵维数,或者张量的维数。值位于半开区间 [low, high)。
- random_integers(low[, high, size]),和上面的randint类似,区别在与取值范围是闭区间[low, high]。
- random_sample([size]), 返回随机的浮点数,在半开区间 [0.0, 1.0)。如果是其他区间[a,b),可以加以转换(b - a) * random_sample([size]) + a
二、Scikit-learn随机数据生成API介绍:
Scikit-learn生成随机数据的API都在datasets类之中,和Numpy比起来,可以用来生成适合特定机器学习模型的数据。常用的API有:
- 用make_regression 生成回归模型的数据
- 用make_hastie_10_2,make_classification或者make_multilabel_classification生成分类模型数据
- 用make_blobs生成聚类模型数据
- 用make_gaussian_quantiles生成分组多维正态分布的数据
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
三、Scikit-learn随机数据生成实例:
1.回归模型随机数据:
这里我们使用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)
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)
机器学习算法的随机数据生成 - 刘建平Pinard - 博客园 (cnblogs.com)https://www.cnblogs.com/pinard/p/6047802.html
这篇关于【机器学习】<刘建平Pinard老师博客学习记录>机器学习算法的随机数据生成的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-17机器学习资料入门指南
- 2024-12-06如何用OpenShift流水线打造高效的机器学习运营体系(MLOps)
- 2024-12-06基于无监督机器学习算法的预测性维护讲解
- 2024-12-03【机器学习(六)】分类和回归任务-LightGBM算法-Sentosa_DSML社区版
- 2024-12-0210个必须使用的机器学习API,为高级分析助力
- 2024-12-01【机器学习(五)】分类和回归任务-AdaBoost算法-Sentosa_DSML社区版
- 2024-11-28【机器学习(四)】分类和回归任务-梯度提升决策树(GBDT)算法-Sentosa_DSML社区版
- 2024-11-26【机器学习(三)】分类和回归任务-随机森林(Random Forest,RF)算法-Sentosa_DSML社区版
- 2024-11-18机器学习与数据分析的区别
- 2024-10-28机器学习资料入门指南