首页 > 其他分享 >【scikit-learn基础】--『数据加载』之样本生成器

【scikit-learn基础】--『数据加载』之样本生成器

时间:2023-12-08 09:02:34浏览次数:46  
标签:noise -- make scikit 生成器 plt samples ax 数据

除了内置的数据集,scikit-learn还提供了随机样本的生成器。
通过这些生成器函数,可以生成具有特定特性和分布的随机数据集,以帮助进行机器学习算法的研究、测试和比较。

目前,scikit-learn库(v1.3.0版)中有20个不同的生成样本的函数。
本篇重点介绍其中几个具有代表性的函数。

1. 分类聚类数据样本

分类和聚类是机器学习中使用频率最高的算法,创建各种相关的样本数据,能够帮助我们更好的试验算法。

1.1. make_blobs

这个函数通常用于可视化分类器的学习过程,它生成由聚类组成的非线性数据集。

import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs

X, Y = make_blobs(n_samples=1000, centers=5)
plt.scatter(X[:, 0], X[:, 1], marker="o", c=Y, s=25)

plt.show()

image.png
上面的示例生成了1000个点的数据,分为5个类别。

make_blobs的主要参数包括:

  • n_samples:生成的样本数。
  • n_features:每个样本的特征数。通常为2,表示我们生成的是二维数据。
  • centers:聚类的数量。即生成的样本会被分为多少类。
  • cluster_std:每个聚类的标准差。这决定了聚类的形状和大小。
  • shuffle:是否在生成数据后打乱样本。
  • random_state:随机数生成器的种子。这确保了每次运行代码时生成的数据集都是一样的。

1.2. make_classification

这是一个用于生成复杂二维数据的函数,通常用于可视化分类器的学习过程或者测试机器学习算法的性能。

import matplotlib.pyplot as plt
from sklearn.datasets import make_classification

X, Y = make_classification(n_samples=100, n_classes=4, n_clusters_per_class=1)
plt.scatter(X[:, 0], X[:, 1], marker="o", c=Y, s=25)

plt.show()

image.png
可以看出它生成的各类数据交织在一起,很难做线性的分类。

make_classification的主要参数包括:

  • n_samples:生成的样本数。
  • n_features:每个样本的特征数。这个参数决定了生成的数据集的维度。
  • n_informative:具有信息量的特征的数量。这个参数决定了特征集中的特征有多少是有助于分类的。
  • n_redundant:冗余特征的数量。这个参数决定了特征集中的特征有多少是重复或者没有信息的。
  • random_state:随机数生成器的种子。这确保了每次运行代码时生成的数据集都是一样的。

1.3. make_moons

和函数名称所表达的一样,它是一个用于生成形状类似于月牙的数据集的函数,通常用于可视化分类器的学习过程或者测试机器学习算法的性能。

from sklearn.datasets import make_moons

fig, ax = plt.subplots(1, 3)
fig.set_size_inches(9, 3)

X, Y = make_moons(noise=0.01, n_samples=1000)
ax[0].scatter(X[:, 0], X[:, 1], marker="o", c=Y, s=25)
ax[0].set_title("noise=0.01")

X, Y = make_moons(noise=0.05, n_samples=1000)
ax[1].scatter(X[:, 0], X[:, 1], marker="o", c=Y, s=25)
ax[1].set_title("noise=0.05")

X, Y = make_moons(noise=0.5, n_samples=1000)
ax[2].scatter(X[:, 0], X[:, 1], marker="o", c=Y, s=25)
ax[2].set_title("noise=0.5")

plt.show()

image.png
noise越小,数据的分类越明显。

make_moons的主要参数包括:

  • n_samples:生成的样本数。
  • noise:在数据集中添加的噪声的标准差。这个参数决定了月牙的噪声程度。
  • random_state:随机数生成器的种子。这确保了每次运行代码时生成的数据集都是一样的。

2. 回归数据样本

除了分类聚类回归是机器学习的另一个重要方向。
scikit-learn同样也提供了创建回归数据样本的函数。

from sklearn.datasets import make_regression

fig, ax = plt.subplots(1, 3)
fig.set_size_inches(9, 3)

X, y = make_regression(n_samples=100, n_features=1, noise=20)
ax[0].scatter(X[:, 0], y, marker="o")
ax[0].set_title("noise=20")

X, y = make_regression(n_samples=100, n_features=1, noise=10)
ax[1].scatter(X[:, 0], y, marker="o")
ax[1].set_title("noise=10")

