作者:解琛
时间:2021 年 2 月 3 日
二、使用 BP 神经网络拟合多输入多输出曲线
列表中的数据是某地区20年公路运量数据,其中属性 人口数量
、机动车数量
和 公路面积
作为输入,属性 公路客运量
和 公路货运量
作为输出。
请用神经网络拟合此多输入多输出曲线。
年份 | 人口数量/万人 | 机动车数量/万辆 | 公路面积/万平米 | 公路客运量/万人 | 公路货运量/万吨 |
---|---|---|---|---|---|
1990 | 20.55 | 0.6 | 0.09 | 5126 | 1237 |
1991 | 22.44 | 0.75 | 0.11 | 6217 | 1379 |
1992 | 25.37 | 0.85 | 0.11 | 7730 | 1385 |
1993 | 27.13 | 0.9 | 0.14 | 9145 | 1399 |
1994 | 29.45 | 1.05 | 0.2 | 10460 | 1663 |
1995 | 30.1 | 1.35 | 0.23 | 11387 | 1714 |
1996 | 30.96 | 1.45 | 0.23 | 12353 | 1834 |
1997 | 34.06 | 1.6 | 0.32 | 15750 | 4322 |
1998 | 36.42 | 1.7 | 0.32 | 18304 | 8132 |
1999 | 38.09 | 1.85 | 0.34 | 19836 | 8936 |
2000 | 39.13 | 2.15 | 0.36 | 21024 | 11099 |
2001 | 39.99 | 2.2 | 0.36 | 19490 | 11203 |
2002 | 41.93 | 2.25 | 0.38 | 20433 | 10524 |
2003 | 44.59 | 2.35 | 0.49 | 22598 | 11115 |
2004 | 47.3 | 2.5 | 0.56 | 25107 | 13320 |
2005 | 52.89 | 2.6 | 0.59 | 33442 | 16762 |
2006 | 55.73 | 2.7 | 0.59 | 36836 | 18673 |
2007 | 56.76 | 2.85 | 0.67 | 40548 | 20724 |
2008 | 59.17 | 2.95 | 0.69 | 42927 | 20803 |
2009 | 60.63 | 3.1 | 0.79 | 43462 | 21804 |
预测结果如下。
实现的代码如下。
#!/usr/bin/env python
# coding=utf-8
# 作者:解琛;
# 功能:神经网络进行多输入多输出的拟合;
# 时间:2020 年 2 月 3 日;
# 备注:无。
import numpy as np
import matplotlib.pyplot as plt
def getSrcData():
'''获取原始数据;'''
# 初始化的输入数据;
# 人口数量;
population = [
20.55, 22.44, 25.37, 27.13, 29.45, 30.10, 30.96, 34.06, 36.42, 38.09,
39.13, 39.99, 41.93, 44.59, 47.30, 52.89, 55.73, 56.76, 59.17, 60.63
]
# 机动车数量;
vehicle = [
0.6, 0.75, 0.85, 0.9, 1.05, 1.35, 1.45, 1.6, 1.7, 1.85, 2.15, 2.2, 2.25,
2.35, 2.5, 2.6, 2.7, 2.85, 2.95, 3.1
]
# 公路面积;
roadarea = [
0.09, 0.11, 0.11, 0.14, 0.20, 0.23, 0.23, 0.32, 0.32, 0.34, 0.36, 0.36,
0.38, 0.49, 0.56, 0.59, 0.59, 0.67, 0.69, 0.79
]
# 初始化输出数据;
# 公路客运量;
passengertraffic = [
5126, 6217, 7730, 9145, 10460, 11387, 12353, 15750, 18304, 19836, 21024,
19490, 20433, 22598, 25107, 33442, 36836, 40548, 42927, 43462
]
# 公路货运量;
freighttraffic = [
1237,