scikit-learn文档中的数据生成器

目录

[1. make_classification:](#1. make_classification:)

[2. make_regression:](#2. make_regression:)

[3. make_blobs:](#3. make_blobs:)

[4. make_moons:](#4. make_moons:)

5.make_circles

[6. make_sparse_coded_signal:](#6. make_sparse_coded_signal:)


1. make_classification:

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

python 复制代码
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=1000, n_features=20, n_classes=3)

make_classification的主要参数包括:

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

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

2. make_regression:

生成一个随机的回归问题数据集,可以设置特征数量、噪声等级等。示例:

python 复制代码
from sklearn.datasets import make_regression

X, y = make_regression(n_samples=100, n_features=2)

make_regression的主要参数包括:

  • n_samples:生成的样本数。
  • n_features:每个样本的特征数。通常为一个较小的值,表示我们生成的是一维数据。
  • noise:噪音的大小。它为数据添加一些随机噪声,以使结果更接近现实情况。
python 复制代码
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()

3. make_blobs:

生成一组聚类问题的数据集,可以设置聚类数量、中心点数量、特征数量等。示例:

python 复制代码
from sklearn.datasets import make_blobs

X, y = make_blobs(n_samples=300, centers=4, n_features=2)

make_blobs的主要参数包括:

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

4. make_moons:

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

python 复制代码
from sklearn.datasets import make_moons

X2, y2 = make_moons(n_samples=1000, noise=0.1)

make_moons的主要参数包括:

  • n_samples:生成的样本数。
  • noise:在数据集中添加的噪声的标准差。这个参数决定了月牙的噪声程度。
  • random_state:随机数生成器的种子。这确保了每次运行代码时生成的数据集都是一样的。
python 复制代码
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越小,数据的分类越明显。

5.make_circles

python 复制代码
from sklearn.datasets import make_circles

X1, y1 = make_circles(n_samples=1000, noise=0.05)

参数和上面一样

python 复制代码
from sklearn.datasets import make_circles

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

X, Y = make_circles(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_circles(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_circles(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()

6. make_sparse_coded_signal:

生成一个稀疏编码信号数据集,用于稀疏信号恢复问题。示例:

python 复制代码
from sklearn.datasets import make_sparse_coded_signal

X, y, w = make_sparse_coded_signal(n_samples=100, n_components=20)

make_sparse_coded_signal的主要参数包括:

  • n_samples(int):生成的样本数量。默认值为 100。

  • n_components(int):生成的信号的原子数量(即特征数)。默认值为 10。

  • n_features(int):样本的特征数。默认值为 100。

  • n_nonzero_coefs(int):每个样本中非零系数的数量。默认值为 10。

  • random_state(int或RandomState实例,可选):用于随机数生成器的种子。默认值为 None。

  • normalize_dictionary(boolean):是否对生成的字典进行归一化处理。默认值为 True。

该函数返回三个值:

  • X :生成的稀疏信号数据集,包含了 n_samples 个样本和 n_features 个特征。

  • y:样本的目标值或标签。

  • dictionary:用于生成信号的字典或基向量。

python 复制代码
from sklearn.datasets import make_sparse_coded_signal
import matplotlib.pyplot as plt

X, y, dictionary = make_sparse_coded_signal(n_samples=100, n_components=20, n_features=100, n_nonzero_coefs=5, random_state=42)

plt.scatter(X[:, 0], X[:, 1], marker="o", c=X.sum(axis=1), cmap='viridis', s=25)  # 使用样本特征值的和来作为颜色的映射
plt.colorbar()  # 添加颜色条
plt.show()

参考【scikit-learn基础】--『数据加载』之样本生成器 - 知乎 (zhihu.com)

相关推荐
深耕AI11 小时前
【PyTorch训练】准确率计算(代码片段拆解)
人工智能·pytorch·python
eqwaak011 小时前
科技信息差(9.12)
开发语言·python·科技·量子计算
AI小白的Python之路11 小时前
机器学习-集成学习
人工智能·机器学习·集成学习
easy202011 小时前
机器学习的本质:从跑模型到真正解决问题
笔记·学习·机器学习
Blossom.11811 小时前
从“能写”到“能干活”:大模型工具调用(Function-Calling)的工程化落地指南
数据库·人工智能·python·深度学习·机器学习·计算机视觉·oracle
蒋星熠12 小时前
破壁者指南:内网穿透技术的深度解构与实战方法
网络·数据库·redis·python·websocket·网络协议·udp
shizidushu12 小时前
使用 Pyinstaller 打包 PPOCRLabel
python·pyinstaller
Q_Q196328847512 小时前
python+springboot+uniapp微信小程序题库系统 在线答题 题目分类 错题本管理 学习记录查询系统
spring boot·python·django·uni-app·node.js·php
Rhys..13 小时前
.gitignore文件的作用及用法
python·github
IT学长编程13 小时前
计算机毕业设计 基于深度学习的酒店评论文本情感分析研究 Python毕业设计项目 Hadoop毕业设计选题 机器学习选题【附源码+文档报告+安装调试】
hadoop·python·深度学习·机器学习·数据分析·毕业设计·酒店评论文本情感分析