ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-12-25 12:30:55  阅读:225  来源: 互联网

标签:机器 Pinard 样本 生成 学习 learn import 数据 make


目录

一、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,样本,生成,学习,learn,import,数据,make
来源: https://blog.csdn.net/weixin_52058417/article/details/122141137

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有