波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的“Hello World”。与大家对房价的普遍认知基本相同,波士顿地区的房价受诸多因素影响。该数据集统计了13种可能影响房价的因素和该类型房屋的均价,期望构建一个基于13个因素进行房价预测的模型,如 图1 所示。
对于预测问题,可以根据预测输出的类型是连续的实数值,还是离散的标签,区分为回归任务和分类任务。因为房价是一个连续值,所以房价预测显然是一个回归任务。下面我们尝试用最简单的线性回归模型解决这个问题,并用神经网络来实现这个模型。
线性回归模型
在之前的文章中,我们详细地讲过线性回归的模型及计算公式,只不过,当时我们用的是模拟数据。文章详细请见《DJL-Java动手学深度学习之线性回归实现》
数据处理封装
为了数据加载方便,在这里,我把二维表格类数据进行了简单封装,可以方便地把一份数据通过比例切分成训练集和验证集,并通一做归一化处理《DJL-Java开发者动手学深度学习之归一化处理及源代码
》。详细代码如下:
ublic class DataPoint {
private NDArray data;
private NDArray trainingData;
private NDArray testData;
private NDArray lable;
private NDArray trainingLable;
private NDArray testLable;
private float ratio = 0.8F;
private MinMaxScaler dataScaler = new MinMaxScaler();
public DataPoint(NDArray data) {
this(data, 0.8F);
}
public DataPoint(NDArray data, float ration) {
this.ratio = ration;
this.data = data;
}
public DataPoint fit() {
System.out.println(data.getShape().get(0));
data = dataScaler.transform(data);//归一化
System.out.println(dataScaler.getMax());
System.out.println(dataScaler.getMin());
lable = data.get(":,-1:"); //最后一列
data = data.get(":,:-1")