生成1000个双月型数据点,并画出二维散点图。 。用随机抽样或分层抽样对数据进行抽样,并查看其分布。 。修改抽样比例,观察不同比例下数据的分布
时间: 2024-09-18 15:15:36 浏览: 54
为了生成1000个双月型数据点并绘制二维散点图,我们可以使用Python的NumPy和Matplotlib库。首先,我们需要创建一个双月分布的数据集,这通常意味着数据会在两个峰之间交替。假设我们想要模拟的是正弦波形加上一些随机噪声。
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义双月函数
def double_moon_distribution(x):
return np.sin(x) + np.random.normal(0, 0.5, size=len(x))
# 生成1000个数据点
x = np.linspace(0, 2 * np.pi, 1000)
y = double_moon_distribution(x)
# 创建二维散点图
plt.scatter(x, y, s=2, alpha=0.7)
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('双月型数据散点图')
plt.show()
```
接下来,我们将演示如何通过随机抽样和分层抽样来观察数据分布:
1. 随机抽样:
```python
# 随机抽取样本
random_sample_size = int(0.8 * len(y)) # 按80%的比例抽样
sampled_y = y[np.random.choice(len(y), random_sample_size, replace=False)]
plt.scatter(x[:random_sample_size], sampled_y, label='Random Sample', color='blue')
# 添加抽样比例标签
plt.legend()
```
2. 分层抽样(这里假设我们按每组400个点分为两组):
```python
half_size = len(y) // 2
layer_1 = y[:half_size]
layer_2 = y[half_size:]
layer_1_sampled = layer_1[np.random.choice(half_size, half_size//2, replace=False)]
layer_2_sampled = layer_2[np.random.choice(half_size, half_size//2, replace=False)]
plt.scatter(x[:half_size], layer_1_sampled, label='Layer 1', color='red')
plt.scatter(x[half_size:], layer_2_sampled, label='Layer 2', color='green')
plt.legend()
```
对于不同的抽样比例,你可以改变`random_sample_size`值,然后重新运行以上代码来观察数据分布的变化。
阅读全文