Python采用高斯分布产生两二维数据点,将数据分成训练集,验证集。训练集用于对参数的训练,验证集用于对不同模型的选
时间: 2024-05-11 07:18:22 浏览: 84
择和超参数的调整。下面是一个示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 产生高斯分布数据点
def generate_data(num_samples, mean, cov):
return np.random.multivariate_normal(mean, cov, num_samples)
# 画出数据点
def plot_data(X, y):
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()
# 将数据分成训练集和验证集
def split_data(X, y, ratio):
num_train = int(ratio * X.shape[0])
indices = np.random.permutation(X.shape[0])
train_idx, val_idx = indices[:num_train], indices[num_train:]
X_train, y_train = X[train_idx], y[train_idx]
X_val, y_val = X[val_idx], y[val_idx]
return X_train, y_train, X_val, y_val
# 产生数据
num_samples = 1000
mean1 = [0, 0]
cov1 = [[1, 0], [0, 1]]
mean2 = [2, 2]
cov2 = [[1, 0], [0, 1]]
X1 = generate_data(num_samples//2, mean1, cov1)
X2 = generate_data(num_samples//2, mean2, cov2)
X = np.vstack((X1, X2))
y = np.zeros(num_samples)
y[num_samples//2:] = 1
# 画出数据
plot_data(X, y)
# 将数据分成训练集和验证集
X_train, y_train, X_val, y_val = split_data(X, y, 0.8)
```
在这个示例代码中,我们生成了两个二维高斯分布数据点,将它们合并成一个数据集,并且将它们画出来。然后我们将数据分成训练集和验证集,其中训练集占总数据集的80%。
阅读全文