代码1. makedata实现: 生成模拟测试数据
# makedata.py
import numpy as np
import matplotlib.pyplot as plt
def MakeData(num_classes, num_features, num_samples, means):
data = []
labels = []
for i in range(num_classes):
class_data = np.random.multivariate_normal(means[i], np.eye(num_features), num_samples)
# np.random.multivariate_normal:
# 这是NumPy库中的一个函数,用于生成多元正态分布的随机样本。应该是多维的随机样本啊。
# 它接受三个参数:均值向量、协方差矩阵和样本数量。
# np.eye(num_features):在这里,它被用作协方差矩阵,表示每个特征之间是独立的,且每个特征的方差为1。
data.append(class_data)
labels.extend([i] * num_samples)
return np.vstack(data), np.array(labels)
# np.vstack(data)会将data列表中的所有数组按垂直方向堆叠起来,形成一个新的数组。
# 这意味着,如果data列表中有n个数组,每个数组的形状为(m, k),那么堆叠后的数组形状将为(n*m, k)。
def plot_data(data, labels):
plt.figure()
for i in np.unique(labels):
class_data = data[labels