make_moon函数介绍

前言

make_moons 是 scikit-learn 中用于生成合成数据集的函数,专门用于创建两个交错的半月形(或新月形)数据集。这种数据集常用于演示聚类算法(如 DBSCAN)或分类算法(如 SVM)在处理非线性可分数据时的性能。以下是详细介绍:

函数介绍

from sklearn.datasets import make_moons
X, y = make_moons(n_samples=100, 
                  noise=0.1, 
                  random_state=None, 
                  shuffle=True)

核心参数

n_samples (默认 100):生成的总样本数(两个半月形各占一半,如 n_samples=100 则每个半月形含 50 个点)。

noise (默认 0.1):添加到数据中的噪声标准差,控制数据点的分散程度。值越大,半月形边界越模糊(见下图示例)。

random_state:随机种子,保证生成的数据可复现。

shuffle (默认 True):是否打乱生成的数据顺序。

返回值

X:形状为 (n_samples, 2) 的数组,表示生成的二维数据点坐标。

y:形状为 (n_samples,) 的数组,表示数据点的类别标签(0 或 1)。

使用示例

  1. 生成数据并可视化
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons

# 生成数据
X, y = make_moons(n_samples=200, noise=0.1, random_state=42)

# 绘制半月形数据
plt.figure(figsize=(8, 6))
plt.scatter( X[y == 0, 0], X[y == 0, 1], c="blue", label="Class 0")
plt.scatter( X[y == 1, 0], X[y == 1, 1], c="red", label="Class 1")
plt.title("make_moons Dataset (noise=0.1)")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.legend()
plt.show()

在这里插入图片描述

  1. 不同噪声对比
noise_levels = [0.0, 0.1, 0.2]
plt.figure(figsize=(15, 5))

for i, noise in enumerate(noise_levels):
    X, y = make_moons(n_samples=200, noise=noise, random_state=42)
    plt.subplot(1, 3, i+1)
    plt.scatter(X[:, 0], X[:, 1], c=y, cmap="viridis")
    plt.title(f"noise={noise}")
    plt.axis("off")
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值