机器学习

【机器学习】<刘建平Pinard老师博客学习记录>机器学习算法的随机数据生成

本文主要是介绍【机器学习】<刘建平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)icon-default.png?t=LA92https://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中文社区icon-default.png?t=LA92https://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)icon-default.png?t=LA92https://www.cnblogs.com/pinard/p/6047802.html

这篇关于【机器学习】<刘建平Pinard老师博客学习记录>机器学习算法的随机数据生成的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!