在机器学习领域,分类任务是最常见的应用场景之一。无论是图像识别、垃圾邮件过滤,还是疾病诊断,都离不开分类算法的支持。本文将通过一个简单的二维数据分类实例,详细介绍如何使用神经网络完成分类任务,帮助你理解神经网络的工作原理和实现过程。
一、数据生成:构建我们的数据集
为了方便演示,我们首先使用代码生成一个简单的二维数据集。
n_samples = 100
data = torch.randn(n_samples, 2) # 生成 100 个二维数据点
labels = (data[:, 0]**2 +
data[:, 1]**2 < 1).float().unsqueeze(1) # 点在圆内为1,圆外为0
上述代码生成了 100 个符合标准正态分布的二维数据点,并且根据这些点是否在单位圆内,为每个点分配了一个标签。如果点在单位圆内,标签为 1;如果点在单位圆外,标签为 0。这就形成了一个简单的二分类数据集。
为了更直观地观察数据分布,我们使用以下代码进行可视化:
plt.scatter(data[:, 0], data[:, 1], c=labels.squeeze(), cmap='coolwarm')
plt.title("Generated Data")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.show()
运行代码后,我们可以看到数据点以不同颜色区分,清晰地展示出在单位圆内和圆外的分布情况。
图1 生成的数据
二、模型构建:搭建神经网络架构
接下来,我们需要定义一个神经网络模型来完成分类任务。这里我们构建了一个简单的前馈神经网络。
class SimpleNN(nn