前言

本文介绍利用matlab的人工神经网络App进行简单的训练和拟合

对于我们来说,这是一个黑箱子,具体原理无需知晓,只要知道需要输入什么,能够得到什么就行了。

  • 需要输入数据:input和target,这是两个矩阵
  • 能够得到:input和target之间的函数关系。

有了这个映射关系,就能用任意输入数据来预测输出数据。

例如通过地理位置、时间、城市教育水平等等数据,来预测房价

房价和(地理位置、时间、城市教育水平等)就是一个函数关系。

我们通过神经网络得到的就是这个函数关系

matlab的神经网络拟合 matlab神经网络拟合曲线_拟合

本质上来说,就是一个拟合方法。就像最小二乘法拟合出曲线一样。只不过这个拟合方法可以拟合出任意的函数关系,不必拘泥于曲线曲面直线之类的,也不必拘泥于是否有解析式。

操作流程

1 打开MATLAB App ->Neural Net Fitting

matlab的神经网络拟合 matlab神经网络拟合曲线_matlab的神经网络拟合_02

matlab的神经网络拟合 matlab神经网络拟合曲线_拟合_03


或输入nftool

点击Next

2 导入数据

matlab的神经网络拟合 matlab神经网络拟合曲线_拟合_04

数据有二:
1)输入数据
2)目标输出数据

我们导入例子的数据

matlab的神经网络拟合 matlab神经网络拟合曲线_拟合_05

选择预测房价那个数据

matlab的神经网络拟合 matlab神经网络拟合曲线_matlab的神经网络拟合_06


点导入之后

matlab的神经网络拟合 matlab神经网络拟合曲线_拟合_07


输入数据是一个13*506的矩阵

每一列有十三行,是一个样本点。一共506行,即506个样本点。

输出数据则是1*506的矩阵
一共506列,每一列都代表输出值

3 训练(拟合过程)

matlab的神经网络拟合 matlab神经网络拟合曲线_拟合_08


matlab的神经网络拟合 matlab神经网络拟合曲线_App_09

这里面的参数默认即可

traning表示用于训练的数据的比例
validation表示用于验证的数据的比例
test表示用于测试的数据的比例

还有个是隐藏层的神经网络数 默认为10

这个数越大,拟合精度会越大。但是会出现过拟合问题。也就是说太过精确让该函数关系失去了泛用性,在问题A上可以用,但是在和问题A相似的问题B上就用不了了。

选择训练算法

然后点击训练

matlab的神经网络拟合 matlab神经网络拟合曲线_App_10

3 得到结果

方法1

matlab的神经网络拟合 matlab神经网络拟合曲线_matlab的神经网络拟合_11

点第一个,把训练得到的函数关系保存下来

得到如下函数

matlab的神经网络拟合 matlab神经网络拟合曲线_matlab的神经网络拟合_12

这个函数就是我们训练得到的函数关系了

用法也很简单
随便打开个脚本,就像用普通的函数一样用就行了
输入只需要一个,就是13列的输入数据
输出也只有一个,就是得到房价
我们随便在原始数据上改动一两个数字得到:

matlab的神经网络拟合 matlab神经网络拟合曲线_数据_13

方法2

还有一种方法,就是把得到的函数关系保存成一个变量

这里叫做net1

点击 save Results

matlab的神经网络拟合 matlab神经网络拟合曲线_App_14

工作区出现一个叫做net1的变量,这个就是函数关系

matlab的神经网络拟合 matlab神经网络拟合曲线_数据_15

怎么用呢?

用sim(net1,输入数据)即可

matlab的神经网络拟合 matlab神经网络拟合曲线_App_16

评价结果(拟合的R值等)

在训练完成之后会弹出的

matlab的神经网络拟合 matlab神经网络拟合曲线_matlab的神经网络拟合_17


这里面Regression

就是显示R值的

matlab的神经网络拟合 matlab神经网络拟合曲线_数据_18


Error Histogram就是显示误差分布的

matlab的神经网络拟合 matlab神经网络拟合曲线_拟合_19

结束