X, y = make_regression(n_samples=100, n_features=1, noise=1)
ax[2].scatter(X[:, 0], y, marker="o")
ax[2].set_title("noise=1")

plt.show()

image.png
通过调节noise参数,可以创建不同精确度的回归数据。

make_regression的主要参数包括:

  • n_samples:生成的样本数。
  • n_features:每个样本的特征数。通常为一个较小的值,表示我们生成的是一维数据。
  • noise:噪音的大小。它为数据添加一些随机噪声,以使结果更接近现实情况。

3. 流形数据样本

所谓流形数据,就是S形或者瑞士卷那样旋转的数据,可以用来测试更复杂的分类模型的效果。
比如下面的make_s_curve函数,就可以创建S形的数据:

from sklearn.datasets import make_s_curve

X, Y = make_s_curve(n_samples=2000)

fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
fig.set_size_inches((8, 8))
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=Y, s=60, alpha=0.8)
ax.view_init(azim=-60, elev=9)
plt.show()

image.png

4. 总结

本文介绍的生成样本数据的函数只是scikit-learn库中各种生成器的一部分,
还有很多种其他的生成器函数可以生成更加复杂的样本数据。

所有的生成器函数请参考文档:
https://scikit-learn.org/stable/modules/classes.html#samples-generator

标签:noise,--,make,scikit,生成器,plt,samples,ax,数据
From: https://www.cnblogs.com/wang_yb/p/17884401.html

相关文章

  • 记录一下工作遇到的一个小bug,DataGrid的DataGridCheckBoxColumn 问题
    <DataTemplatex:Key="CheckBoxDataTemplate"><Grid><CheckBoxClick="CheckBox_Checked"IsChecked="{BindingIsSelect,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"><......
  • 有个死鬼一直刷咱们接口,用`手机号+验证码`在那乱撞!—— 小傅哥技术分享
    作者:小傅哥博客:https://bugstack.cn沉淀、分享、成长,让自己和他人都能有所收获!......
  • Qt6 c++教程1简介
    1Qt6简介Qt一个跨平台应用程序开发框架,旨在为桌面、嵌入式和移动平台创建具有统一用户界面(UI)的优秀软件应用程序。它为开发人员设计和构建优秀应用程序提供了一套强大的工具,而无需担心平台依赖性。本章主要内容:Qt介绍使用Qt的原因下载和安装Qt从源代码构建Qt61.1Qt简......
  • # 2023-2024-1 20231308 《计算机基础与程序设计》第十一周学习总结
    2023-2024-120231308《计算机基础与程序设计》第十一周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十一周作业这个作业的目标计算机网络,网络拓扑,云计算,网络安全,Web,HTML,CSS,Javas......
  • SV Interface and Program 2
    Clocking:激励的时许对于testbench,input(DUT输入)要延迟进行采样,就是在时钟上升沿之前1个时间单位采样output(输入给DUT)-没有延时时间input向时钟上升沿之前多少时间单位进行采样,output向时钟上升沿之后多少个时间输出......
  • Linux学习之文件
    9.1文件查找echo指令可以查看变量PATH的值使用which命令在环境变量PATH设置的目录中查找符合条件的命令文件,可查看是否存在以及执行的位置locate命令可以让用户快速查找到所需要的文件或目录(有时可以查找到已经被删除的文件,但新创建的文件却无法被查找)是因为数据库文件没有被......
  • 刷题 位运算 位掩码
    2023.12.71903D1 解题思路题目一眼longlong,所以从大到小迭代每一个位(262到20)因为要与&起来最大,尽量把高位的0在不超过步数的情况下整成1,所以如果第i位是0,就把ai增加到下一位变成1只有能走到最后的i是答案的二进制第i位为1,直接加在ans上 代码 #include<iostream>#in......
  • 博客园
    1.页面<!--配置项详情见https://bndong.github.io/Cnblogs-Theme-SimpleMemory/v2/#/Docs/Customization/config--><scripttype="text/javascript">window.cnblogsConfig={info:{name:'',//「待填内容」用户名startDate:......
  • 监督学习和无监督学习
    监督学习(Supervisedlearning)监督学习是:从正确的答案中学习监督学习有两类:回归问题、分类问题1.回归问题房价预测问题2.分类问题肿瘤预测......
  • MySQL数据表的CURD
    一、数据表的CURD1.create数据创建一个员工表,新建employee表并向表中添加一些记录:创建数据表:createtableemployee(idint,namevarchar(20),sexint,birthdaydate,salarydouble,entry_datedate,resumetext);向数据表中插入数据:insertintoemployeevalues(......