0
点赞
收藏
分享

微信扫一扫

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

玉字璧 2023-12-28 阅读 39

目录

1. make_classification:

2. make_regression:

3. make_blobs:

4. make_moons:

5.make_circles 

6. make_sparse_coded_signal:


1. make_classification:

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

from sklearn.datasets import make_classification

X, y = make_classification(n_samples=1000, n_features=20, n_classes=3)
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:

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

from sklearn.datasets import make_regression

X, y = make_regression(n_samples=100, n_features=2)
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:

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

from sklearn.datasets import make_blobs

X, y = make_blobs(n_samples=300, centers=4, n_features=2)
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:

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

from sklearn.datasets import make_moons

X2, y2 = make_moons(n_samples=1000, noise=0.1)
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 

from sklearn.datasets import make_circles

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

参数和上面一样

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:

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

from sklearn.datasets import make_sparse_coded_signal

X, y, w = make_sparse_coded_signal(n_samples=100, n_components=20)
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)

举报

相关推荐

0 条评论