微信公号:ilulaoshi / 个人网站:lulaoshi.info
本文将学习一下如何使用PyTorch创建一个前馈神经网络(或者叫做多层感知机,Multiple-Layer Perceptron,MLP),文中会使用PyTorch提供的自动求导功能,训练一个神经网络。
本文的数据集来自Kaggle竞赛:房价预测(https://www.kaggle.com/c/house-prices-advanced-regression-techniques/)。这份数据分为训练数据集和测试数据集。两个数据集都包括每栋房子的特征,如建造年份、地下室状况等特征值。这些特征中,有连续的数值型(Numerical)特征,有离散的分类(Categorical)特征。这些特征中,有些特征值是缺失值“na”。训练数据集包括了每栋房子的价格,也就是需要预测的目标值(Label)。我们应该用训练数据集训练一个模型,并对测试数据集进行预测,然后将结果提交到Kaggle。
数据探索和预处理
首先,我们下载并加载数据集:
train_data_path ='./dataset/train.csv'
train = pd.read_csv(train_data_path)
num_of_train_data = train.shape[0]
test_data_path ='./dataset/test.csv'
test = pd.read_csv(test_data_path)
训练数据集共1460个样本,81个维度,其中,Id是每个样本的唯一编号,SalePrice是房价,也是我们要拟合的目标值。其他维度(列)有数值类特征,也有非数值列,或者叫分类特征。
先查看训练数据集的维度:
train.shape
输出为:
(1460, 81)
或者通过train.describe()来查看整个数据集各个特征的一些统计情况。
接着,我们要把训练数据集和测试数据集合并。将训练数据集和测试数据集合并主要是为了统一特征处理的流程,或者说对训练数据集和测试数据集使用同样的方法,进行同样的特征工程处理。
# 房价,要拟合的目标值
target = train.SalePrice
# 输入特征,可以将SalePrice列扔掉
train.drop(['SalePrice'],axis = 1 , inplace = True)
# 将train和test合并到一起,一块进行特征工程,方便预测test的房价
combined = train.append(test)
combined.reset_index(inplace=True)
combined.drop