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

除了内置的数据集,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()

上面的示例生成了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()

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

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()

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()

通过调节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()

4. 总结

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

所有的生成器函数请参考文档:++API Reference --- scikit-learn 1.3.2 documentation++

文章转载自:++wang_yb++

原文链接:https://www.cnblogs.com/wang_yb/p/17884401.html

相关推荐
一 铭1 小时前
AI领域新趋势:从提示(Prompt)工程到上下文(Context)工程
人工智能·语言模型·大模型·llm·prompt
麻雀无能为力4 小时前
CAU数据挖掘实验 表分析数据插件
人工智能·数据挖掘·中国农业大学
时序之心4 小时前
时空数据挖掘五大革新方向详解篇!
人工智能·数据挖掘·论文·时间序列
.30-06Springfield5 小时前
人工智能概念之七:集成学习思想(Bagging、Boosting、Stacking)
人工智能·算法·机器学习·集成学习
说私域6 小时前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的超级文化符号构建路径研究
人工智能·小程序·开源
永洪科技6 小时前
永洪科技荣获商业智能品牌影响力奖,全力打造”AI+决策”引擎
大数据·人工智能·科技·数据分析·数据可视化·bi
shangyingying_16 小时前
关于小波降噪、小波增强、小波去雾的原理区分
人工智能·深度学习·计算机视觉
书玮嘎7 小时前
【WIP】【VLA&VLM——InternVL系列】
人工智能·深度学习
猫头虎7 小时前
猫头虎 AI工具分享:一个网页抓取、结构化数据提取、网页爬取、浏览器自动化操作工具:Hyperbrowser MCP
运维·人工智能·gpt·开源·自动化·文心一言·ai编程
要努力啊啊啊8 小时前
YOLOv2 正负样本分配机制详解
人工智能·深度学习·yolo·计算机视觉·目标跟踪