使用正弦函数生成一个包含两个正弦周期的数据集(振幅可自行设定),从中均匀采样 20 个 数据样本,对每个样本的目标变量 yi 添加一个随机的扰动值(扰动值不要太大),形成数据 集 D1;
时间: 2024-10-19 15:12:52 浏览: 28
要生成这样一个数据集,首先我们需要确定振幅、频率、起点和周期。假设我们选择振幅 A=1,频率 f=π,起点 t0=0,周期 T=2π。我们可以按照以下步骤操作:
1. 定义时间范围:从 t0 到 t0 + (2 * T) = 4π,共取 20 个等间距的点作为数据样本。
2. 计算每个样本的 x 值(时间戳):x_i = i * (T / (n_samples - 1)),其中 i 从 0 到 n_samples-1。
3. 根据正弦函数公式 y = A * sin(2 * π * f * (t - t0)),计算每个 x 值对应的正弦值。
4. 对每个 y 值添加随机扰动:yi = sin(x_i) + ε,其中 ε 是一个随机值,通常服从均值为 0,标准差较小的分布,如小数范围内的正态分布。
以下是 Python 代码实现这一过程:
```python
import numpy as np
import random
# 参数设定
A = 1 # 振幅
f = np.pi # 频率
t0 = 0 # 起点
T = 2 * np.pi # 周期
n_samples = 20 # 数据点数量
# 时间步长
dt = T / (n_samples - 1)
# 创建时间轴
time_axis = np.arange(n_samples) * dt
# 正弦波
sine_values = A * np.sin(2 * f * (time_axis - t0))
# 添加随机扰动
random_noise = [random.gauss(0, 0.1) for _ in range(n_samples)] # 设置扰动标准差为 0.1
data_set_D1 = sine_values + random_noise
data_set_D1 = data_set_D1.tolist() # 将numpy数组转换为列表
```
现在,`data_set_D1`是一个包含20个数据样本的列表,每个样本都是一个正弦波加上一个小的随机扰动。
阅读全文