一直一来,我们都是用 TensorFlow 框架搭建深度神经网络,但其实 python 也提供了相应的统计和学习模块,比如我们要拟合函数 y = x**2
首先生成数据集 x 和标准数据 y = x **2
import numpy as np
import pandas as pd
import random
# 生成 50 个随机值 x
random.seed(2018)
sample_size = 50
sample = pd.Series(random.sample(range(-10000,10000),sample_size))
x = sample/10000
# 生成标注数据 y = x **2
y = x**2
print x.head(10)
print y.head(10)
print x.describe() # 查看x 的数据分布
然后将数据加载进 dataSet ,格式是 [ ([x_input],[y_input]), ([x_input],[y_input]) .... ]
count = 0
dataSet = [([x.ix[count]],[y.ix[count]])]
count = 1
while count < sample_size:
print "Working on data item:",count
dataSet = dataSet + [([x.ix[count,0]],[y.ix[count]])]
count += 1
导入 neuralpy 包搭建神经网络并训练
import neuralpy
fit = neuralpy.Network(1,3,7,1) ''' 包含两个隐藏层,分别含有 3 个节点和 7 个节点,其中输入一个节点,输出一个节点 '''
# 设置学习周期
epochs = 100
# 学习率设置
learning_rate = 1
print "fitting model right now"
fit.train(dataSet,epochs,learning_rate)
接下来就可以评估表现的模型
count = 0
pred = []
while count < sample_size:
out = fit.forward(x[count]) # forward 就是前向传播
print "Obs:", count +1, \
"y = ",round(y[count],4), \
"prediction = ",round(pd.Series(out),4) # pd.Series 就是一维数据的意思
pred.append(out)
count += 1
结果如下: